1.1GPIO口输入输出原理
GPIO(General Purpose Input Output)通用输入输出口 可配置为8种输入输出模式。输出模式 下可控制端口输出高低电平,用以LED、控制蜂鸣器、模拟通信协议输出时序等,输入模式 下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等。
STM32中,所有的GPIO都挂载在APB2外设总线上。命名方式采用GPIOA、GPIOB、GPIOC…的方式来命名。每个GPIO模块内,主要包括寄存器、驱动器等
I/O端口位的基本结构
输入部分的上、下拉电阻:相应的两个开关可以通过程序进行配置,分别有上拉输入模式(上开关导通&下开关断开)、下拉输入模式(下开关导通&上开关断开)、浮空输入模式(两个开关都断开)。上下拉电阻的作用就是给引脚输入提供一个默认的输入电平,进而避免引脚悬空导致的不确定。都属于弱上拉、弱下拉。
输入部分的触发器:这里是用肖特基管构成的施密特触发器。作用是对输入电压进行整形,可以消除电压波纹、使电压的上升沿/下降沿更加陡峭。也就是说,stm32的GPIO端口会自动对输入的数字电压进行整形。
“模拟输入”、“复用功能输入”:都是连接到片上外设的一些端口,前者用于ADC等需要模拟输入的外设,后者用于串口输入引脚等需要数字量的外设。
输出数据:可以由输出数据寄存器(普通的IO口输出)、片上外设来指定,数据选择器控制数据来源。
位设置/清除寄存器:单独操作输出数据的某一位,而不影响其他位。
其中的MOS管:MOS管相当于一种开关,输出信号来控制这两个MOS管的开启状态,进而输出信号。可以选择推挽、开漏、关闭三种输出方式。
推挽输出模式:两个MOS管均有效,stm32对IO口有绝对的控制权,也称为强推输出模式。
开漏输出模式:P-MOS无效。只有低电平有驱动能力,高电平输出高阻。
关闭模式:两个MOS管均无效,端口电平由外部信号控制。
名称 | 性质 | 特征 |
上拉输入 | 数字 | 空闲状态下,增加高电平的驱动能力; |
下拉输入 | 数字 | 空闲状态下,增加低电平的驱动能力; |
模拟输入 | 模拟 | 检测模拟电压,数据传给ADC做转换; |
浮空输入 | 数字 | 空闲状态下,不具备高低电平驱动能力,直接输入的电压进行转换; |
推挽输出 | 数字 | 直接把逻辑值输出成高低电平; |
开漏输出 | 数字 | 只能输出低电平,输出为1时是高阻态(未知状态,电路上电压由电路来决定);经常应用在总线,需要增加上拉电阻配合使用;具有读取的功能; |
复用推挽输出 | 数字 | 由片上外设控制 |
复用开漏输出 | 数字 | 由片上外设控制 |