1.写两个按键的驱动文件
2.进行按键引脚的初始化,注意这里是输入模式,设置为浮空输入
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,每次检测引脚是否被按下,如按下则引脚输入了高电平,灯电平翻转一次。