MCU微課堂
CKS32F107XX系列窗口看門(mén)狗介紹
第六十六期 2025.11.24
中科芯CKS32F107xx系列產(chǎn)品內(nèi)部提供兩個(gè)看門(mén)狗定時(shí)器單元,獨(dú)立型看門(mén)狗IWDG(Independent Watchdog)和窗口型看門(mén)狗WWDG(Window Watchdog),本文主要介紹WWDG的應(yīng)用,關(guān)于IWDG的詳情,請(qǐng)參看我們的IWDG微課堂內(nèi)容。
WWDG簡(jiǎn)介
通過(guò)前面的課程,我們知道IWDG獨(dú)立看門(mén)狗的工作原理就是一個(gè)遞減計(jì)數(shù)器在LSI時(shí)鐘的驅(qū)動(dòng)下不斷的往下遞減計(jì)數(shù),當(dāng)減到0之前如果沒(méi)有刷新遞減計(jì)數(shù)器的值(俗稱喂狗),便會(huì)觸發(fā)系統(tǒng)復(fù)位。
WWDG窗口看門(mén)狗也是一個(gè)遞減計(jì)數(shù)器不斷的往下遞減計(jì)數(shù)。但和IWDG獨(dú)立看門(mén)狗有四處不同:
(1)IWDG由獨(dú)立RC振蕩器產(chǎn)生的LSI驅(qū)動(dòng),不受主時(shí)鐘影響,但精度不高;WWDG由APB1分頻時(shí)鐘驅(qū)動(dòng),受主時(shí)鐘影響,精度高。
(2)IWDG直接由VDD電壓域供電,即使在MCU停止模式和待機(jī)模式下仍然能照常工作。
(3)IWDG計(jì)數(shù)器減到下限0時(shí)觸發(fā)復(fù)位,WWDG計(jì)數(shù)器減到下限0x40時(shí)觸發(fā)復(fù)位,下限值不同。
(4)IWDG計(jì)數(shù)器只有復(fù)位下限值0,WWDG計(jì)數(shù)器不僅有復(fù)位下限0x40,還有一個(gè)復(fù)位上限X(用戶設(shè)定),上限值與下限值之間形成一個(gè)復(fù)位窗口。WWDG計(jì)數(shù)器的值在減到上限X之前(窗口外)喂狗,同樣也會(huì)產(chǎn)生復(fù)位。因此WWDG必須在窗口上限和窗口下限之間才可以喂狗,這是窗口看門(mén)狗的特殊之處。

WWDG詳細(xì)介紹
1、WWDG功能框圖解析
下圖是獨(dú)立看門(mén)狗的功能框圖,分4個(gè)部分進(jìn)行說(shuō)明。

① WWDG時(shí)鐘:窗口看門(mén)狗的時(shí)鐘來(lái)自APB1時(shí)鐘線分頻出的PCLK1,最大42MHz,由RCC時(shí)鐘控制器控制開(kāi)啟。
② 計(jì)數(shù)器時(shí)鐘和WWDG_CFR寄存器:CK計(jì)時(shí)器時(shí)鐘 = PCLK1 / 4096,計(jì)數(shù)器時(shí)鐘由CK計(jì)時(shí)器時(shí)鐘經(jīng)過(guò)預(yù)分頻器分頻得到,分頻系數(shù)由配置寄存器WWDG_CFR的WWDGTB[1:0]控制,可以是0~3,因此計(jì)數(shù)器的時(shí)鐘CNT_CK = PCLK1 / 4096 / (2^WWDGTB),進(jìn)而可算出一個(gè)計(jì)數(shù)周期時(shí)間是T = 1 / CNT_CK。
③ 計(jì)數(shù)器和WWDG_CR寄存器:WWDG的計(jì)數(shù)器是一個(gè)7位遞減計(jì)數(shù)器,其值存放在控制器寄存器WWDG_CR的T[6:0]中,當(dāng)該計(jì)數(shù)器的值從0x40變?yōu)?x3F時(shí),產(chǎn)生復(fù)位,因此計(jì)數(shù)器的值只能是在0x7F~0x40之間,有效位是T[5:0]。WWDG_CR的WDGA位則是窗口看門(mén)狗的激活位,可由軟件置1來(lái)啟動(dòng)WWDG,要注意WDGA一旦置1,只能在硬件復(fù)位后才能清零。
④ 窗口上限值:WWDG的窗口下限值固定是0x40,但窗口上限值可以人為設(shè)定,具體可由WWDG_CFR配置寄存器的W[6:0]設(shè)置,其值必須大于0x40且小于0x7F,否則就失去了意義。
最后介紹的是狀態(tài)寄存器(WWDG_SR)和EWI(Early wakeup interrupt)中斷,該寄存器用來(lái)記錄當(dāng)前是否有提前喚醒EWI的中斷標(biāo)志。該寄存器僅有位0有效,其他都是保留位。當(dāng)計(jì)數(shù)器值達(dá)到0x40時(shí),此位由硬件置1,它必須通過(guò)軟件寫(xiě)0來(lái)清除。在初始化WWDG時(shí),一般會(huì)先通過(guò)軟件寫(xiě)0清除一次。用戶可以在EWI(Early wakeup interrupt)中斷服務(wù)程序里進(jìn)行一些必要的操作。
2、計(jì)算看門(mén)狗超時(shí)時(shí)間
窗口看門(mén)狗的時(shí)序圖如下。

假設(shè)PCLK1時(shí)鐘為36MHz,按照上述計(jì)算方法,可以得到WWDG的超時(shí)時(shí)間計(jì)算公式Twwdg =1 / PCLK1 x 4096 x 2^WDGTB x (T[5:0]+1),范圍如下表。

3、WWDG庫(kù)函數(shù)配置步驟
(1)使能WWDG時(shí)鐘
RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE); // WWDG 時(shí)鐘使能
(2)設(shè)置WWDG窗口上限和WDGTB分頻系數(shù)
void WWDG_SetWindowValue(uint8_t WindowValue); //設(shè)置WWDG 窗口上限
void WWDG_SetPrescaler(uint32_t WWDG_Prescaler); //設(shè)置WDGTB分頻系數(shù)
(3)開(kāi)啟WWDG中斷并分組
WWDG_ClearFlag(); //清除提前喚醒中斷標(biāo)志位
NVIC_Init(); //設(shè)置中斷優(yōu)先級(jí)
WWDG_EnableIT(); //開(kāi)啟窗口看門(mén)狗中斷
(4)設(shè)置計(jì)數(shù)器初始值并使能看門(mén)狗
void WWDG_Enable(uint8_t Counter); //設(shè)置計(jì)數(shù)器值并使能看門(mén)狗
完成以上4個(gè)步驟之后,我們就可以使用窗口看門(mén)狗了。之后在程序里面就必須周期性的在窗口上下限范圍內(nèi)進(jìn)行喂狗(一般調(diào)用WWDG_SetCounter函數(shù)),否則將導(dǎo)致系統(tǒng)復(fù)位。
4、WWDG的應(yīng)用場(chǎng)景
WWDG一般被用來(lái)監(jiān)測(cè)由外部干擾或不可預(yù)見(jiàn)的邏輯條件造成的應(yīng)用程序背離正常的運(yùn)行序列而產(chǎn)生的軟件故障。比如一個(gè)十分關(guān)鍵的程序段正常運(yùn)行的時(shí)間是58ms以內(nèi),在運(yùn)行完這個(gè)段程序之后緊接著進(jìn)行喂狗,如果在規(guī)定的時(shí)間窗口內(nèi)還沒(méi)有喂狗,那就說(shuō)明我們監(jiān)控的程序并沒(méi)有在預(yù)期的58ms內(nèi)運(yùn)行完成,可以認(rèn)為出故障了或跑飛了,那么此時(shí)產(chǎn)生系統(tǒng)復(fù)位來(lái)解除這個(gè)故障,讓程序重新運(yùn)行。
-
mcu
+關(guān)注
關(guān)注
147文章
18669瀏覽量
388974 -
看門(mén)狗
+關(guān)注
關(guān)注
10文章
608瀏覽量
72634 -
計(jì)數(shù)器
+關(guān)注
關(guān)注
32文章
2307瀏覽量
97701 -
定時(shí)器
+關(guān)注
關(guān)注
23文章
3362瀏覽量
121937
原文標(biāo)題:MCU微課堂|CKS32F107XX系列窗口看門(mén)狗介紹
文章出處:【微信號(hào):中科芯MCU,微信公眾號(hào):中科芯MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
中科芯CKS32F107XX系列MCU的獨(dú)立看門(mén)狗介紹
STM32中的獨(dú)立看門(mén)狗和窗口看門(mén)狗是什么
MCU獨(dú)立看門(mén)狗和窗口看門(mén)狗的區(qū)別
stm32看門(mén)狗時(shí)間計(jì)算 獨(dú)立看門(mén)狗和窗口看門(mén)狗的特性是什么
STM32看門(mén)狗配置(獨(dú)立看門(mén)狗IWDG和窗口看門(mén)狗WWDG)
MCU獨(dú)立看門(mén)狗與窗口看門(mén)狗的區(qū)別
【MCU】基于STM32CubeMX 實(shí)現(xiàn)窗口看門(mén)狗 WWDG
STM32:獨(dú)立看門(mén)狗、窗口看門(mén)狗的配置
STM32中的獨(dú)立看門(mén)狗和窗口看門(mén)狗
STM32中的獨(dú)立看門(mén)狗和窗口看門(mén)狗
CKS32F107xx系列時(shí)鐘系統(tǒng)具體配置方法講解

中科芯CKS32F107XX系列MCU的窗口看門(mén)狗介紹
評(píng)論