STM8S的低功耗模式有4種。 關系如下。
本次使用的停機(HALT)
使用了內部定時器,外部中斷,LED指示是否進入低功耗。
在while循環中設置如下
1 while(1) 2 { 3 if(!IR_IN) // 外部中斷產生 4 { 5 執行程序... 6 7 IR_IN = 1; 8 } 9 else 10 { 11 TIM1_Cmd(DISABLE); // 關閉定時器 12 ClrLED; //關閉LED 13 _asm("halt"); // 進入停機模式 14 SetLED; // 開啟LED 15 } 16 }
在主函數中檢測到 外部中斷了,執行相關函數。
函數自行完成后,進入else
其中如果使用halt模式,可以不寫11行。如果使用WFI模式需要寫11行
在else中 13行開起停機模式。
如果停機模式正常進入,LED燈是熄滅的,如果沒有進入停機模式,LED燈被開啟。 用來判斷狀態。
測試:
按鍵觸發,外部中斷引腳產生下降沿中斷,點亮LED燈(在中斷函數中點亮的)
當按鍵彈起后LED燈熄滅。。
由於測試工具限制,只能確保電流低於1ma。