按键中断控制led灯代码stm32
时间: 2024-11-11 14:10:17 浏览: 38
在STM32微控制器上,使用按键中断来控制LED灯是一个常见的示例,它展示了如何处理外部输入并相应地改变系统的状态。以下是一个简化的代码片段,使用Keil MDK和HAL库为例:
```c
#include "stm32f1xx_hal.h"
// 定义按键和LED引脚
GPIO_TypeDef *btnGPIO = GPIOA;
GPIO_TypeDef *ledGPIO = GPIOB;
// 初始化按键和LED
void btnInit(void) {
GPIO_InitTypeDef gpioInitStruct;
// 配置按键为输入模式,带内部下拉
gpioInitStruct.Pin = GPIO_PIN_0; // 确保替换为你实际的按键引脚
gpioInitStruct.Mode = GPIO_MODE_IT_FALLING;
gpioInitStruct.Pull = GPIO_PULLDOWN;
HAL_GPIO_Init(btnGPIO, &gpioInitStruct);
// 配置LED为输出模式
gpioInitStruct.Pin = GPIO_PIN_1; // 确保替换为你实际的LED引脚
gpioInitStruct.Mode = GPIO_MODE_OUTPUT_PP;
HAL_GPIO_Init(ledGPIO, &gpioInitStruct);
}
// 按键中断服务函数
void IT Btn(void) interrupt EXTI_LINE_0 {
HAL_GPIO_WritePin(ledGPIO, GPIO_PIN_1, !HAL_GPIO_ReadPin(ledGPIO)); // LED状态反转
}
int main(void) {
btnInit();
// 开启按钮中断
HAL_NVIC_EnableIRQ(EXTI0_IRQn); // EXTI0_IRQn对应于GPIOA的下降沿中断
while (1) {
// 主循环,这里可以添加其他功能
}
}
```
阅读全文