历史上的今天
今天是:2025年01月23日(星期四)
2021年01月23日 | 基于STM32、FreeRTOS实现硬件看门狗+软件看门狗监测多任务的方法
2021-01-23 来源:eefocus
我们都知道硬件看门狗的目的:是用来监测系统,防止系统死机,并在死机的情况下使系统复位重启。
在RTOS操作系统中,如果任务(线程)较多,出现高优先级任务长时间占用CPU资源,低优先级任务长时间得不到执行这种想象,那么我们的系统就是具有Bug的系统。
如上描述,假如我们的线程没有死机,只是长时间得不到执行。在这种异常情况下,我们又不希望系统复位,只希望执行特定代码,那我们该如何来避免这种问题呢?
硬件看门狗:利用一个定时器计数电路,其定时输出连接到电路的复位端,程序在一定时间范围内对定时“喂狗”。
因此程序正常工作时,定时器总不能溢出,也就不能产生复位信号。如果程序出现故障,不在定时周期内喂狗,就使得看门狗定时器溢出产生复位信号并重启系统。
在STM32中,有两个看门狗:独立看门狗和窗口看门狗。原理和功能都类似,只是应用场景不一样。
软件看门狗:软件看门狗和硬件看门狗原理类似,都是定期(在时间溢出之内),对其喂狗。只是软件喂狗的方式是通过自身设计的计数来实现。
1.利用一个监测线程(自身),来监测其它多个线程;
2.利用硬件看门狗来监测自身。
如图:

假如我系统中有多个应用线程(如上图),我就利用一个监测线程(自身),来监测其它多个应用线程。
同时,为了防止自身线程异常,利用一个硬件看门狗来监测自身。这样就可以做到双重监测的作用。
上一节上述的原理可能对于有些人来说,是比较抽象的。那么这一节来看看代码:
监测线程(自身):

简单来说:在监测线程(自身)之中,需要对硬件看门狗进行喂狗。软件看门狗的角色:在这里就是对齐计数,浏览是否溢出,我把它封装成一个浏览函数。具体的喂狗就在其他各个被监测的线程中。
那么,再看软件看门狗对其中一个应用线程喂狗的代码:

这里只是简单的举例,一个主线程里面的喂狗。相当于:我线程启动之后,就需要定时喂狗。如果这里长时间不喂狗,那么监测线程(自身)就会发现你没有喂狗。
看到这里,相信大家都知道其原理了。具体实现的方式方法很多种,可根据自己实际项目需要,添加相应的接口。这里举例几点吧。
定义一个数据结构:

这里举例,是实现最基础的东西,比如计数器,最大超时值等。
注册接口函数:

监测浏览函数接口:

以上只是教大家方法,具体的实现,可自己根据自己习惯,项目需求来定制化开发。
下一篇:关于STM32时钟配置的那些坑
史海拾趣
|
使用stm32f429 的SPI5接W5500,调用了SPI5的DMA通道 设置为服务器,PC为客户端。 程序使用的是官方下载的驱动,修改了一下驱动,支持DMA。 配置上,SPI的配置都是cubemx的默认配置,4分频(22.5M),所有SPI引脚无上下拉,速度等级都是最快 ...… 查看全部问答> |
|
由 550 家科技公司组成并致力于开发物联网开放标准的国际组织 CSA 连接标准联盟在十月初宣布,Matter 1.0 技术规范正式发布,认证程序同时开放。自此以后,来自物联网生态各个环节的联盟成员公司自此拥有了一套完整解决方案,为市场提供能够跨 ...… 查看全部问答> |
|
有没有人做过高斯白噪声叠加一个正弦信号的仿真工程,这是细胞自动化高斯白噪声 module CellularAutomata#( parameter INIT_VEC = 32'b0100_1000_0001_0010_0100_1000_0001_0010, parameter RULE_VEC = 32'b0000_1100_0100_0111_0000_1100_0000_0110, N = 32 )(   ...… 查看全部问答> |
|
在任何电力电子转换器中,热设计都是一项重要的考虑因素。热设计经优化后,工程师能够将 GaN 用于各种功率级别、拓扑和应用中。此应用手册论述了 TI LMG341XRxxx GaN 功率级系列非常重要的权衡标准和注意事项,包括 PCB 布局、热界面、散热器选择和 ...… 查看全部问答> |
|
请问JY134G9是哪家的液晶屏,这是我下载的资料中出现的一个型号,网上查不到是哪家的 请问JY134G9是哪家的液晶屏,这是我下载的资料中出现的一个型号,网上查不到是哪家的,所以问问大家。 … 查看全部问答> |
|
## 前 言 本文主要介绍基于全志科技A40i(ARM Cortex-A7)处理器的8/16通道AD采集开发案例,使用核芯互联CL1606/CL1616AD芯片,亦适用于ADI AD7606/AD7616。CL1606/CL1616与AD7606/AD7616软硬件兼容。 > 备注: > > (1)创龙科技TL7606I ...… 查看全部问答> |
|
浙江南都电源动力股份有限公司(股票代码:300068)面向智慧储能、数据中心、工业后备和绿色出行四大应用领域,提供以锂离子电池和铅电池为核心的产品、系统集成及服务,同时打造了“锂电池循环产业链”和“铅电池循环产业链” ...… 查看全部问答> |




