10.1實(shí)驗(yàn)內(nèi)容
通過本實(shí)驗(yàn)主要學(xué)習(xí)以下內(nèi)容:
獨(dú)立看門狗的原理
獨(dú)立看門狗功能介紹
實(shí)現(xiàn)獨(dú)立看門狗功能
10.2實(shí)驗(yàn)原理
10.2.1看門狗的原理
一般來說,搭配MCU的產(chǎn)品都需要有長(zhǎng)期運(yùn)行的需求,特別像一些工業(yè)設(shè)備,可能要求運(yùn)行個(gè)幾年都不關(guān)機(jī),但誰也不能保證在這幾年里,MCU里面的代碼不出任何問題,更何況自然環(huán)境中還存在很多電磁干擾、靜電等,都可能會(huì)導(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ù)值會(huì)在每一個(gè)計(jì)數(shù)器時(shí)鐘來的時(shí)候減1,如果這個(gè)計(jì)數(shù)值減到0,看門狗就會(huì)內(nèi)部給MCU一個(gè)復(fù)位信號(hào)使MCU復(fù)位。所以應(yīng)用程序中必須每隔一段時(shí)間要對(duì)看門狗的計(jì)數(shù)值進(jìn)行一次重載(看門狗計(jì)數(shù)器恢復(fù)到初始值),這樣看門狗的計(jì)數(shù)器就不會(huì)減到0了,而當(dāng)程序出現(xiàn)卡死的情況時(shí),由于不再對(duì)看門狗計(jì)數(shù)器重載,看門狗就會(huì)讓MCU復(fù)位,使MCU從卡死狀態(tài)恢復(fù)出來。這種工作方式是不是就像一條狗,你要每隔一段時(shí)間去喂它,否則它就不給你“看門”了,“看門狗”的名字,就是這么來的。
GD32F303片上有兩個(gè)看門狗外設(shè)——獨(dú)立看門狗(FWDGT)和窗口看門狗(WWDGT),本章我們只講獨(dú)立看門狗。
10.2.2獨(dú)立看門狗(FWDGT)的時(shí)鐘
前面講到,看門狗的計(jì)數(shù)值在每一個(gè)計(jì)數(shù)器時(shí)鐘來的時(shí)候減1,那么這個(gè)時(shí)鐘是什么呢,我們來看一下GD32F303ZE的時(shí)鐘樹:
從時(shí)鐘樹可以看到,F(xiàn)WDGT的時(shí)鐘來源于IRC40K,這是GD32F303的內(nèi)部時(shí)鐘,典型的頻率值是40KHz。但要注意,這個(gè)IRC40K不是直接連到FWDGT計(jì)數(shù)器的,而是需要經(jīng)過一個(gè)預(yù)分頻器,這個(gè)分頻器大小通過FWDGT_PSC進(jìn)行設(shè)定。
預(yù)分頻寄存器(FWDGT_PSC):
如設(shè)定PS[2:0]為001b,那么計(jì)數(shù)器的時(shí)鐘頻率就為40K/8 = 5KHz,即每隔200us計(jì)數(shù)值減1。
10.2.3獨(dú)立看門狗(FWDGT)的重裝載
說完時(shí)鐘,我們來說下FWDGT的計(jì)數(shù)器和重裝載。計(jì)數(shù)器就是按照前面說的,每來一個(gè)計(jì)數(shù)器時(shí)鐘,計(jì)數(shù)器減1,而計(jì)數(shù)器的初始值,來自于重裝載寄存器。
重裝載寄存器(FWDGT_RLD):
從“描述”中我們可以看出,向FWDGT_CTL寫入0xAAAA(即喂狗,詳見用戶手冊(cè)FWDGT_CTL寄存器),重裝載寄存器中的數(shù)值就會(huì)自動(dòng)加載到FWDGT的計(jì)數(shù)器中。
重裝載寄存器(FWDGT_RLD)是一個(gè)12位的計(jì)數(shù)器,這就意味著重裝載最大值為65535,再結(jié)合上一節(jié)的時(shí)鐘分頻,F(xiàn)WDGT設(shè)定的最大/最小超時(shí)周期見下表:
注意: 當(dāng)執(zhí)行完喂狗reload操作之后,如需要立即進(jìn)入deepsleep / standby模式時(shí),必須通過軟件設(shè)置,在reload命令及deepsleep / standby模式命令中間插入(3個(gè)以上)IRC40K時(shí)鐘間隔,否則可能導(dǎo)致喂狗不成功。 |
10.2.4獨(dú)立看門狗的使用注意事項(xiàng)
獨(dú)立看門狗的時(shí)鐘源來自于IRC40K,這個(gè)內(nèi)部時(shí)鐘實(shí)際上不是非常的準(zhǔn)確,所以在設(shè)定看門狗重載值和分配器時(shí)需要留有一定的余量,防止應(yīng)用程序由于IRC40K頻率偏差而來不及喂狗,導(dǎo)致不必要的MCU復(fù)位。
10.3硬件設(shè)計(jì)
本實(shí)驗(yàn)我們通過紅楓派開發(fā)板LED0的狀態(tài)來指示MCU復(fù)位情況,用LED1來指示喂狗的情況。
10.4代碼解析
10.4.1獨(dú)立看門狗初始化和喂狗函數(shù)
在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)部40K時(shí)鐘 */ rcu_osci_on(RCU_IRC40K); /* 等待40K時(shí)鐘ready */ while(SUCCESS != rcu_osci_stab_wait(RCU_IRC40K)){ } /*配置看門狗參數(shù)*/ fwdgt_config(reload_value,prescaler_div); /*開啟看門狗*/ fwdgt_enable(); } void Feed_fwdgt(void) { /* 重裝載計(jì)數(shù)器 */ fwdgt_counter_reload(); } |
10.4.2main函數(shù)實(shí)現(xiàn)
以下為main函數(shù)代碼:
C int main(void) { uint8_t i; delay_init();//delay函數(shù)初始化 bsp_led_group_init();//LED初始化 bsp_led_on(&LED0);//點(diǎn)亮LED0 delay_ms(2000); //延時(shí)2s bsp_led_off(&LED0);//熄滅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(&LED1); Feed_fwdgt(); } while (1) { } } |
本例程main函數(shù)首先進(jìn)行了延時(shí)函數(shù)初始化,再初始化LED0和LED1,并將LED0點(diǎn)亮2s鐘后熄滅,然后配置獨(dú)立看門狗時(shí)鐘預(yù)分頻為64分頻,重載值為1000,即超時(shí)時(shí)間為625/(40K/64)= 1s,再每500ms翻轉(zhuǎn)一次LED1,同時(shí)進(jìn)行喂狗,最后進(jìn)入while(1)循環(huán)。
10.5實(shí)驗(yàn)結(jié)果
紅楓派開發(fā)板上電后,LED0燈亮,2s鐘后熄滅,隨后LED1閃爍5次,再經(jīng)過一段時(shí)間后LED1燈滅,LED0復(fù)亮,周而復(fù)始。
上一篇:【GD32F470紫藤派開發(fā)板使用手冊(cè)】第三講 EXTI-按鍵中斷檢測(cè)實(shí)驗(yàn)
下一篇:【GD32F303紅楓派開發(fā)板使用手冊(cè)】第三十講 CAN -CAN通信實(shí)驗(yàn)
推薦閱讀最新更新時(shí)間:2025-06-22 12:28



設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- Microchip 升級(jí)數(shù)字信號(hào)控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導(dǎo)體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲(chǔ)html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測(cè)試
- 在隔離應(yīng)用中使用 AD7740
- DC2373A,使用 LT8641 65V、3.5A 微功率同步降壓靜音開關(guān)的演示板
- Tda7385 4 X 30W 四橋車載收音機(jī)放大器的典型應(yīng)用
- 時(shí)間控制板 帶均衡
- 手持無線電通訊器
- 使用 Analog Devices 的 AD8033AKS 的參考設(shè)計(jì)
- #第五屆立創(chuàng)電子設(shè)計(jì)大賽#QCC5124藍(lán)牙高保真播放器
- 使用 ROHM Semiconductor 的 BD5244 的參考設(shè)計(jì)
- AM2G-0518SH30Z 18V 2 瓦 DC/DC 轉(zhuǎn)換器的典型應(yīng)用
- 基于STUSB4500的即用型USB PD控制器評(píng)估板
- PCIe M.2接口測(cè)試的現(xiàn)狀、挑戰(zhàn)與泰克解決方案
- ABB在中國(guó)推出面向電子制造業(yè)的兩大全新機(jī)器人系列
- ABB在中國(guó)推出PoWa協(xié)作機(jī)器人系列
- 西門子 NX 新增 AI 助手等多項(xiàng)功能
- 貿(mào)澤即日起開售適用于數(shù)據(jù)中心和網(wǎng)絡(luò)應(yīng)用的 全新TE Connectivity QSFP 112G SMT連接器
- ABB推出三大全新機(jī)器人系列,強(qiáng)化中國(guó)機(jī)器人市場(chǎng)領(lǐng)導(dǎo)地位
- 新思科技關(guān)于美國(guó)解除近期對(duì)華出口限制的聲明
- Wolfspeed 1700 V MOSFET 技術(shù),助力重塑輔助電源系統(tǒng)的耐用性和成本
- 英飛凌大中華區(qū) 2025 生態(tài)創(chuàng)新峰會(huì),究竟探討了哪些創(chuàng)新與生態(tài)合作?
- Microchip攜手Nippon Chemi-Con和NetVision 打造日本汽車市場(chǎng)首個(gè)ASA-ML攝像頭開發(fā)生態(tài)系統(tǒng)
- 美《出口管理?xiàng)l例》讓浪潮苦不堪言,斷供事件沒有贏家
- 疫情之下,我國(guó)的存儲(chǔ)芯片現(xiàn)狀如何?
- 愛立信拿下95個(gè)5G合同,超華為躍升第一
- Xbox主管:手機(jī)暢玩主機(jī)游戲不會(huì)取代游戲主機(jī)與PC
- 榮耀趙明:5G手機(jī)進(jìn)入爆發(fā)階段 進(jìn)一步占位細(xì)分市場(chǎng)
- 三星發(fā)布Odyssey G9 2021游戲顯示器:用Quantum MiniLED技術(shù)
- 魅族18系列將支持2K + 120幀雙開:后續(xù)OTA推送或升級(jí)
- 新型無人機(jī)成為熱門,俄“忠誠(chéng)僚機(jī)”等來了!
- 小米10S 官宣定檔 3 月 10 日:搭驍龍 870 處理器
- iOS 15 可從 Android 12 中學(xué)到六件事