1. 程式人生 > >STC8A8K64S4A12——掉電喚醒定時器應用,極大降低產品功耗

STC8A8K64S4A12——掉電喚醒定時器應用,極大降低產品功耗

【背景】最近做低功耗專案,用到了一款STC的低成本,低功耗MCU,STC8A8K64S4A12,外設較豐富,主要是成本低,2-4元,且功耗很低,按官網介紹,掉電模式下<0.1uA,這種級別用於電池供電裝置上太划算了。

 【掉電喚醒定時器】:掉電模式下可以由外部中斷喚醒,那麼應用時可以設定掉電喚醒定時器睡眠時間->進入睡眠->醒後判斷是否為自然喚醒或 外部中斷等喚醒->根據喚醒原因發起不同動作。

判斷喚醒原因依據:醒後讀取WKTCH及WKTCL暫存器,若均為FF,則為自然喚醒,否則是被外部中斷等喚醒(此時讀出的值為睡眠時間)。

 

【掉電喚醒定時器設定原始碼】:其中32768僅是估計值,若獲取準確頻率值,可通過讀取F8H ,F9H 內容獲取出廠時記錄的時鐘頻率。

void	SetWakeUp(u16 SetTime)
{
	SetTime = (u16)((32768UL * (u16)SetTime) / 16000);	  //計算計數次數
	if(SetTime > 0)	SetTime--;      
	WKTCL = (u8)SetTime;          
	WKTCH = (u8)(SetTime >> 8) | 0x80;  //賦值WKTCH暫存器並允許內部停機喚醒定時器
}