STM32单片机按下按键,LED0状态反转
时间: 2023-07-27 09:22:51 浏览: 86
可以使用STM32的HAL库实现这个功能,假设按键连接到PA0,LED连接到PB0,代码如下:
```c
#include "stm32f4xx_hal.h"
int main(void)
{
// 初始化HAL库
HAL_Init();
// 初始化GPIO口
__HAL_RCC_GPIOA_CLK_ENABLE(); // 使能PA口时钟
__HAL_RCC_GPIOB_CLK_ENABLE(); // 使能PB口时钟
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = GPIO_PIN_0; // 按键连接到PA0
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_0; // LED连接到PB0
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
// 初始化LED状态
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
// 循环监测按键状态
while (1)
{
if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_RESET) // 按键被按下
{
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0); // 反转LED状态
HAL_Delay(100); // 延时去抖
}
}
}
```
这段代码会不断监测PA0的状态,如果检测到PA0为低电平(按键被按下),则将PB0的状态取反(LED状态反转)。为了防止按键抖动,我们在按键检测后加上了100ms的延时。
阅读全文