stm32hal库按键点亮led灯代码stm32hal库按键点亮led灯代码
时间: 2024-12-01 15:12:20 浏览: 8
STM32开发文档(详细)
在STM32 HAL库中,通过按键中断驱动LED灯的例子通常会涉及以下几个步骤:
```c
#include "stm32f4xx_hal.h"
#include "stm32f4xx_exti.h"
// 定义按键和LED的GPIO地址
GPIO_TypeDef *GPIO_K = GPIOA; // 按键GPIO
GPIO_TypeDef *GPIO_L = GPIOB; // LED GPIO
// 初始化GPIO
void gpioInit(void) {
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.Pin = GPIO_PIN_x; // 按键对应的引脚x
GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; // 按键模式设置为下降沿触发
GPIO_InitStruct.Pull = GPIO_NOPULL; // 引脚无上拉下拉
HAL_GPIO_Init(GPIO_K, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_y; // LED对应的引脚y
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // LED模式设置为推挽输出
GPIO_InitStruct.Pull = GPIO_NOPULL; // 同上
HAL_GPIO_Init(GPIO_L, &GPIO_InitStruct);
}
// EXTI中断服务函数
void EXTI0_IRQHandler(void) {
if (HAL_GetITStatus(EXTI_Line0) != RESET) { // 判断是否按下按键
HAL_GPIO_TogglePin(GPIO_L, GPIO_PIN_y); // 点亮LED
HAL_ClearITPendingBit(EXTI_LINE_0); // 清除中断标志
}
}
int main(void) {
// 其他系统初始化...
gpioInit();
// 配置并开启EXTI中断
HAL_NVIC_EnableIRQ(EXTI0_IRQn);
HAL_EXTI_RegisterCallback(&EXTI0_IRQn, EXTI0_IRQHandler);
while (1) {
// 主循环,此处等待按键触发
}
}
阅读全文