STM32 按键控制LED
时间: 2023-09-18 07:11:42 浏览: 72
这个问题其实很常见,下面是一个简单的例子,可以参考一下:
首先,需要在 STM32 上配置 GPIO 引脚,将其中的一个引脚配置为输入模式(按键所在引脚),另一个引脚配置为输出模式(LED 所在引脚)。然后,可以使用 STM32 提供的库函数来读取按键输入状态,并根据按键状态控制 LED 的亮灭。
以下是一个示例代码:
```c
#include "stm32f10x.h"
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* 使能 GPIOC 和 GPIOA 时钟 */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOA, ENABLE);
/* 配置 PC13 为输入引脚(按键所在引脚) */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOC, &GPIO_InitStructure);
/* 配置 PA5 为输出引脚(LED 所在引脚) */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
while (1)
{
/* 判断按键是否按下 */
if (GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == Bit_RESET)
{
/* 按键按下,点亮 LED */
GPIO_SetBits(GPIOA, GPIO_Pin_5);
}
else
{
/* 按键未按下,熄灭 LED */
GPIO_ResetBits(GPIOA, GPIO_Pin_5);
}
}
}
```
需要注意的是,以上代码仅供参考,实际应用时需要根据具体硬件平台和需求进行修改。
阅读全文