STM学习- GPIO工作原理
主要内容:
- GPIO工作方式 输出输入
- GPIO对应操作寄存器配置说明
- GPIO引脚说明
GPIO工作方式- 输入工作模式:
- GPIO_Mode_IN_FLOATING 浮空输入(可以做KEY识别)
- GPIO_Mode_IPU 上拉输入:IO内部上拉电阻输入
- GPIO_Mode_IPD 下拉输入: IO内部下拉电阻输入
- GPIO_Mode_AIN 模拟输入: 应用ADC模拟输入,或者低功耗下省电
- GPIO_Mode_IN_FLOATING 浮空输入(可以做KEY识别)
浮空输入一般多用于外部按键输入,结合图上的输入部分电路,我理解为浮空输入状态下,IO的电平状 态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的
- GPIO_Mode_IPU 上拉输入:IO内部上拉电阻输入
- GPIO_Mode_IPD 下拉输入: IO内部下拉电阻输入
- GPIO_Mode_AIN 模拟输入: 应用ADC模拟输入,或者低功耗下省电
GPIO工作方式- 输出工作模式:
- GGPIO_Mode_Out_OD 开漏输出:
- GPIO_Mode_AF_OD 复用开漏输出
- GPIO_Mode_Out_PP 推挽输出
- GPIO_Mode_AF_PP 复用推挽输出
- GGPIO_Mode_Out_OD 开漏输出:
开漏,就等于输出口接了个NPN三极管,并且只接了e,b. c极 是开路的,你可以接一个电阻到3.3V,也可以接一个电阻到5V,这样,在输出1的时候,就可以是5V电压,也可以是3.3V电压了.但是不接电阻上拉的时候,这个输出高就不能实现了. 推挽,就是有推有拉,任何时候IO口的电平都是确定的,不需要外接上拉或者下拉电阻.
- GPIO_Mode_AF_OD 复用开漏输出
复用功能的开漏输出_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS)
- GPIO_Mode_Out_PP 推挽输出
推挽输出_OUT_PP ——IO输出0-接GND, IO输出1 -接VCC,读输入值是未知的
- GPIO_Mode_AF_PP 复用推挽输出
复用功能的开漏输出_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS)
备注:
- 推挽输出:
可以输出强高低电平,连接数字器件
- 开漏输出:
只可以输出强低电平,高电平得靠外部电阻拉高。输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内)***
- 备注
GPIO寄存器配置说明:
每组GPIO端口的寄存器组成:
- 两个32位配置寄存器(GPIOx_CRL ,GPIOx_CRH) ,
-GPIOx_CRL :端口配置低寄存器
-GPIOx_CRH:端口配置高寄存器
- 两个32位数据寄存器 (GPIOx_IDR和GPIOx_ODR),
-GPIOx_IDR:端口输入寄存器
-GPIOx_ODR:端口输出寄存器
- 一个32位置位/ 复位寄存器(GPIOx_BSRR),
-GPIOx_BSRR:端口位设置/清除寄存器
GPIO_SetBits(GPIOE,GPIO_Pin_5):GPIO->BSRR=GPIOE_Pin_5;
//GPIOE_Pin_5 输出低电平;
- 一个16位复位寄存器(GPIOx_BRR),
– GPIOx_BRR :端口位清除寄存器
GPIO_SetBitc(GPIOB,GPIO_Pin_5):GPIO->BRR=GPIOB_Pin_5;
//GPIOB_Pin_5 输出高电平;
- 一个32位锁定寄存器(GPIOx_LCKR)。
– GPIOx_LCKR:端口配置锁存寄存器
注释:FT管脚支持5V电平输入 (未标注FT管脚正常电压输入0~3.3V电平)