www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > > 小白白學(xué)電子
[導(dǎo)讀]看門狗(watch dog)是一個(gè)定時(shí)器,可以設(shè)置一個(gè)定時(shí)時(shí)間,計(jì)時(shí)到時(shí)會把MCU復(fù)位,所以MCU必須要在定時(shí)時(shí)間到之前將計(jì)數(shù)值重置(這個(gè)動(dòng)作通常稱為喂狗)。在嵌入式系統(tǒng)中加入看門狗,可以監(jiān)測MCU是否還在正常運(yùn)行,如果軟件跑進(jìn)死循環(huán)、或者出現(xiàn)其他錯(cuò)誤,導(dǎo)致不能及時(shí)重置看門狗計(jì)時(shí)器,則時(shí)間一到MCU就會被復(fù)位,重新回到初始狀態(tài),以此跳出錯(cuò)誤狀態(tài)。

(抱歉,昨天這篇文章已經(jīng)發(fā)過,但是后來發(fā)現(xiàn)兩個(gè)錯(cuò)誤,一是訪問dog_flag變量時(shí)應(yīng)該當(dāng)作臨界段保護(hù),二是事件標(biāo)志組的代碼里置事件標(biāo)志組bit2時(shí)參數(shù)應(yīng)該是0x04而不是0x03,現(xiàn)已將兩段代碼更正,造成的不便敬請諒解)

1)看門狗基礎(chǔ)知識

看門狗(watch dog)是一個(gè)定時(shí)器,可以設(shè)置一個(gè)定時(shí)時(shí)間,計(jì)時(shí)到時(shí)會把MCU復(fù)位,所以MCU必須要在定時(shí)時(shí)間到之前將計(jì)數(shù)值重置(這個(gè)動(dòng)作通常稱為喂狗)。在嵌入式系統(tǒng)中加入看門狗,可以監(jiān)測MCU是否還在正常運(yùn)行,如果軟件跑進(jìn)死循環(huán)、或者出現(xiàn)其他錯(cuò)誤,導(dǎo)致不能及時(shí)重置看門狗計(jì)時(shí)器,則時(shí)間一到MCU就會被復(fù)位,重新回到初始狀態(tài),以此跳出錯(cuò)誤狀態(tài)。

在裸機(jī)編程時(shí),只需把喂狗操作放在主循環(huán)中,確保正常運(yùn)行時(shí)一個(gè)循環(huán)的最長時(shí)間不超過看門狗計(jì)時(shí)器的時(shí)間,看門狗就能起到監(jiān)測系統(tǒng)是否正常運(yùn)行的作用。

特別注意:不要把喂狗操作放在定時(shí)器中斷中,因?yàn)檫@樣即使主程序進(jìn)入了死循環(huán),定時(shí)器中斷仍然會定期運(yùn)行,起不到看門狗溢出的作用。

2)多任務(wù)環(huán)境中如何喂狗

在多任務(wù)環(huán)境,如多RTOS系統(tǒng)中,同時(shí)有多個(gè)任務(wù)在運(yùn)行,每個(gè)任務(wù)相相當(dāng)于一個(gè)無限循環(huán),操作系統(tǒng)在后臺調(diào)度使得它們都能運(yùn)行。如果在這種情況下,我們簡單地在每個(gè)任務(wù)的主循環(huán)中都加入喂狗操作,那么就起不到看門狗的監(jiān)測作用了。因?yàn)?,此時(shí)系統(tǒng)中只要有一個(gè)任務(wù)在正常運(yùn)行,也能起到定期喂狗的作用,即使其他任務(wù)有進(jìn)入死循環(huán)、或者其他不能跳出的錯(cuò)誤時(shí),看門狗也不能起到作用。

那么在多任務(wù)系統(tǒng)中應(yīng)該如何喂狗呢?我們知道,看門狗的目的是為了監(jiān)測錯(cuò)誤,那么我們只要將所有任務(wù)的狀態(tài)都檢查一下,如果都正常才執(zhí)行喂狗操作。

假設(shè)系統(tǒng)中有4個(gè)任務(wù),DefaultTask、Task01、Task02、Task03。我們先建立一個(gè)全局變量dog_flag用于存儲各個(gè)任務(wù)的喂狗狀態(tài);在前3個(gè)任務(wù)的主循環(huán)中,把dog_flag對應(yīng)的bit位置位,DefaultTask置位bit0、Task01置位bit1、Task02置位bit2;在最后的Task03任務(wù)中,循環(huán)檢查是否所有在使用的bit位都被置位,如果都被置位,則說明其他所有的任務(wù)的主循環(huán)都在正常運(yùn)行,那么可以喂狗;同時(shí)最后要將dog_flag清零,以用于下一次監(jiān)測置位。

簡單的代碼實(shí)現(xiàn)示例如下(注意在讀寫dog_flag的語句屬于臨界段,需要保護(hù)起來):


3)事件標(biāo)志組應(yīng)用于多任務(wù)喂狗

上述的代碼是最直觀容易理解的,而實(shí)際上,在大部分的RTOS中,有一種更優(yōu)雅的實(shí)現(xiàn)方式,那就是利用事件標(biāo)準(zhǔn)組。

我們之前講freeRTOS的時(shí)候,在事件標(biāo)志組相關(guān)的章節(jié)提到過,在事件標(biāo)志組的變量中,每個(gè)bit位表示了一個(gè)事件,正好相當(dāng)于這里我們用于監(jiān)測各個(gè)任務(wù)主循環(huán)是否執(zhí)行到的bit位。同時(shí),事件標(biāo)志組可以通知其他任務(wù),我們可以利用這個(gè)特性,在喂狗的任務(wù)中等待其他所有任務(wù)的發(fā)送的事件標(biāo)志,如果全都等到了,就喂狗并清除事件。

以freeRTOS環(huán)境為例,示例如下:

要注意一下,使用事件標(biāo)志組時(shí),由于要等到所有的事件后,才能向后執(zhí)行完一個(gè)循環(huán),所以,一般建議單獨(dú)建立一個(gè)任務(wù)用于喂狗,這個(gè)任務(wù)中不再執(zhí)行其他操作。

好了,本節(jié)的內(nèi)容就分享到這了。如果覺得有用,歡迎大家關(guān)注我的微信公眾號“小白白學(xué)電子”,更多學(xué)習(xí)資源分享:

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

在嵌入式系統(tǒng)開發(fā)中,看門狗(Watchdog Timer, WDT)是保障系統(tǒng)可靠性的核心組件,其初始化時(shí)機(jī)的選擇直接影響系統(tǒng)抗干擾能力和穩(wěn)定性。本文從硬件架構(gòu)、軟件流程、安全規(guī)范三個(gè)維度,系統(tǒng)分析看門狗初始化的最佳實(shí)踐...

關(guān)鍵字: 單片機(jī) 看門狗 嵌入式系統(tǒng)

單片機(jī)定時(shí)器通過晶振頻率來產(chǎn)生精準(zhǔn)的計(jì)數(shù)脈沖,從而實(shí)現(xiàn)微秒級別的時(shí)間控制。 單片機(jī)定時(shí)器依托于一個(gè)穩(wěn)定的計(jì)數(shù)器,該計(jì)數(shù)器與單片機(jī)上的晶振部件相連。晶振經(jīng)過12分頻后,為單片機(jī)提供穩(wěn)定且精準(zhǔn)的1MHZ脈沖。由于晶振的頻率極...

關(guān)鍵字: 單片機(jī) 定時(shí)器

編碼器?是一種傳感器,主要用于測量旋轉(zhuǎn)運(yùn)動(dòng)的角度、角速度和位移等參數(shù)。常見的編碼器類型包括增量式編碼器和絕對值編碼器,前者通過檢測脈沖的增加或減少來測量旋轉(zhuǎn)方向和距離,后者則直接輸出當(dāng)前的絕對位置信息?。

關(guān)鍵字: 編碼器? 定時(shí)器

一款語音控制的番茄時(shí)間定時(shí)器,內(nèi)置Seeed Studio XIAO ESP32S3感測和圓形顯示。用免提時(shí)間管理保持高效!

關(guān)鍵字: 定時(shí)器 ESP32S3 語音控制

【2025年3月20日, 德國慕尼黑訊】全球功率系統(tǒng)和物聯(lián)網(wǎng)領(lǐng)域的半導(dǎo)體領(lǐng)導(dǎo)者英飛凌科技股份公司(FSE代碼:IFX / OTCQX代碼: IFNNY)近日宣布,其旗下ModusToolboxTM開發(fā)平臺中的AIROC?...

關(guān)鍵字: MCU 物聯(lián)網(wǎng) 定時(shí)器

看門狗是實(shí)現(xiàn)嵌入式計(jì)算機(jī)系統(tǒng)運(yùn)行狀態(tài)監(jiān)控的一種措施 , 能夠有效提高系統(tǒng)運(yùn)行可靠性 。針對HKSP6102處理器在嵌入式計(jì)算機(jī)中的應(yīng)用 ,分析了通用看門狗的設(shè)計(jì)方法及其特點(diǎn);最后介紹了數(shù)據(jù)處理模塊的看門狗設(shè)計(jì)方法 ,基于...

關(guān)鍵字: 看門狗 嵌入式計(jì)算機(jī) 監(jiān)控

在嵌入式系統(tǒng)開發(fā)中,看門狗(Watchdog Timer, WDT)是一種重要的故障檢測和恢復(fù)機(jī)制。當(dāng)系統(tǒng)因軟件錯(cuò)誤、硬件故障或外部干擾而陷入異常狀態(tài)時(shí),看門狗能夠自動(dòng)觸發(fā)復(fù)位操作,使系統(tǒng)恢復(fù)到正常運(yùn)行狀態(tài)。本文將深入探...

關(guān)鍵字: 嵌入式系統(tǒng) 看門狗

眾所周知,說到延時(shí),很多人都會想到用軟件件來實(shí)現(xiàn),比如定時(shí)器之類的。今天就來說說用硬件來實(shí)現(xiàn)定時(shí)的方式,雖說沒有那么準(zhǔn),但是有些場合還是用得到的。

關(guān)鍵字: CD4060 定時(shí)器

如果定時(shí)器的重裝值和分頻設(shè)置不正確,會導(dǎo)致PWM輸出的頻率和占空比不準(zhǔn)確,從而產(chǎn)生誤差?1。

關(guān)鍵字: 定時(shí)器 分頻

為了保護(hù)個(gè)人信息和網(wǎng)絡(luò)設(shè)備的安全,專家們致力于開發(fā)各種安全技術(shù)和工具。其中,路由器看門狗功能成為了網(wǎng)絡(luò)安全領(lǐng)域的一大創(chuàng)新。

關(guān)鍵字: 路由器 看門狗
關(guān)閉