STM32使用按键控制LED灯亮灭
时间: 2023-09-18 09:08:35 浏览: 112
可以使用STM32的GPIO模块实现按键控制LED灯的亮灭。以下是一个简单的示例代码:
```c
#include "stm32f10x.h"
#define LED_PIN GPIO_Pin_13
#define LED_PORT GPIOC
#define BTN_PIN GPIO_Pin_0
#define BTN_PORT GPIOA
int main(void)
{
// 初始化LED的GPIO,设置为推挽输出
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = LED_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(LED_PORT, &GPIO_InitStructure);
// 初始化按键的GPIO,设置为上拉输入
GPIO_InitStructure.GPIO_Pin = BTN_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(BTN_PORT, &GPIO_InitStructure);
while (1)
{
if (GPIO_ReadInputDataBit(BTN_PORT, BTN_PIN) == Bit_RESET) // 按键按下
{
GPIO_SetBits(LED_PORT, LED_PIN); // LED亮
}
else // 按键松开
{
GPIO_ResetBits(LED_PORT, LED_PIN); // LED灭
}
}
}
```
该代码中,我们首先初始化LED的GPIO为推挽输出,初始化按键的GPIO为上拉输入。然后在主循环中,通过`GPIO_ReadInputDataBit()`函数读取按键的状态,如果按键被按下,则通过`GPIO_SetBits()`函数点亮LED灯,否则通过`GPIO_ResetBits()`函数熄灭LED灯。
需要注意的是,该代码中没有使用消抖处理,可能会导致按键的抖动现象。如果需要消除按键的抖动,可以使用软件或硬件方式进行消抖处理。
阅读全文