04_STM32Cubeide开发_led与按键驱动程序

本文介绍了使用STM32CubeIDE进行单片机开发时,LED和按键驱动程序的创建步骤。从工程准备开始,详细讲解了如何建立源文件夹、子文件夹以及源文件。接着,重点讲述了LED驱动程序的编写,虽然简单但未详述。对于按键驱动,提到了软件消抖的方法及其不足,并预告后续将采用外部中断方式。最后指出主函数循环扫描存在的按键准确性问题,并强调后续内容将侧重硬件原理和代码分析。

一、工程准备

建立用户驱动程序

1.建立源文件夹(Source folder)

在这里插入图片描述
在这里插入图片描述

2.建立子文件夹(led、按键等)

在这里插入图片描述
在这里插入图片描述

3.建立源文件(.c文件 和 .h文件)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、LED驱动程序编写

1.led.c文件

#include "led.h"

void LED_1(uint8_t a)//LED1独立控制函数(0为熄灭,其他值为点亮)
{
   
   
	if(a)HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_SET);
	else HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_RESET);
}
void LED_2(uint8_t a)//LED2独立控制函数(0为熄灭,其他值为点亮)
{
   
   
	if(a)HAL_GPIO_WritePin(LED2_GPIO_Port,LED2_Pin,GPIO_PIN_SET);
	else HAL_GPIO_WritePin(LED2_GPIO_Port,LED2_Pin,GPIO_PIN_RESET);
}
### 如何在STM32CubeIDE中通过按键外部中断控制LED灯 #### 配置环境 为了实现按键外部中断控制LED灯的功能,首先需要创建一个新的STM32项目并完成基本配置。这可以通过STM32CubeMX工具快速完成硬件抽象层(HAL)的初始化设置[^3]。 #### GPIO端口配置 1. 使用STM32CubeMX打开目标芯片型号,并进入Pinout & Configuration界面。 2. 将用于连接按键的GPIO端口配置为输入模式(Input),并将该引脚关联到EXTI(External Interrupt Line)以便启用外部中断功能[^4]。 3. 对于LED灯所使用的GPIO端口,则应将其设定为推挽输出(Output Push-Pull),初始电平可以设为低电平以确保LED默认处于关闭状态[^1]。 #### 中断服务程序编写 当上述硬件资源被正确配置之后,在生成代码后的`main.c`文件里找到对应中断向量表位置处定义好的模板函数,比如对于PA0作为外部触发源的情况可能是`void EXTI0_IRQHandler(void)`这样的形式[^2]: ```c // 外部中断处理函数示例 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){ if(GPIO_Pin == KEY_UP_PIN){ // 假定KEY_UP_PIN宏表示具体哪个管脚编号 HAL_TIM_Base_Stop(&htimX); // 如果有蜂鸣器由定时器驱动则停止它 } else if(GPIO_Pin == KEY1_PIN || GPIO_Pin == KEY0_PIN){ uint8_t state = HAL_GPIO_ReadPin(LED_PORT, LED_PIN); HAL_GPIO_WritePin(LED_PORT, LED_PIN, !state); // 反转指定LED的状态 } } ``` 以上片段展示了如何根据不同按键产生的中断信号去执行相应的动作逻辑。 #### 主循环部分 最后回到主函数中的无限循环结构下,除了必要的系统维护操作之外无需再额外加入其他指令因为所有的实时响应都已经交给了独立运行着的中断机制来负责管理了。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值