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寄存器

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

相关推荐
BreezeJuvenile19 小时前
外设模块学习(5)——DS18B20温度传感器(STM32)
stm32·嵌入式硬件·学习·温度传感器·ds18b20
hollq1 天前
STM32F103RCT6+STM32CubeMX+keil5(MDK-ARM)+Flymcu实现串口重定向
arm开发·stm32·嵌入式硬件
小鱼儿电子1 天前
17-基于STM32的宠物饲养系统设计与实现
stm32·嵌入式硬件·物联网·宠物·宠物饲养系统
小莞尔1 天前
【51单片机】【protues仿真】基于51单片机四层电梯系统
单片机·嵌入式硬件
CFZPL1 天前
使用江科大串口发送函数发送freertos的vTaskList出现跑飞
单片机
F133168929571 天前
WD5030A,24V降5V,15A 大电流,应用于手机、平板、笔记本充电器
stm32·单片机·嵌入式硬件·51单片机·硬件工程·pcb工艺
易享电子1 天前
基于单片机电器断路器保护器系统Proteus仿真(含全部资料)
单片机·嵌入式硬件·fpga开发·51单片机·proteus
爱倒腾的老唐1 天前
01、如何学习单片机
单片机·嵌入式硬件·学习
点灯小铭1 天前
基于单片机的夹具压力控制系统设计
单片机·嵌入式硬件·mongodb·毕业设计·课程设计
雾削木1 天前
stm32解锁芯片
javascript·stm32·单片机·嵌入式硬件·gitee