stm32f405rgt6按键点灯
时间: 2023-10-19 22:06:55 浏览: 44
以下是基于HAL库的STM32F405RGT6按键点灯程序:
```c
#include "stm32f4xx_hal.h"
#define LED_PIN GPIO_PIN_13
#define LED_PORT GPIOC
#define BUTTON_PIN GPIO_PIN_0
#define BUTTON_PORT GPIOA
int main(void)
{
// 初始化HAL库
HAL_Init();
// 配置LED引脚为输出
GPIO_InitTypeDef GPIO_InitStruct;
__HAL_RCC_GPIOC_CLK_ENABLE();
GPIO_InitStruct.Pin = LED_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(LED_PORT, &GPIO_InitStruct);
// 配置按键引脚为输入
__HAL_RCC_GPIOA_CLK_ENABLE();
GPIO_InitStruct.Pin = BUTTON_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(BUTTON_PORT, &GPIO_InitStruct);
// 循环检测按键状态
while (1)
{
if (HAL_GPIO_ReadPin(BUTTON_PORT, BUTTON_PIN) == GPIO_PIN_SET) {
// 按键未按下,点亮LED
HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_SET);
} else {
// 按键已按下,熄灭LED
HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_RESET);
}
}
}
```
程序的逻辑很简单:在循环中不断检测按键状态,如果按键未按下,则点亮LED,否则熄灭LED。按键引脚被配置为上拉输入,因此按下按键会将引脚拉低,读取引脚状态时返回GPIO_PIN_RESET。LED引脚被配置为推挽输出,因此直接设置GPIO_PIN_SET或GPIO_PIN_RESET即可点亮或熄灭LED。