按键控制灯的亮灭

1.写两个按键的驱动文件

image

2.进行按键引脚的初始化,注意这里是输入模式,设置为浮空输入

image

3.再写一个按键检测函数

//按键检测
uint8_t Key_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin)
{
	if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin)==1)//读取引脚的输入
	{
		//松手检测,如果按着不放,则一直在这里循环
		while(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin)==1);
		return 1;
	}else
	return 0;
}

4.在灯的头文件里面写一个灯的引脚电平翻转程序

#define LED_B_TOGGLE  {GPIOB->ODR ^= GPIO_Pin_1;}

灯的引脚为PB1,其中GPIO_Pin_1为0x0002,ODR寄存器每次与该引脚异或都会改变输出电平。所以按一次按键灯的状态改变一次。

5.最后主程序控制代码如下

int main(void)
{
	GPIO_LED_Config();
	KEY_Config();
	while(1)
	{
		if(Key_Scan(GPIOA,GPIO_Pin_0)==1)//判断是否按下按键且松手
			LED_B_TOGGLE;	
	}
}

按键的引脚为PA0,每次检测引脚是否被按下,如按下则引脚输入了高电平,灯电平翻转一次。

posted @ 2023-11-19 23:02  京多安  阅读(125)  评论(0)    收藏  举报