stm32f103用两个按键控制三个灯
时间: 2023-10-10 15:09:26 浏览: 110
以下是基本的STM32F103代码,用两个按键控制三个灯:
首先,需要将两个按键和三个LED引脚与STM32F103的GPIO端口相连。例如,将两个按键分别连接到PA0和PA1引脚,将三个LED分别连接到PB0、PB1和PB2引脚。
然后,在代码中需要初始化GPIO端口,将PA0和PA1配置为输入模式,将PB0、PB1和PB2配置为输出模式。代码如下:
```
#include "stm32f10x.h"
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* Enable GPIOA and GPIOB clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);
/* Configure PA0 and PA1 as input */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* Configure PB0, PB1 and PB2 as output */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
```
接下来,在主函数中需要不断循环读取PA0和PA1的状态,根据状态控制PB0、PB1和PB2的输出。代码如下:
```
int main(void)
{
GPIO_Configuration();
while (1)
{
/* Read PA0 and PA1 */
uint8_t button1 = GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0);
uint8_t button2 = GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1);
/* Control PB0, PB1 and PB2 */
if (button1 && button2) // Both buttons pressed
{
GPIO_SetBits(GPIOB, GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2);
}
else if (button1) // Button 1 pressed
{
GPIO_SetBits(GPIOB, GPIO_Pin_0);
GPIO_ResetBits(GPIOB, GPIO_Pin_1 | GPIO_Pin_2);
}
else if (button2) // Button 2 pressed
{
GPIO_SetBits(GPIOB, GPIO_Pin_1);
GPIO_ResetBits(GPIOB, GPIO_Pin_0 | GPIO_Pin_2);
}
else // Both buttons not pressed
{
GPIO_ResetBits(GPIOB, GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2);
}
}
}
```
这段代码中,如果两个按键都被按下,则三个LED都会亮;如果只有第一个按键被按下,则只有第一个LED亮;如果只有第二个按键被按下,则只有第二个LED亮;如果两个按键都没有被按下,则三个LED都不亮。
阅读全文