從一開始設計單片機程序以來我一直在問自己看門狗究竟應該如何使用?並不斷的尋找權威答案。以下談一下個人在這些年來對看門狗應用相關的一些思考和觀點,錯誤不可避免,願討論並改正。1. 什么是單片機的程序跑飛? 什么是單片機的死機?所謂的程序跑飛是指 CPU 程序寄存器PC 異常改變,從而CPU 不按預定 ...
問題 控制程序工作一段時間異常重啟 分析 經定位分析重啟原因為看門狗復位導致 解決 經排查發現在中斷服務函數中使用了FreeRTOS的系統時延函數vTaskDelay,調試發現進入vTaskDelay函數后,會在函數xTaskResumeAll中進入臨界段函數, 進而發現程序會卡死在下面代碼處: 上邊代碼表示發生一次嵌套調用時,會斷言檢查是否是中斷調用,因為vTaskDelay不支持中斷調用,所 ...
2019-04-09 15:52 0 1594 推薦指數:
從一開始設計單片機程序以來我一直在問自己看門狗究竟應該如何使用?並不斷的尋找權威答案。以下談一下個人在這些年來對看門狗應用相關的一些思考和觀點,錯誤不可避免,願討論並改正。1. 什么是單片機的程序跑飛? 什么是單片機的死機?所謂的程序跑飛是指 CPU 程序寄存器PC 異常改變,從而CPU 不按預定 ...
窗口看門狗(WWDG)用於發現由外部接口或者不可預期的邏輯操作導致的軟件故障。這些故障會導致程序中斷正常運行。當一個程序周期結束時,看門狗電路會產生一個MCU復位信號,除非在看門狗電路復位之前程序返回正常運行邏輯。當計數器減少到預設值的時候,也會產生一個復位信號。這就意味着計數器必須限制在一個指定 ...
最近在SEGGER的博客上看到一篇有關在實時操作系統使用看門狗的文章。從一個失敗的太空項目出發,分析了看門狗的作用及使用,自我感覺很有啟發,特此翻譯此文並推薦給各位同仁。為了閱讀方便,有些航天領域名詞本人添加了注釋,讀者也可自行搜索更詳細的解釋。當然限於個人水平,有不當之處懇請指正 ...
我在使用STM32F767和STM32F407VG的時候,程序跑到斷點處一會兒程序就復位了,關閉看門狗不出現這種問題。 解決方法(在初始化看門狗之前添加下面代碼): 問題原因:我通過參考手冊,確認問題出在了DBGMCU寄存器的DBG_IWDG_STOP ...
為了提搞系統的可靠性,STM32F4系列MCU有一個獨立看門狗(IWDG)和一個窗口看門狗(WWDG)。今天做的實驗是關於獨立看門狗的。 獨立看門狗使用的時鍾源是內部低速振盪器LSI。因為LSE可能沒接,HSE可能壞點,HSE耗着的時候HSI卻觀點了。。。諸多原因,LSI是最好的獨立看門狗時鍾 ...
獨立看門狗的時鍾為32k分頻 可以配置為32分頻,這樣就是1khz,方便計算 初始化后,看門狗就啟動了,不需要另外手工啟動 喂狗 但,調試的時候,看門狗也會把程序復位,這是不行的,所以 找個地方把這兩句放進去 ...
在esp32程序中freeRTOS任務運行的時候經常都會遇到看門狗復位的問題,會在日志中打印類似如下的消息: E (36942) task_wdt: Task watchdog got triggered. The following tasks did not reset ...