STM32共有8种类型, 4种输入模式,4种输出模式
一、输入模式
(1)浮空输入
I/O的电平状态是不确定的,完全由外部输入决定,所以在要读取外部信号时通常配置IO口为浮空输入模式。
(2)上拉/上拉输入模式
下拉: IO口悬空时,输入电平保持在低电平;IO口输入为高电平时,输入端为高电平
下拉: IO口悬空时,输入电平保持在高电平;IO口输入为低电平时,输入端为低电平
WK_UP为PA0引脚,上拉到3.3V,设置为下拉输入模式,按键按下检测到高电平
KEY2为PA13引脚,下拉到GND, 设置为上拉模式,按键按下检测到低电平
(3)模拟输入模式
I/O端口的模拟信号(电压信号,而非电平信号)直接模拟输入到片上外设模块,比如ADC模块
二、输出模式
(1)推挽输出
在推挽输出模式下,P-MOS管和N-MOS管同时工作,通过对两个MOS管的导通控制,实现控制输出高低电平。大多数IO口都使用推挽输出或者复用推挽输出。
高电平时,P-MOS管导通,N-MOS管截止,输出高电平
低电平时,此时P-MOS管截止,N-MOS管导通,输出低电平 0.
(2)开漏输出
在开漏输出模式下,P-MOS管是不工作的, 只有N-MOS 管工作。即始终输出低电平。
VDD为外部接入的上拉
高电平时,P-MOS管截止,N-MOS管也截止,输出的高电平是外部上拉电源的电平。
低电平时,P-MOS管截止,N-MOS管导通,输出低电平。
开漏输出模式下,必须要有外部上拉电阻,如果没有外部上拉电源,输出的信号只有 低电平,没有高电平。
对比:
1) 推挽输出模式可以不需要外部辅助电路就可以直接输出高低电平,所以可以用于直接控制数字电路。
2) 漏输出模式下,通过外部 上来电源实现 高低电平,这个外部电源不需要跟CPU的电平完全一致,比如STM32的CPU电源是3.3V,开漏模式下,完全可以使用上拉5V,这样的话,就可以实现 5V的电平 了,对于一些外围器件,如果外围器件的电平与CPU不同,只需要上拉对应的电平电源就可以了。(开漏是用来连接不同电平的器件,匹配电平用的)
3) 推挽输出就是CPU 能够 直接 推动输出 电平。开漏输出就是 断开 漏极,需要外接辅助上拉电阻。
(3)复用开漏/推挽输出
推挽复用输出模式,与推挽输出模式很是类似。只是输出的高低电平的来源,不是让CPU直接写输出数据寄存器,取而代之利用片上外设模块的复用功能输出来决定的。
开漏复用输出模式,与开漏输出模式很是类似。只是输出的高低电平的来源,不是让CPU直接写输出数据寄存器,取而代之利用片上外设模块的复用功能输出来决定的
软件IIC使用上拉,复用推挽输出,硬件IIC使用复用开漏输出
STM32F103 GPIO外设模式配置:
GPIO configurations for device peripherals
文章评论(0条评论)
登录后参与讨论