Stm32用一个按键控制led灯亮灭
时间: 2023-09-16 22:16:04 浏览: 147
好的,你可以参考以下代码实现:
```c
#include "stm32f10x.h"
#define LED_PIN GPIO_Pin_5
#define KEY_PIN GPIO_Pin_0
void GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
// 使能GPIOA和GPIOC时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC, ENABLE);
// 配置LED引脚为推挽输出
GPIO_InitStructure.GPIO_Pin = LED_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
// 配置按键引脚为上拉输入
GPIO_InitStructure.GPIO_Pin = KEY_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOC, &GPIO_InitStructure);
}
int main(void)
{
GPIO_Config();
while (1)
{
// 如果按键被按下
if (GPIO_ReadInputDataBit(GPIOC, KEY_PIN) == Bit_RESET)
{
// 点亮LED灯
GPIO_WriteBit(GPIOA, LED_PIN, Bit_SET);
}
else
{
// 关闭LED灯
GPIO_WriteBit(GPIOA, LED_PIN, Bit_RESET);
}
}
}
```
以上代码中,我们使用了GPIOC的0号引脚作为按键输入口,GPIOA的5号引脚作为LED输出口。在程序循环中,我们不断检测按键状态,如果检测到按键被按下,则点亮LED灯;如果检测到按键松开,则关闭LED灯。同时,我们还在程序开始时通过GPIO_Config()函数对GPIO口进行了初始化。
阅读全文