结构图和配置表
输入模式
输入浮空/上拉/下拉
输入浮空
将端口位配置为浮空输入模式时,CNFx [1:0]=01b,MODEx [1:0]=00b
。此时,输入缓冲器被激活,施密特触发输入被激活,弱上拉和下拉电阻被禁止,出现在 I/O 脚上的数据在每个 APB2
时钟被采样到输入数据寄存器,对输入数据寄存器的读访问可得到 I/O 状态。
浮空输入的作用:适用于连接外部信号源,其电平完全由外部电路决定。不提供额外的驱动电流,对外部电路影响小,能真实反映外部信号状态,但抗干扰能力较弱,易受外部干扰影响导致误判。
输入上拉/下拉
上拉/下拉输入模式:当端口位配置为上拉 / 下拉输入模式时,CNFx [1:0]=10b,MODEx [1:0]=00b
。在这种模式下,输入缓冲器被激活,施密特触发输入被激活,弱上拉和下拉电阻根据配置连接,出现在 I/O 脚上的数据在每个 APB2
时钟被采样到输入数据寄存器,对输入数据寄存器的读访问可得到 I/O 状态。
上拉/下拉输入的作用:通过内部上拉或下拉电阻将输入引脚默认设置为高电平或低电平。在连接外部设备时,即使外部设备未驱动引脚或处于高阻态,也能确保引脚有确定的电平状态,增强了输入信号的稳定性,减少误判。常用于连接按键、传感器等输入设备,在按键未按下时,上拉电阻可使引脚保持高电平,按下时变为低电平,方便微控制器检测按键状态。
模拟输入
模拟输入模式:配置为模拟输入模式时,CNFx [1:0]=00b,MODEx [1:0]=00b
。此时,输出缓冲器被禁止,施密特触发输入被禁止,弱上拉和下拉电阻被禁止,读取输入数据寄存器时数值为’0’。
模拟输入的作用:专门用于连接模拟传感器,如温度传感器、压力传感器等,将连续变化的模拟信号转换为数字信号供微控制器处理。在该模式下,微控制器可精确读取模拟信号的电压值,实现对模拟量的精确测量和监控,适用于需要采集和处理模拟信号的应用场景。
输出模式
推挽式输出
在通用推挽输出模式下,CNFx [1:0]=00b,MODEx [1:0]=01b/10b/11b
。输出缓冲器被激活,施密特触发输入被激活,弱上拉和下拉电阻被禁止。在推挽模式时,输出寄存器上的’0’激活 N-MOS,’1’将激活 P-MOS。出现在 I/O 脚上的数据在每个 APB2
时钟被采样到输入数据寄存器,在推挽式模式时,对输出数据寄存器的读访问得到最后一次写的值。
推挽模式作用:具有较强的驱动能力,可直接驱动外部负载,如 LED 灯、小型继电器等。输出寄存器的电平变化能快速、有效地控制外部设备的工作状态,实现对外部设备的精确控制。
开漏输出
通用开漏输出模式的配置为 CNFx [1:0]=01b,MODEx [1:0]=01b/10b/11b
。其特点与通用推挽输出模式类似,但在开漏模式下,输出寄存器上的’0’激活 N-MOS,’1’将端口置于高阻状态,对输入数据寄存器的读访问可得到 I/O 状态。
开漏输出作用:适用于需要实现线与功能或电平转换的应用。在多设备连接的总线系统中,如 I2C
总线,多个设备的开漏输出引脚连接在一起,通过外部上拉电阻实现线与逻辑,确保在多个设备同时输出时不会发生冲突。此外,还可用于电平转换,将微控制器的输出电平转换为其他电平标准,以适应不同外部设备的要求。
推挽式复用/开漏复用
复用推挽模式和复用开漏模式工作方式和相关配置类似,只是由片上外设来控制输出了。
结束
有什么不足和错误之处还希望各位大佬批评指正。
参考资料正点原子STM32F1
中文参考手册。