STM32按键控制LED灯亮灭
时间: 2023-09-19 17:07:33 浏览: 156
首先需要连接一个按键和一个LED灯到STM32的GPIO口上。假设按键连接到PA0口,LED灯连接到PA1口。
下面是基本的代码框架:
```c
#include "stm32f10x.h"
void GPIO_Configuration(void);
void Delay(__IO uint32_t nCount);
int main(void)
{
GPIO_Configuration();
while (1)
{
if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == Bit_RESET) // 按键按下
{
GPIO_SetBits(GPIOA, GPIO_Pin_1); // LED亮
}
else // 按键松开
{
GPIO_ResetBits(GPIOA, GPIO_Pin_1); // LED灭
}
Delay(1000000); // 延时
}
}
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // 使能GPIOA时钟
// 配置PA0为输入模式
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
// 配置PA1为输出模式
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
void Delay(__IO uint32_t nCount)
{
while(nCount--)
{
}
}
```
在 `main` 函数中,我们先调用 `GPIO_Configuration` 函数进行GPIO口的初始化设置。然后进入一个无限循环,在循环中不断读取PA0口的输入状态,如果按键被按下,则将PA1口输出高电平,LED灯亮起来;如果按键松开,则将PA1口输出低电平,LED灯熄灭。最后加上一个延时函数,以避免按键反弹引起的误触。
注意,在 `GPIO_Configuration` 函数中,我们需要配置PA0口为输入模式,PA1口为输出模式,并且设置PA1口的输出速率为50MHz。同时我们还要使能GPIOA的时钟。
上述代码只是一个基本的框架,需要根据具体的硬件连接和需求进行修改。
阅读全文