国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

【GD32H757Z海棠派開發(fā)板使用手冊】第七講 FWDG-看門狗實(shí)驗(yàn)

發(fā)布者:CuriousTraveler最新更新時(shí)間:2024-12-13 來源: elecfans關(guān)鍵字:看門狗實(shí)驗(yàn) 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

7.1實(shí)驗(yàn)內(nèi)容

通過本實(shí)驗(yàn)主要學(xué)習(xí)以下內(nèi)容:

  • 獨(dú)立看門狗的原理

  • 獨(dú)立看門狗功能介紹

  • 實(shí)現(xiàn)獨(dú)立看門狗功能

7.2實(shí)驗(yàn)原理

7.2.1看門狗的原理

一般來說,搭配MCU的產(chǎn)品都需要有長期運(yùn)行的需求,特別像一些工業(yè)設(shè)備,可能要求運(yùn)行個(gè)幾年都不關(guān)機(jī),但誰也不能保證在這幾年里,MCU里面的代碼不出任何問題,更何況自然環(huán)境中還存在很多電磁干擾、靜電等,都可能會導(dǎo)致MCU出現(xiàn)運(yùn)行異常的情況,比如程序卡死啦,進(jìn)入錯(cuò)誤狀態(tài)啦等等,這個(gè)時(shí)候,我們就可以通過一個(gè)非??蓯鄣耐庠O(shè)——看門狗,來幫助MCU從異常狀態(tài)復(fù)位,讓程序重新開始從頭運(yùn)行。

看門狗實(shí)際上是一個(gè)定時(shí)器,它的工作原理是:將看門狗定時(shí)器的計(jì)數(shù)器設(shè)定一個(gè)初始值,看門狗開始運(yùn)行后,定時(shí)器中的計(jì)數(shù)值會在每一個(gè)計(jì)數(shù)器時(shí)鐘來的時(shí)候減1,如果這個(gè)計(jì)數(shù)值減到0,看門狗就會內(nèi)部給MCU一個(gè)復(fù)位信號使MCU復(fù)位。所以應(yīng)用程序中必須每隔一段時(shí)間要對看門狗的計(jì)數(shù)值進(jìn)行一次重載(看門狗計(jì)數(shù)器恢復(fù)到初始值),這樣看門狗的計(jì)數(shù)器就不會減到0了,而當(dāng)程序出現(xiàn)卡死的情況時(shí),由于不再對看門狗計(jì)數(shù)器重載,看門狗就會讓MCU復(fù)位,使MCU從卡死狀態(tài)恢復(fù)出來。這種工作方式是不是就像一條狗,你要每隔一段時(shí)間去喂它,否則它就不給你“看門”了,“看門狗”的名字,就是這么來的。

GD32H757片上有兩個(gè)看門狗外設(shè)——獨(dú)立看門狗(FWDGT)和窗口看門狗(WWDGT),本章我們只講獨(dú)立看門狗。

7.2.2獨(dú)立看門狗(FWDGT)的時(shí)鐘

前面講到,看門狗的計(jì)數(shù)值在每一個(gè)計(jì)數(shù)器時(shí)鐘來的時(shí)候減1,那么這個(gè)時(shí)鐘是什么呢,我們來看一下GD32H757的時(shí)鐘樹:

wKgZomY9eTmAfNFMAABg30nrbgg563.png

從時(shí)鐘樹可以看到,F(xiàn)WDGT的時(shí)鐘來源于IRC32K,這是GD32H757的內(nèi)部時(shí)鐘,典型的頻率值是32KHz。但要注意,這個(gè)IRC32K不是直接連到FWDGT計(jì)數(shù)器的,而是需要經(jīng)過一個(gè)預(yù)分頻器,這個(gè)分頻器大小通過FWDGT_PSC進(jìn)行設(shè)定。

預(yù)分頻寄存器(FWDGT_PSC):

wKgaomY9eV-AOG5kAABcFQ1QEEw925.pngwKgZomY9eWiAWv51AAFYY6ZfqBc364.pngwKgaomY9eY6ASl7jAAFQREG8aQk297.png

如設(shè)定PS[2:0]為001b,那么計(jì)數(shù)器的時(shí)鐘頻率就為32K/8 = 4KHz,即每隔250us計(jì)數(shù)值減1。

7.2.3獨(dú)立看門狗(FWDGT)的重裝載

說完時(shí)鐘,我們來說下FWDGT的計(jì)數(shù)器和重裝載。計(jì)數(shù)器就是按照前面說的,每來一個(gè)計(jì)數(shù)器時(shí)鐘,計(jì)數(shù)器減1,而計(jì)數(shù)器的初始值,來自于重裝載寄存器。

重裝載寄存器(FWDGT_RLD):

wKgaomY9eYaAVRGMAABaHu93Q8g730.pngwKgZomY9eaCAClk4AAJfPNzGgew320.png

從“描述”中我們可以看出,向FWDGT_CTL寫入0xAAAA(即喂狗,詳見用戶手冊FWDGT_CTL寄存器),重裝載寄存器中的數(shù)值就會自動加載到FWDGT的計(jì)數(shù)器中。

重裝載寄存器(FWDGT_RLD)是一個(gè)12位的計(jì)數(shù)器,這就意味著重裝載最大值為65535,再結(jié)合上一節(jié)的時(shí)鐘分頻,F(xiàn)WDGT設(shè)定的最大/最小超時(shí)周期見下表:

wKgZomY9ea2AWJemAACCZdb8CSA202.pngwKgZomY9ebKAOeLxAABnxbQ4giQ363.png

注意: 當(dāng)執(zhí)行完喂狗reload操作之后,如需要立即進(jìn)入deepsleep / standby模式時(shí),必須通過軟件設(shè)置,在reload命令及deepsleep / standby模式命令中間插入(3個(gè)以上)IRC32K時(shí)鐘間隔,否則可能導(dǎo)致喂狗不成功。

7.2.4獨(dú)立看門狗的使用注意事項(xiàng)

獨(dú)立看門狗的時(shí)鐘源來自于IRC32K,這個(gè)內(nèi)部時(shí)鐘實(shí)際上不是非常的準(zhǔn)確,所以在設(shè)定看門狗重載值和分配器時(shí)需要留有一定的余量,防止應(yīng)用程序由于IRC32K頻率偏差而來不及喂狗,導(dǎo)致不必要的MCU復(fù)位。

7.3硬件設(shè)計(jì)

本實(shí)驗(yàn)我們通過海棠派開發(fā)板LED1的狀態(tài)來指示MCU復(fù)位情況,用LED2來指示喂狗的情況。

7.4代碼解析

在driver_wdgt.c中定義了獨(dú)立看門狗的配置函數(shù)drive_fwdgt_config和喂狗函數(shù)Feed_fwdgt:

C
void drive_fwdgt_config(uint16_t reload_value, uint8_t prescaler_div)
{
/* 開啟內(nèi)部32K時(shí)鐘 */
rcu_osci_on(RCU_IRC32K);
/* 等待時(shí)鐘ready */
while(SUCCESS != rcu_osci_stab_wait(RCU_IRC32K)){
}
/*配置看門狗參數(shù)*/
fwdgt_config(reload_value,prescaler_div);
/*開啟看門狗*/
fwdgt_enable();
}

void Feed_fwdgt(void)
{
/* 重裝載計(jì)數(shù)器 */
fwdgt_counter_reload();
}

以下為main函數(shù)代碼:

C
int main(void)
{
uint8_t i;
driver_init();//delay函數(shù)初始化
bsp_led_group_init();//LED初始化
bsp_led_on(&LED1);//點(diǎn)亮LED0
delay_ms(2000); //延時(shí)2s
bsp_led_off(&LED1);//熄滅LED0
drive_fwdgt_config(625,FWDGT_PSC_DIV64);//獨(dú)立看門狗配置
/*閃爍LED1 5次,并每閃爍一次進(jìn)行喂狗*/
for(i = 0;i<5;i++)
{
delay_ms(500);
bsp_led_toggle(&LED2);
Feed_fwdgt();
printf_log('Feed_fwdgt!/r/n')
}
while (1)
{
}
}

本例程main函數(shù)首先進(jìn)行了延時(shí)函數(shù)初始化,再初始化LED0和LED1,并將LED0點(diǎn)亮2s鐘后熄滅,然后配置獨(dú)立看門狗時(shí)鐘預(yù)分頻為64分頻,重載值為1000,即超時(shí)時(shí)間為625/(32K/64)= 1.25s,再每500ms翻轉(zhuǎn)一次LED1,同時(shí)進(jìn)行喂狗,最后進(jìn)入while(1)循環(huán)。


7.5實(shí)驗(yàn)結(jié)果

海棠派開發(fā)板上電后,LED2燈亮,2s鐘后熄滅,隨后LED3閃爍5次,再經(jīng)過一段時(shí)間后LED2燈滅,LED1復(fù)亮,周而復(fù)始。


關(guān)鍵字:看門狗實(shí)驗(yàn) 引用地址:【GD32H757Z海棠派開發(fā)板使用手冊】第七講 FWDG-看門狗實(shí)驗(yàn)

上一篇:【GD32F470紫藤派開發(fā)板使用手冊】第十二講 SDIO-SD卡讀寫實(shí)驗(yàn)
下一篇:【GD32H757Z海棠派開發(fā)板使用手冊】第十五講 TFT-8080電阻屏屏觸摸實(shí)驗(yàn)

小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved