stm32两个按键控制一个灯的开关
时间: 2023-09-28 20:07:39 浏览: 146
stm32 按键和LED控制
以下是一个基本的示例代码,可以在STM32上实现两个按键控制一个灯的开关:
```c
#include "stm32f10x.h"
#define LED_PIN GPIO_Pin_13
#define LED_PORT GPIOC
#define BUTTON1_PIN GPIO_Pin_0
#define BUTTON1_PORT GPIOA
#define BUTTON2_PIN GPIO_Pin_1
#define BUTTON2_PORT GPIOA
void GPIO_Configuration(void);
void Delay(__IO uint32_t nCount);
int main(void)
{
GPIO_Configuration();
while (1)
{
if(GPIO_ReadInputDataBit(BUTTON1_PORT, BUTTON1_PIN) == RESET)
{
GPIO_SetBits(LED_PORT, LED_PIN);
Delay(0xFFFFF);
}
if(GPIO_ReadInputDataBit(BUTTON2_PORT, BUTTON2_PIN) == RESET)
{
GPIO_ResetBits(LED_PORT, LED_PIN);
Delay(0xFFFFF);
}
}
}
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC, ENABLE);
// LED pin
GPIO_InitStructure.GPIO_Pin = LED_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(LED_PORT, &GPIO_InitStructure);
// Button 1 pin
GPIO_InitStructure.GPIO_Pin = BUTTON1_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(BUTTON1_PORT, &GPIO_InitStructure);
// Button 2 pin
GPIO_InitStructure.GPIO_Pin = BUTTON2_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(BUTTON2_PORT, &GPIO_InitStructure);
}
void Delay(__IO uint32_t nCount)
{
for(; nCount != 0; nCount--);
}
```
在这个示例代码中,我们使用了GPIO库来配置引脚的输入和输出模式。我们将LED连接到PC13引脚上,将两个按钮分别连接到PA0和PA1引脚上。
在主循环中,我们检测两个按钮的状态,如果第一个按钮被按下,我们打开LED灯。如果第二个按钮被按下,我们关闭LED灯。在每次按下按钮后,我们使用一个简单的延迟函数来等待一段时间,以避免在按下按钮时LED灯瞬间闪烁。
请注意,这只是一个简单的示例代码,可能需要根据你的硬件配置和需求进行修改。
阅读全文