掌握通用输入输出(GPIO)配置,设计一个基本的硬件用户界面
引言:微控制器广泛应用于嵌入式系统中,用于控制输入和输出设备。GPIO引脚使微控制器能够与所使用的外部硬件进行通信,例如开关按钮、LED灯和显示屏(LCD)。
在这项活动中,我将演示这些组件如何协同工作。按钮被配置为数字输入,LED则作为数字输出。同时,还集成了一个LCD模块来显示按压按钮的状态。然而,由于我仍在努力寻找合适的LCD库并实现其功能,目前无法完全集成LCD模块,因此仍在尝试解决这一问题。不过,该系统展示了实时事件驱动的行为:当按下按钮时,在我尝试更新LCD屏幕时,对应的LED会亮起。由于LED采用低电平激活方式,这意味着当GPIO引脚复位时,LED会点亮;而当你按下按钮时,GPIO引脚设置为高电平,LED则熄灭。
1. 硬件设置
STM32 RT-Spark开发板连接到一块面包板,面包板上包含三个LED(蓝色、绿色和红色)以及五个按钮开关(UP、DOWN、LEFT、RIGHT和CENTER)。每个LED通过限流电阻连接到一个GPIO输出引脚,而每个按钮则连接到一个GPIO输入引脚。
GPIO引脚组件
•PA0 蓝色 LED
•PA2 绿色LED
•PA3 红色LED
•PG0 上升按钮
•PG1 下移按钮
•PG2 中心按钮
•PG5 左键按钮
•PG6 右键按钮
2. GPIO 配置
LED引脚(PA0、PA2 和 PA3)被配置为输出推挽模式,以便微控制器控制其开关状态。
按钮引脚(PG0、PG1、PG2、PG5 和 PG6)被配置为输入模式,以检测用户按压按钮。
3. 系统初始化
在为STM32板供电后,微控制器初始化了所有GPIO外设。在初始化过程中,所有LED输出引脚都被设置为高电平,导致蓝灯、绿灯和红灯同时亮起。
4. 按钮监控
在无限循环(while(1))内部,STM32 使用 HAL_GPIO_ReadPin() 函数持续检查每个按钮的状态。
微控制器反复扫描输入引脚,并等待按钮按下事件。
当按下某个特定按钮时,STM32检测到对应输入引脚上的高电平信号,并立即通过将输出引脚设置为低电平来关闭对应的LED。
因此,该实验展示了STM32微控制器中GPIO输入和输出控制的应用。LED灯最初被激活,通过独立的按钮来关闭特定的LED。这一活动为使用嵌入式C语言编程配置GPIO引脚、读取数字输入以及控制输出设备提供了实际经验。
本文编译自hackster.io





