STM32按键控制LED灯用HEL库
时间: 2023-09-18 19:09:43 浏览: 100
好的,以下是使用HAL库控制STM32按键控制LED灯的示例代码:
首先需要在STM32CubeMX中配置GPIO引脚,将按键和LED分别连接到不同的引脚上,并且使能相应的时钟。
然后在main.c中添加以下代码:
```c
#include "stm32f4xx_hal.h"
#define LED_PIN GPIO_PIN_5
#define LED_PORT GPIOA
#define BUTTON_PIN GPIO_PIN_0
#define BUTTON_PORT GPIOB
int main(void)
{
HAL_Init();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = LED_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(LED_PORT, &GPIO_InitStruct);
GPIO_InitStruct.Pin = BUTTON_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(BUTTON_PORT, &GPIO_InitStruct);
while (1)
{
if (HAL_GPIO_ReadPin(BUTTON_PORT, BUTTON_PIN) == GPIO_PIN_RESET)
{
HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_SET);
}
else
{
HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_RESET);
}
}
}
```
代码中,LED_PIN和LED_PORT分别对应LED的引脚和端口,BUTTON_PIN和BUTTON_PORT分别对应按键的引脚和端口。
在while循环中,通过HAL_GPIO_ReadPin函数读取按键的状态,如果按键被按下,则通过HAL_GPIO_WritePin函数点亮LED灯,否则灭掉LED灯。
需要注意的是,代码中使用了GPIO_PULLUP上拉电阻,因此按键需要连接到GND才能被检测到。如果使用GPIO_PULLDOWN下拉电阻,则需要将按键连接到VCC才能被检测到。
希望可以帮助到你!
阅读全文