STM32三个按钮控制三个LED灯
时间: 2023-06-24 17:07:19 浏览: 237
可以通过以下步骤实现STM32三个按钮控制三个LED灯:
1. 配置GPIO口,将三个LED灯连接到STM32的不同GPIO口,将三个按钮连接到STM32的另外三个GPIO口。
2. 初始化GPIO口,并设置LED口为输出模式,按钮口为输入模式。
3. 在主循环中,不断检测三个按钮口的状态,如果检测到按钮按下,则相应地改变对应的LED口状态。
下面是一个简单的示例代码:
```c
#include "stm32f10x.h"
#define LED1_PIN GPIO_Pin_0
#define LED2_PIN GPIO_Pin_1
#define LED3_PIN GPIO_Pin_2
#define BTN1_PIN GPIO_Pin_3
#define BTN2_PIN GPIO_Pin_4
#define BTN3_PIN GPIO_Pin_5
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* Enable GPIOA clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
/* Configure LED pins as output push-pull */
GPIO_InitStructure.GPIO_Pin = LED1_PIN | LED2_PIN | LED3_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* Configure button pins as input floating */
GPIO_InitStructure.GPIO_Pin = BTN1_PIN | BTN2_PIN | BTN3_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
int main(void)
{
GPIO_Configuration();
while(1)
{
/* Check button 1 */
if(GPIO_ReadInputDataBit(GPIOA, BTN1_PIN) == Bit_RESET)
{
GPIO_SetBits(GPIOA, LED1_PIN);
}
else
{
GPIO_ResetBits(GPIOA, LED1_PIN);
}
/* Check button 2 */
if(GPIO_ReadInputDataBit(GPIOA, BTN2_PIN) == Bit_RESET)
{
GPIO_SetBits(GPIOA, LED2_PIN);
}
else
{
GPIO_ResetBits(GPIOA, LED2_PIN);
}
/* Check button 3 */
if(GPIO_ReadInputDataBit(GPIOA, BTN3_PIN) == Bit_RESET)
{
GPIO_SetBits(GPIOA, LED3_PIN);
}
else
{
GPIO_ResetBits(GPIOA, LED3_PIN);
}
}
}
```
在这个示例代码中,我们使用了GPIO口来控制LED灯的状态,并通过不断检测按钮口的状态来控制LED灯的亮灭。当检测到某一个按钮被按下时,对应的LED灯将被点亮,否则将被熄灭。
阅读全文