stm32标准库编写一个按键控制三个led灯的程序
时间: 2023-06-26 09:04:51 浏览: 1011
按键点个灯——基于STM32CubeMX
以下是一个简单的按键控制三个LED灯的程序,使用了STM32标准库和GPIO库。
```c
#include "stm32f10x.h"
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
// Enable GPIOA, GPIOB, and GPIOC clocks
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC, ENABLE);
// Configure PA0 (the button) as input with pull-up
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOA, &GPIO_InitStructure);
// Configure PB0, PB1, and PC13 as outputs
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_Init(GPIOC, &GPIO_InitStructure);
while (1)
{
// If the button is pressed, toggle the LEDs
if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 0)
{
GPIO_WriteBit(GPIOB, GPIO_Pin_0, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_0)));
GPIO_WriteBit(GPIOB, GPIO_Pin_1, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_1)));
GPIO_WriteBit(GPIOC, GPIO_Pin_13, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_13)));
while (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 0); // Wait until button is released
}
}
}
```
该程序将PA0配置为输入,带上拉电阻,将PB0、PB1和PC13配置为输出,并在while循环中检测PA0的状态。如果PA0被按下,则切换三个LED灯的状态,然后等待直到按钮被释放。
阅读全文