用标准库写stm32按键控制led
时间: 2023-09-17 15:09:52 浏览: 94
stm32-exti-标准库程序.zip
下面是一个使用标准库(StdPeriph)来实现按键控制 LED 亮灭的示例代码:
```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)
{
// 按键按下时,点亮 LED 灯
GPIO_SetBits(GPIOC, GPIO_Pin_13);
}
else
{
// 按键未按下,熄灭 LED 灯
GPIO_ResetBits(GPIOC, GPIO_Pin_13);
}
// 延时一段时间,避免频繁读取按键状态
Delay(0xFFFFF);
}
}
void GPIO_Configuration(void)
{
// 使能 GPIOA 和 GPIOC 的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC, ENABLE);
// 配置 LED 灯的 GPIO 引脚为推挽输出
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
// 配置按键的 GPIO 引脚为上拉输入
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
void Delay(__IO uint32_t nCount)
{
for (; nCount != 0; nCount--);
}
```
这个示例程序中,我们通过 `GPIO_Configuration()` 函数来初始化 GPIO 引脚。将 PA0 引脚配置为上拉输入模式,PC13 配置为推挽输出模式。在主程序中,我们不断检测 PA0 引脚的状态,当按键按下时,点亮 PC13 引脚的 LED 灯;当按键未按下时,熄灭 LED 灯。为避免频繁读取按键状态,我们在每次检测完按键状态后,添加了一段延时程序。
需要注意的是,这里使用的是按键上拉输入模式,因此按键按下时,PA0 引脚会被拉到地,引脚状态为低电平(Bit_RESET)。如果使用下拉输入模式,则需要相应地修改代码。
阅读全文