日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

FreeRTOS实验_独立看门狗监视多线程

發布時間:2025/3/21 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 FreeRTOS实验_独立看门狗监视多线程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.首先隨意創建幾個線程,如下圖:


2.然后就要思考了,怎么樣實現如果其中一個線程死掉了,就不喂狗得以讓系統重啟?

??????? 其實,我們可以反過來想一下,什么情況下才喂狗得以讓系統正常運行?答案是,所有線程都活著的時候。

??????? 那么我們就讓所有線程每隔一段時間上報一次“我還活著”事件給監視程序,當監視程序發現其中一個線程在這段時間內沒有上報“我還活著”事件時就停止喂狗。

?????? 我們用事件組來達到,這一目的,如下圖:

????? ?


3.接下來,我們為每個線程都可以定義一個事件標志,如下圖:

????? ?


4.我們現在可以封裝一個函數,當某個線程調用這個函數的時候,該線程就上報“我還活著”事件給監視程序,如下圖:

????? ?

5.萬事俱備,我們現在只欠有一個監視程序了,如果收到所有線程上報“我還活著”事件,就喂狗。

??????? 我們此時思考一下,這個監視程序肯定不能使獨立的線程,因為這涉及到該線程也可能死掉的情況。

??????? 思前想后,得到有種方案,定時器或者軟件定時器。

??????? 我個人比較偏向于使用軟件定時器。因為使用軟件定時器可以不占用硬件資源;況且也不是要時間很精確地喂狗,只要在復位之前能喂一下狗就夠了。

??????? 創建軟件定時器,如下圖:

????? ?


6.監視的主體有了,接下來我們可以寫一下監視過程了,一旦所有線程都發送“我還活著”事件,就立即喂狗,如下圖:

????? ?


7.好了,可以開啟,定時器和獨立看門狗了,如下圖:

????? ?


8.嗯,既然每秒監視一次線程嘛,那么當然所有線程都要保證在一秒之內上報自己還活著啦!如下圖:

????? ?


???? ?

????? ?

??????? 總是,不要讓線程輪轉一次超過看門狗復位時間。。。當然你也可以到處去調用thread_iwdg_refresh()去喂狗,我是不喜歡這么做的。


OK,這樣多線程獨立看門狗的運用方法就寫完了。

總結

以上是生活随笔為你收集整理的FreeRTOS实验_独立看门狗监视多线程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。