STM32 GPIO的几种工作模式

介绍STM32 GPIO的几种工作模式

1、输出模式

STM32的引脚输出有两种方式:

1、推挽输出

2、开漏输出

1.1 推挽输出

当引脚设置为推挽输出时,P-MOS和N-MOS共同配合工作。

当使用HAL库

c 复制代码
//该函数的作用就是将P-MOS导通,N-MOS关闭
HAL_GPIO_WritePin(XXX, XXX, 1);
c 复制代码
//该函数的作用就是将P-MOS关闭,N-MOS导通
HAL_GPIO_WritePin(XXX, XXX, 0);

如上图,当led1的一端接地,另一端接stm32的一个引脚,此时我们可以用推挽输出,输出高低电平来控制小灯的亮灭。

1.2、开漏输出

开漏输出下,只有N-MOS工作,P-MOS一直处于断开状态。

c 复制代码
//N-MOS断开
HAL_GPIO_WritePin(XXX, XXX, 1);

整个IO口内部处于高阻态,或者说断路,不对外输出电平。

c 复制代码
//N-MOS导通
HAL_GPIO_WritePin(XXX, XXX, 0);

IO口对外输出低电平。

如上图,当led2的一端接5v,另一端接在mcu的引脚上。我们可以使用开漏输出控制小灯的亮灭。当write 1时,断路,小灯灭。write 0 时小灯左侧接地右侧接5v,亮。

1.3、输出模式总结

1、推挽输出小灯是由来自芯片的电压所驱动。

2、开漏输出没有驱动能力,必须依靠外部的电压源来进行驱动小灯亮灭。

推挽输出 开漏输出
高电平 P-MOS激活、N-MOS断开,3.3V P-MOS断开、N-MOS断开
低电平 P-MOS断开、N-MOS激活 P-MOS断开、N-MOS激活
优点 可直接输出3.3v 配合外部电路,更加灵活
缺点 只能输出3.3v 高电平实际是高阻态,无法输出电流

2、输入模式

框图如下:

1、外部电流经引脚向内流入首先经过一对上下拉电阻。继续前进会经过肖特基触发器,或者说斯密特触发器。其作用是稳定电平。

2、斯密特触发器:会有高参考电压和低参考电压。当高于高参考电压会被单片机认为是高电平1,低于低参考电压会被单片机认为是低电平0。如果在两者中间,则维持上次电平不变。

3、继续前进,该值就会被写入输入数据寄存器。当调用HAL库HAL_GPIO_ReadPin函数时就会读走该值。

2.1、上拉输入

上拉电阻使能。

2.2、下拉输入

下拉电阻使能。

2.3、浮空输入

上下拉电阻都关闭。

2.4、模拟输入

该模式下是为了读取输入电压的具体数值(ADC), 所以上面框图中在斯密特触发器之前就走向了另一个分支。

3、测试


如上原理图,LED的一脚VCC 3.3V,另一脚接在stm32的PC13上。按键K1接在stm32的PB14上,外部上拉。我们实现按键按下小灯亮,再按下小灯熄灭。

3.1、STM32CubeIDE配置

新建STM32工程,我这里使用STLINK,配置SW接口用于烧录程序。

ctrl + s 快捷键保存生成代码。

3.2、coding

如上图,调用HAL_GPIO_ReadPin会去读取按键脚对应的IDR寄存器获取引脚电平状态,来判断按键是否按下。调用HAL_GPIO_TogglePin对BSRR寄存器操作,实现引脚电平翻转。即可实现按下小灯熄灭活点亮。

4、STM32 GPIO 相关寄存器介绍

4.1、GPIO->ODR寄存器

可读可写。低16位,对应位写1输出高电平,写0输出低电平。高16位保留。

4.2、GPIO->BSRR寄存器

只写寄存器,32位,既能控制管教为低电平,也能控制管教为高电平。

43、GPIO->BRR寄存器

端口位清除寄存器,只写,只能改变管脚状态为低电平。

相关推荐
国科安芯9 小时前
航天器多路并联大功率电源系统设计与ASP4644均流特性分析
单片机·嵌入式硬件·fpga开发·安全性测试
茯苓gao11 小时前
嵌入式开发笔记:CANopen相关移位运算与通信协议术语详解
网络·嵌入式硬件·学习·信息与通信
梁朝辉14 小时前
STM32H750VBT6中ADCINP与INN什么区别
stm32·单片机·嵌入式硬件
省四收割者15 小时前
一文详解信号完整性(1)
python·嵌入式硬件·数学建模·信息与通信·信号处理·智能硬件
崇山峻岭之间16 小时前
单片机无感FOC驱动之ADC
单片机·嵌入式硬件
Ligocious16 小时前
1.点亮一颗小小的LED
单片机·嵌入式硬件
KaifuZeng20 小时前
通信与接口协议面试八、CAN通信
单片机·嵌入式硬件·面试·通信与接口协议
智源单片机设计21 小时前
基于单片机的直流电机双闭环调速系统设计
单片机·嵌入式硬件
kebidaixu21 小时前
两轮车换电 BMS 的模拟前端中颖 SH367306 AFE 芯片详解
stm32
kebidaixu1 天前
两轮车换电 BMS 的模拟前端中颖 SH367306 AFE 芯片调试实录:四个关键问题与解决方案
stm32