STM32入門教程-2022持續(xù)更新中

按鍵控制LED
關于uint8_t Key_GetNum(void)函數(shù)的理解和主函數(shù)中循環(huán)的理解:
uint8_t Key_GetNum(void)函數(shù):
uint8_t Key_GetNum(void)
{
uint8_t KeyNum=0;
初始化KeyNum,賦值0
if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1)==0)
PB1引腳設為上拉輸入,默認高電平;PB1連接按鍵1,按鍵1接低電平;按下按鍵1,PB1變成低電平;
{
按鍵要一直按,一松手就彈回去了
Delay_ms(10);
消除按下按鍵1產生的抖動
while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1)==0);
一個空循環(huán),一直按著按鍵1一直循環(huán);結束循環(huán)的條件是松開按鍵1;結束循環(huán)
Delay_ms(10);
消除松開按鍵1產生的抖動
KeyNum = 1;
發(fā)生了一次按下又松開按鍵1的事件,KeyNum = 1
}
if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11)==0);
PB11引腳設為上拉輸入,默認高電平;PB11連接按鍵2,按鍵2接低電平;按下按鍵2,PB11變成低電平;
{
Delay_ms(10);
while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11)==0);
Delay_ms(10);
KeyNum = 2;
發(fā)生了一次按下又松開按鍵2的事件,KeyNum = 2
}
return KeyNum;
返回值可能是0(無事發(fā)生),1(對應LED1),2(對應LED2)
}
主函數(shù)中循環(huán):
while(1)
{
KeyNum=Key_GetNum();
不停向Key_GetNum()索要返回值
if(KeyNum==1)
返回值1說明按下又松開一次按鍵1
{
LED1_TURN();
燈1的狀態(tài)反轉,原來是關的現(xiàn)在開了,原來是開的現(xiàn)在關了
}
if(KeyNum==2)
返回值2說明按下又松開一次按鍵2
{
LED2_TURN();
燈2的狀態(tài)反轉
}
}