

我们都知道硬件监视程序的用途: 它用于监视系统,防止系统崩溃以及在发生崩溃时将系统重置为重新启动.
在RTOS操作系统中,如果任务(线程)很多,高优先级任务会长时间占用CPU资源,而低优先级任务则无法长时间执行,则我们的系统存在错误. 系统.
如上所述,如果我们的线程没有崩溃,那么很长一段时间不会执行. 在这种异常情况下,我们不想重置系统,而只想执行特定的代码,那么如何避免这个问题呢?
Ⅰ关于看门狗
硬件看门狗: 使用定时器计数电路,其定时输出连接到电路的复位端子freertos 硬件定时器,并且程序将狗“馈电”到特定时间范围内的定时.

因此,当程序正常运行时,计时器一定不能溢出,并且不能产生复位信号. 如果程序失败,并且在定时周期内没有喂狗,则看门狗定时器溢出,以产生复位信号并重新启动系统.
在STM32中,有两个看门狗: 独立看门狗和窗口看门狗. 原理和功能相似,但应用场景不同.
软件看门狗: 软件看门狗在原理上类似于硬件看门狗freertos 硬件定时器,并且定期进行喂入(在时间溢出期间). 该软件喂狗的唯一方法是通过自己设计的计数.
II硬件+软件看门狗监控多任务原理
1. 使用一个监视线程(自己)监视其他多个线程;
2. 使用硬件看门狗进行自我监视.

图片:

如果我的系统中有多个应用程序线程(如上所示),我将使用监视线程(自身)来监视其他多个应用程序线程.
同时,为了防止其自身线程的异常,硬件监视程序用于对其自身进行监视. 这样,可以实现双重监视.
结合软件讨论原理
上一部分中的上述原理对于某些人可能更抽象. 然后查看本节中的代码:

监视线程(自己):

简而言之: 在监视线程(自身)中,您需要提供硬件看门狗. 软件看门狗的作用: 这是对齐计数,无论浏览是否溢出,我都将其封装到浏览功能中. 特定的狗喂食是在其他每个受监视的线程中进行的.
因此,请看一下软件看门狗将狗喂到应用程序线程之一的代码:

这只是一个简单的例子,一条狗在主线程中喂食. 等效于: 线程启动后,我需要定期喂狗. 如果您长时间不喂狗,则监视线程(自己)会发现您没有喂狗.

Ⅳ短答案的实现方法
看到这一点,我相信每个人都知道它的原理. 具体实现方法很多,可以根据实际项目需求添加相应的接口. 这是一些例子.
定义数据结构:

这里的示例是最基本的实现,例如计数器和最大超时值.
注册界面功能:

监控浏览功能界面:

以上内容只是教给您方法,具体实现,您可以根据自己的习惯和项目需求自定义开发.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-283855-1.html
干嘛不把我大汉帝国虽远必诛的经验也集成进来
这真是事实
美颜盛世韬宝唱的赞赞