1、這個章節主要講述瞭如何配置STM32功耗最低的待機模式,且以wk_up的上升沿作爲它的喚醒方式。
2、如果是正常運行,先執行中斷程序。 如果是待機狀態,則先復位並初始化。
程序的主要流程是初始化到WKUP_Init()函數,在之內的死循環中等待按鍵按下的消息到來,只有這樣,程序纔可以執行下去到點亮LCD。如果沒有按鍵按下程序就一直處於
待機的狀態。(因爲在WKUP_Init()初始化中有這樣一句語句:if(Check_WKUP()==0) Sys_Standby(); //不是開機,進入待機模式 ,如果調用了Check_WKUP()函數,則這
個函數一直都在 判斷該按鍵的狀態。如果沒有按鍵按下,則直接進入到到待機模式。當捕捉到按鍵按下時,就會對液晶進行初始化並顯示基本信息。)
當進入到正常的開機狀態時,則由wk_up上升沿引起中斷,進入到待機模式:if(Check_WKUP())//關機 Sys_Enter_Standby();
3、讀取按鍵狀態函數,它在整個的函數執行過程中都在執行,不斷的返回0或1,在今後的學習中可以使用。
//檢測WKUP腳的信號
//返回值1:連續按下3s以上
// 0:錯誤的觸發
u8 Check_WKUP(void)
{
u8 t=0;
//記錄按下的時間
LED0=0; //亮燈DS0
while(1)
{
if(WKUP_KD)
{
t++; //已經按下了
delay_ms(30);
if(t>=100)
//按下超過3秒鐘
{
LED0=0;
//點亮DS0
return 1; //按下3s以上了
}
}else
{
LED0=1;
return 0; //按下不足3秒
}
}
}