通用输入输出(General Purpse Input utput)的简称就是芯片引脚可以通过他们输出高电平或者低电平,也可以通过他们读取引脚的电平状态
以STM32F407ZGT6芯片为例(后面都是以这种芯片为例),这種芯片共有112个I/口共7组,每组16个引脚(0~15)可以通过配置寄存器来确定某个引脚用于输入、输出还是其他特殊功能。想要什么功能使用の前先配置,其中默认为输入浮空模式
在一个芯片内部,CPU通过地址来设别片内外设分配给每个硬件外设的地址就是外设的寄存器地址。CPU通过寄存器操作片内外设GPI口对应的地址如下图:
变量和寄存器的不同点:变量的意义由程序员决定,而寄存器每一位代表的意义由设计芯片的人决定
(1)每组GPI口都有16个端口,端口编号为0~15
(2)在输出状态下可设置成推挽输出或开漏输出,鉯及根据需要决定是否开启上拉/下拉功能
(3)每个GPI端口都可以设置成通用模式和复用模式。
(4)每个GPI端口可以配置不同的输出速度
(5)在输入状态下,可设置为浮空输入、上拉/下拉输入以及模拟输入
(6)可以利用置位和复位寄存器(GPIx_BSRR)对输出数据寄存器(GPIx_DR)进行按位写操作。
(7)可以利用端口配置寄存器(GPIx_LCKR)对GPI端口进行冻结配置
(8)通过复用功能输入/输出选择寄存器可以設置GPI端口的复用功能。
3.GPI每个端口都可以由软件配置成如下几种模式:
需要配置什么功能要结合实际外部电路图来分析
5.GPI端口位配置表(查数据手册所得)
对I端口配置为输入时,TTL施密特触发器被打开输出缓冲器被关闭(也就是
配置I口为普通功能输出时输出缓冲器被打开(
I配置為复用功能时可将输出缓冲器配置为开漏或者推挽,输出缓冲器来自外设的信号驱动施密特触发器也被打开(
输出缓冲器被禁止施密特触发器输入停用, I/ 引脚的每个模拟输入嘚功耗变为零施密特触发器的输出被强制处理为恒定值 (0)。弱上拉和下拉电阻被关闭对输入数据寄存器的读访问值为“ 0”。
如果GPI要配置成推挽式输出功能速度为50M,则对应的位配置为:
如果GPI要配置成输入功能,则对应的位配置为:
如果GPI要配置成复鼡功能则对应的位配置为:
(1) RCC AHB1外设时钟使能寄存器(RCC_AHB1ENR):配置I功能模式时,先使能对应时钟相关GPI位置1使能
如果使能GPIB组时钟,则寄存器配置为:
(2)GPI 端口模式寄存器 :配置I工作模式(2位控制一个I管脚):
(6)GPI 端口输叺数据寄存器 (GPIx_IDR):
注意:
(9)GPI 端口配置锁定寄存器 (GPIx_LCKR)(x = A~G):起到锁定某个管脚的模式、输出类型、输出速度、上下拉的作鼡当模块复位后锁定会被取消
对寄存器的计算,可画出来理解:
12.GPI口初始化步骤:(以LED1 、4灯为例):由电路图分析可知LED4由PC0管脚控制,并且昰不用上下拉的推挽输出模式
/* 设置上下拉模式 */