×
单片机 > 单片机程序设计 > 详情

STM32 GPIO的8种工作模式及相关配置寄存器

发布时间:2020-06-03 发布时间:
|

GPIO八种工作模式

四种输入: 

GPIO_Mode_IPU(上拉输入) 
GPIO_Mode_IPD(下拉输入) 
原理: 经过上拉开关和下拉开关的连接,再经过触发器转化为0,1的数字信号,存储到数据寄存器中,然后我们就可以通过配置寄存器CRL,CRH控制这两个开关。 
用法: 若GPIO引脚配置为上拉输入模式,在默认状态下(GPIO引脚无输入),取得的GPIO引脚数据为1,既高电平. 而下拉输入模式则是相反的,在默认状态下其引脚数据为0,低电平.

GPIO_Mode_IN_FLOATING(浮空输入) 
原理: 不接上拉和下拉开关,直接经由触发器输入. 
用法: 若配置成这个模式可以用电表测量其引脚电压是1点几伏(不确定的值).由于输入阻抗较大,一般把这种模式用于标准的通讯协议例如:I2C,USART的接收端.

GPIO_Mode_AIN(模拟输入) 
原理: 直接关闭触发器,不接上拉和下拉开关,由另一路开关传至片上外设模块. 
用法: 例如传送至ADC模块时,就由ADC采集电压信号.(使用ADC外设的时候,必须是设置为模拟输入模式).

四种输出: 
GPIO_Mode_Out_PP(普通推挽输出) 
原理: 经过一个由P_MOS和N_MOS管组成的单元电路.输出高电平(3.3V)时,P_MOS导通,低电平(0V)时,N_MOS导通(两个管子轮流导通,一个进电流,一个拉电流.这样它的负载能力和开关速度都比普通方式有大的提高) 
用法: 一般都是应用在输出电平为0和3.3V的场合.

GPIO_Mode_Out_OD(普通开漏输出) 
原理: 
在输出0时,既高电平,则N_MOS管导通,使输出接地.在输出1时,则不输出高电平也不输出低电平(无法输出高电平,本身为高阻态).所以在使用的时候,必须在外部接上一个上拉电阻并且开漏输出模式具有”线与”的特性,既有很多开漏模式的引脚接到一起时,只有在所有引脚都处于高阻态的时候,才会输出高电平.(电压是外部上拉电阻所接电源的电压).只要其中一个引脚是低电平,那么整个线路都等于短路接地(低电平),电压是0V.(只要是开漏输出模式,都必须接上拉电阻) 
用法: 
一般应用在电平不匹配的场合,如需要输出5V的高电平,就需要在外部接上一个上拉电阻,电源为5V.这时在输出高组态的时候,就会由上拉电阻和电源向外输出5V.

GPIO_Mode_AF_PP(复用推挽输出) 
GPIO_Mode_AF_OD(复用开漏输出) 
原理: 同上. 
用法: 对于复用模式,一般都是由GPIO的复用功能来选择的(比如一个IO引脚可以做一般输入输出,同时还是串口输出脚,这就是复用) 例如:GPIO的引脚用作串口的输出,就可以使用复用推挽输出模式了.如果是用在I2C,SMBUS这些需要线与功能的,就使用复用开漏输出


GPIO相关配置寄存器

每组GPIO端口的寄存器包括:

  • 一个端口模式寄存器(GPIOx_MODER)

  • 一个端口输出类型寄存器(GPIOx_OTYPER)

  • 一个端口输出速度寄存器(GPIOx_OSPEEDR)

  • 一个端口上拉下拉寄存器(GPIOx_PUPDR)

  • 一个端口输入数据寄存器(GPIOx_IDR)

  • 一个端口输出数据寄存器(GPIOx_ODR)

  • 一个端口置位/复位寄存器(GPIOx_BSRR)

  • 一个端口配置锁存寄存器(GPIOx_LCKR)

  • 两个复位功能寄存器(低位GPIOx_AFRL & GPIOx_AFRH)

如果配置一个IO口需要2个位,那么刚好32位寄存器配置一组IO口16个IO口
如果配置一个IO口只需要1个位,一般高16位保留
BSRR寄存器32位分为低16位BSRRL和高16位BSRRH,BSRRL配置一组IO口的16个IO口的置位状态(1),BSRRH配置复位状态(0)。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32中断向量表的位置.重定向