整理:Miler Shao
對(duì)于STM8S系列或STM8L101系列芯片的低功耗模式中,有個(gè)活躍停機(jī)模式[Active Halt],可以使用AWU中斷喚醒。

從上表可以看出,活躍停機(jī)模式[Active Halt]有兩種情形,細(xì)節(jié)這里就不延伸了,反正都可以
通過(guò)AWU 或外部中斷喚醒。下面主要就AWU及其應(yīng)用作些基本的介紹。
此處所說(shuō)的 AWU,是指STM8S芯片內(nèi)部的一個(gè)外設(shè)單元,叫自動(dòng)喚醒單元[Auto Wake up Unit]。
是用來(lái)當(dāng)STM8S芯片進(jìn)入低功耗的活躍停機(jī)模式[ACTIVE HALT MODE]時(shí)提供一個(gè)內(nèi)部的喚醒時(shí)
間基準(zhǔn)。該時(shí)間基準(zhǔn)的時(shí)鐘源來(lái)自LSI或者分頻過(guò)的HSE。自進(jìn)入活躍停機(jī)休眠模式起,每經(jīng)過(guò)喚
醒時(shí)間基準(zhǔn)單位后,便利用AWU中斷喚醒MCU。 事后根據(jù)HALT指令再次進(jìn)入活躍停機(jī)模式,如
此往復(fù)循環(huán)。
當(dāng)使用LSI時(shí),為了保障盡可能高的時(shí)間精度,它的頻率可以通過(guò)TIMER3或TIMER1的輸入
捕捉進(jìn)行測(cè)定。具體用那個(gè) TIMER要看具體的數(shù)據(jù)手冊(cè)。下面是AWU的時(shí)鐘框圖:

AWU的時(shí)鐘源可以是LSI或者是經(jīng)過(guò)分頻后的HSE,得到的Fls,可以進(jìn)行預(yù)分頻,之后
給AWU計(jì)數(shù)器進(jìn)行計(jì)數(shù)。
其中預(yù)分頻系數(shù)由AWU_APR寄存器中的 APR[5:0]決定,最大64分頻;那AWU計(jì)數(shù)器的
計(jì)數(shù)個(gè)數(shù)由AWU_TBR寄存器中的 AWU_TB[3:0]決定,分為15個(gè)時(shí)基,是它最終決定喚醒
延時(shí)的時(shí)間長(zhǎng)度。最長(zhǎng)時(shí)間為 64*30*2048個(gè)AWU的 Fls脈沖所占時(shí)間,如果以Fls 128K來(lái)
算,最長(zhǎng)時(shí)間約為30.72s 。
AWU的操作步驟如下:

第1步 意思很清楚了,上面提過(guò)。
第2、3 步是為了設(shè)定從進(jìn)入休眠到喚醒的時(shí)間長(zhǎng)度,即設(shè)置喚醒時(shí)基。
第4步是使能AWU 喚醒功能。
第5步就是發(fā)布讓STM8S MCU 進(jìn)入活躍停機(jī)模式的指令。
關(guān)于AWU喚醒時(shí)間的計(jì)算
上面提到過(guò)了,跟2個(gè)寄存器有關(guān),分別是AWU_APR寄存器中的 APR[5:0]和AWU_TBR中的AWU_TB[3:0]。
APR[5:0]負(fù)責(zé)對(duì)AWU的時(shí)鐘源進(jìn)行分頻,然后給AWU的計(jì)數(shù)器計(jì)數(shù)。AWU_TB[3:0]負(fù)責(zé)控制AWU計(jì)數(shù)器
記多少個(gè)脈沖,一共有15個(gè)數(shù)據(jù)檔,不同的檔對(duì)應(yīng)不同的計(jì)數(shù)個(gè)數(shù)。
由于寄存器設(shè)置數(shù)據(jù)本身具有一定離散性和2個(gè)寄存器數(shù)據(jù)有可能有多種乘積組合,不難理解,對(duì)于具體的
喚醒間隔,這2個(gè)寄存器的參數(shù)有個(gè)最佳組合問(wèn)題,原則是盡可能靠近你所希望的時(shí)間間隔。關(guān)于這點(diǎn),ST
官方參考手冊(cè)有示例說(shuō)明,可以借鑒參考。
最后溫馨提醒:
1、AWU的時(shí)鐘源Fls,是通過(guò)對(duì)CKAWUSEL選項(xiàng)位編程選擇,經(jīng)常有人找不到位置;
2、AWU的計(jì)數(shù)器只有在HALT指令之后 且MCU進(jìn)入活躍停機(jī)模式時(shí)才開(kāi)始計(jì)數(shù),與此同時(shí)并使能AWU中斷。
3、AWU_APR寄存器中的 APR[5:0]的系統(tǒng)復(fù)位后的默認(rèn)值是0x3f,切不可順手就使用該
默認(rèn)值,否則AWU的計(jì)數(shù)器不工作。這點(diǎn)也的確有人在此流連忘返過(guò)。
4、接著第2點(diǎn)羅嗦下,當(dāng)MCU回到運(yùn)行模式時(shí)AWU是停止計(jì)數(shù)工作的。當(dāng)再次進(jìn)入活躍停機(jī)模式時(shí)重新初始化
并開(kāi)始計(jì)數(shù)延時(shí)。