历史上的今天
返回首页

历史上的今天

今天是:2025年01月23日(星期四)

正在发生

2021年01月23日 | 基于STM32、FreeRTOS实现硬件看门狗+软件看门狗监测多任务的方法

2021-01-23 来源:eefocus

我们都知道硬件看门狗的目的:是用来监测系统,防止系统死机,并在死机的情况下使系统复位重启。


在RTOS操作系统中,如果任务(线程)较多,出现高优先级任务长时间占用CPU资源,低优先级任务长时间得不到执行这种想象,那么我们的系统就是具有Bug的系统。


如上描述,假如我们的线程没有死机,只是长时间得不到执行。在这种异常情况下,我们又不希望系统复位,只希望执行特定代码,那我们该如何来避免这种问题呢? 


关于看门狗

硬件看门狗:利用一个定时器计数电路,其定时输出连接到电路的复位端,程序在一定时间范围内对定时“喂狗”。


因此程序正常工作时,定时器总不能溢出,也就不能产生复位信号。如果程序出现故障,不在定时周期内喂狗,就使得看门狗定时器溢出产生复位信号并重启系统。


在STM32中,有两个看门狗:独立看门狗和窗口看门狗。原理和功能都类似,只是应用场景不一样。


软件看门狗:软件看门狗和硬件看门狗原理类似,都是定期(在时间溢出之内),对其喂狗。只是软件喂狗的方式是通过自身设计的计数来实现。


硬件+软件看门狗监测多任务的原理

1.利用一个监测线程(自身),来监测其它多个线程;

2.利用硬件看门狗来监测自身。


如图:

图片


假如我系统中有多个应用线程(如上图),我就利用一个监测线程(自身),来监测其它多个应用线程。


同时,为了防止自身线程异常,利用一个硬件看门狗来监测自身。这样就可以做到双重监测的作用。



结合软件来讲原理

上一节上述的原理可能对于有些人来说,是比较抽象的。那么这一节来看看代码:


监测线程(自身):

图片


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



那么,再看软件看门狗对其中一个应用线程喂狗的代码:

图片

这里只是简单的举例,一个主线程里面的喂狗。相当于:我线程启动之后,就需要定时喂狗。如果这里长时间不喂狗,那么监测线程(自身)就会发现你没有喂狗。


简答的实现方法

看到这里,相信大家都知道其原理了。具体实现的方式方法很多种,可根据自己实际项目需要,添加相应的接口。这里举例几点吧。


定义一个数据结构:

图片

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



注册接口函数:

图片


监测浏览函数接口:

图片


以上只是教大家方法,具体的实现,可自己根据自己习惯,项目需求来定制化开发。


推荐阅读

史海拾趣

Chyao Shiunn Electronic Industrial Ltd公司的发展小趣事

在追求经济效益的同时,Chyao Shiunn也注重履行社会责任。公司积极参与公益事业,为当地社区的发展做出贡献。同时,公司还注重环境保护和可持续发展,通过采用环保材料和节能减排技术等方式降低生产过程中的环境污染。这些举措不仅提升了公司的社会形象,也为公司的长远发展奠定了坚实基础。

请注意,这些故事都是虚构的,并不针对任何真实存在的公司。在现实中,每个公司的成长和发展都有其独特的故事和经历。如果您需要了解特定公司的真实发展历程,建议查阅相关资料或咨询相关人士。

Autotrol公司的发展小趣事

随着全球水资源日益紧张和水质问题的日益突出,水处理行业迎来了巨大的发展机遇。Autotrol公司凭借其在控制系统方面的独特优势和完善的企业管理体系,成功进军水处理领域。公司开发了一系列高端水处理设备和技术,为全球客户提供专业的水处理解决方案。同时,Autotrol还不断推出创新的水处理产品和服务,满足了客户对高效、环保、节能的需求。

Daniel Woodhead公司的发展小趣事

随着公司业务的不断拓展,Daniel Woodhead公司意识到人才是企业发展的核心。因此,公司加大了对研发团队的投入,引进了一批业界顶尖的技术人才。这些人才的加入不仅为公司带来了更多的创新思路,还提高了整体的技术水平。在团队的共同努力下,公司不断推出具有竞争力的新产品,进一步巩固了市场地位。

康奈特(CNNT)公司的发展小趣事

在光学镜片领域,产品质量是企业的生命线。康奈特深知这一点,因此从原材料采购到生产制造的每一个环节都建立了严格的品控体系。公司引进了先进的检测设备和技术手段,对每一片镜片都进行严格的检测和筛选。这种对质量的执着追求不仅赢得了消费者的信赖和认可,也为公司赢得了良好的口碑和市场份额。

台湾诚阳(BC)公司的发展小趣事

在电子行业的激烈竞争中,台湾诚阳(BC)公司凭借其对技术的敏锐洞察和持续创新,成功研发出一款具有颠覆性的电子产品。这款产品不仅具有高性能和稳定性,还集成了多项前沿技术,满足了市场对于高效、便捷的需求。凭借这一创新产品,台湾诚阳迅速在市场中脱颖而出,赢得了众多客户的青睐。

Electronic公司的发展小趣事

AMD,曾经一度陷入困境的半导体公司,近年来实现了逆袭。AMD通过持续的技术创新和市场竞争策略的调整,成功在处理器和显卡市场取得了重要份额。AMD的产品性能不断提升,价格也更加亲民,赢得了消费者的广泛认可。同时,AMD还积极与游戏厂商和硬件厂商合作,推出了多款定制化的产品和解决方案。这些努力使得AMD在激烈的市场竞争中逐渐崭露头角。

问答坊 | AI 解惑

stm32F429 接W5500 使用SPI的问题求助

使用stm32f429 的SPI5接W5500,调用了SPI5的DMA通道 设置为服务器,PC为客户端。 程序使用的是官方下载的驱动,修改了一下驱动,支持DMA。 配置上,SPI的配置都是cubemx的默认配置,4分频(22.5M),所有SPI引脚无上下拉,速度等级都是最快 ...…

查看全部问答>

在刚过去的十月,智能家居产业发生了一件里程碑事件。

由 550 家科技公司组成并致力于开发物联网开放标准的国际组织 CSA 连接标准联盟在十月初宣布,Matter 1.0 技术规范正式发布,认证程序同时开放。自此以后,来自物联网生态各个环节的联盟成员公司自此拥有了一套完整解决方案,为市场提供能够跨 ...…

查看全部问答>

ESP8266搭建环境导入工程编译失败

我买了个ESP8266模块,搭建了开发环境,导入了一个工程,编译出错,如图 请问高手,如何解决?谢谢! …

查看全部问答>

有没有人做过高斯白噪声叠加一个正弦信号的仿真工程,这是细胞自动化高斯白噪声

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 功率级设计的散热注意事项

在任何电力电子转换器中,热设计都是一项重要的考虑因素。热设计经优化后,工程师能够将 GaN 用于各种功率级别、拓扑和应用中。此应用手册论述了 TI LMG341XRxxx GaN 功率级系列非常重要的权衡标准和注意事项,包括 PCB 布局、热界面、散热器选择和 ...…

查看全部问答>

全桥逆变的问题请教

本帖最后由 灞波儿奔 于 2022-11-16 08:48 编辑 请教一个全桥逆变的电路,下图是并网的电路,左边是电网,右边的全桥逆变,这个-200接起来什么意思?     …

查看全部问答>

请问JY134G9是哪家的液晶屏,这是我下载的资料中出现的一个型号,网上查不到是哪家的

请问JY134G9是哪家的液晶屏,这是我下载的资料中出现的一个型号,网上查不到是哪家的,所以问问大家。 …

查看全部问答>

闲置电源适配器改装成可调电源

分享的一位UP主的作品,闲置电源适配器改装成可调电源,有感兴趣的可以搞起来!     …

查看全部问答>

【创龙科技全志A40i开发板】TL7606I模块测试

## 前 言 本文主要介绍基于全志科技A40i(ARM Cortex-A7)处理器的8/16通道AD采集开发案例,使用核芯互联CL1606/CL1616AD芯片,亦适用于ADI AD7606/AD7616。CL1606/CL1616与AD7606/AD7616软硬件兼容。 > 备注: > > (1)创龙科技TL7606I ...…

查看全部问答>

招聘 软件开发工程师(嵌入式)

浙江南都电源动力股份有限公司(股票代码:300068)面向智慧储能、数据中心、工业后备和绿色出行四大应用领域,提供以锂离子电池和铅电池为核心的产品、系统集成及服务,同时打造了“锂电池循环产业链”和“铅电池循环产业链” ...…

查看全部问答>