蓝桥杯 stm32 按键点灯 CubeMX

本文介绍了蓝桥杯嵌入式竞赛中STM32按键点灯的实现方法,通过CubeMX配置IO端口,代码讲解了读取按键、消抖处理和按键点灯的步骤,适合初学者学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注:我们使用的是 HAL


前言

一、按键 原理图:

在这里插入图片描述
从图中我们可以看到有 4个按键,B1 , B2 , B3 , B4

对应的 GPIO 端口是 PB0 , PB1, PB2 ,PA0

当按键按下,IO 口读到低电平;按键弹起,IO 口读到高电平

LED 的原理图,CubeMX 配置,以及代码讲解都在我的上篇文章 里详细讲解了,这 篇文章主要为大家讲解 按键 的使用。
蓝桥杯嵌入式之 LED 闪烁


二、按键CubeMX配置:

(1)设置 IO 端口是

### 蓝桥杯嵌入式系统GPIO使用教程及实例 #### 配置GPIO为输出模式 为了使STM32微控制器能够控制外部设备,如LED灯,需先通过STM32CubeMX工具配置相应的引脚为输出模式。具体操作是在图形界面中选择目标引脚,并将其工作模式设置为“GPIO_Output”。完成硬件配置后,生成初始化代码并集成到项目中[^2]。 ```c // 初始化GPIO端口结构体 GPIO_InitTypeDef GPIO_InitStruct = {0}; // 设置GPIO引脚模式为输出 GPIO_InitStruct.Pin = GPIO_PIN_13; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); ``` #### 实现简单的点灯程序 在`main.c`文件内编写如下代码片段用于测试已配置好的输出引脚是否正常工作: ```c int main(void) { /* 初始化所有外设 */ HAL_Init(); // 系统时钟配置... // 初始化用户板级支持包... while (1) { // 将PC13引脚电平拉高点亮LED HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET); // 延迟一段时间保持亮起状态 HAL_Delay(500); // 关闭LED HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); // 再次延迟等待下一次循环 HAL_Delay(500); } } ``` 此段代码实现了每秒闪烁一次连接至PC13引脚上的LED指示灯效果。 #### 按键检测逻辑设计 对于输入信号处理方面,则可以采用类似的方法来捕获来自按钮或其他开关的状态变化。下面展示了一个简单例子说明如何判断特定按键是否被按下: ```c if(HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin) == GPIO_PIN_RESET){ // 当前时刻KEY处于低电平表示已被触发按压动作 } else{ // 否则代表未发生任何交互事件 } ``` 上述条件语句会检查指定的按键当前是否处于活动状态(即接地),从而允许应用程序据此作出响应措施[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

糖果罐子♡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值