历史上的今天
返回首页

历史上的今天

今天是:2024年11月16日(星期六)

2019年11月16日 | HAL库 STM32CubeMX教程五----看门狗(独立看门狗,窗口看门狗)

2019-11-16 来源:eefocus

前言:   


今天我们来学习看门狗的配置与函数,看门狗可以有效解决程序的跑飞,在使用过程中比较常见,是防止芯片故障的有效外设,我们一起来学习下HAL库 STM32CubeMX的独立看门狗,靠窗看门狗的使用。本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用


所用工具:


1、芯片: STM32F407ZET6


2、STM32CubeMx软件


3、IDE: MDK-Keil软件


4、STM32F1xx/STM32F4xxHAL库 


知识概括:


通过本篇博客您将学到:


STM32CubeMX创建看门狗例程


独立看门狗,靠窗看门狗 工作原理



看门狗


在由单片机构成的微型计算机系统中单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环;或者因为用户配置代码出现BUG,导致芯片无法正常工作,出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的模块或者芯片,俗称“看门狗”(watchdog) 


简单说:看门狗的本质就是定时计数器,计数器使能之后一直在累加 而喂狗就是重新写入计数器的值,时计数器重新累加,


如果在一定时间内没有接收到喂狗信号(表示MCU已经挂了),便实现处理器的自动复位重启(发送复位信号)


STM32的内置看门狗


STM32内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗、窗口看门狗)可以用来检测和解决由软件错误引起的故障。当计数器达到给定的超时值时,触发一个中断(仅适用窗口看门狗)或者产生系统复位。


独立看门狗(IWDG)由专用的低速时钟(LSI)驱动(40kHz),即使主时钟发生故障它仍有效。独立看门狗适合应用于需要看门狗作为一个在主程序之外 能够完全独立工作,并且对时间精度要求低的场合。

窗口看门狗由从APB1时钟(36MHz)分频后得到时钟驱动。通过可配置的时间窗口来检测应用程序非正常的过迟或过早操作。  窗口看门狗最适合那些要求看门狗在精确计时窗口起作用的程序。

IWDG-独立看门狗


工程创建


1、设置RCC


设置高速外部时钟HSE 选择外部时钟源

2、配置IWDG

IWDG时钟预分频系数  4分频   

计数器重装载值  4095   RLR


超出(溢出)时间计算:


Tout=((4×2^PRER) ×RLR)/LSI时钟频率


对应不同预分频系数的PRER值:

3、时钟源设置

1选择外部时钟HSE 8MHz   

2PLL锁相环倍频72倍

3系统时钟来源选择为PLL

4设置APB1分频器为 /2

32的时钟树框图  如果不懂的话请看《【STM32】系统时钟RCC详解(超详细,超全面)》


4、项目文件设置

1 设置项目名称

2 设置存储路径

3 选择所用IDE

5、创建工程文件


然后点击GENERATE CODE  创建工程


配置下载工具


新建的工程所有配置都是默认的  我们需要自行选择下载模式,勾选上下载后复位运行

HAL库独立看门狗函数库讲解:


看门狗初始化函数


HAL_IWDG_Init(IWDG_HandleTypeDef *hiwdg)

喂狗函数:


HAL_IWDG_Refresh(IWDG_HandleTypeDef *hiwdg)

举例:  HAL_IWDG_Refresh(&hiwdg);   //看门狗喂狗

使用该函数定时喂狗即可


WWDG-窗口看门狗


窗口看门狗的定义


窗口看门狗跟独立看门狗一样,也是一个递减计数器不断的往下递减计数,当减到一个固定值 0x3F 时还不喂狗的话,产生复位,这个值叫窗口的下限,是固定的值,不能改变。


窗口看门狗之所以称为窗口,就是因为其喂狗时间是在一个有上下限的范围内(计数器减到某个值~计数器减到0x3F),在这个范围内才可以喂狗,可以通过设定相关寄存器,设定其上限时间(但是下限是固定的0x3F)

1计数器的初始值

2 是我们设置的上窗口(W[6:0]值

3是下窗口值(0x3F)

窗口看门狗计数器的值只有在2和3 之间(上窗口和下窗口之间)才可以喂狗


窗口看门狗中断:


并且窗口看门狗还可以使能中断,如果使能了提前唤醒中断,系统出现问题,喂狗函数没有生效,那么在计数器由减到0x40  (0x3f+1)   的时候,便会先进入中断,之后才会复位,你也可以在中断里面喂狗


WDGG窗口看门狗配置

1.点击WWDG

2.

WWDG时钟预分频系数  8

WWDG上窗口值 0x5F

WWDG计数器值 : 0x7F

设置看门狗提前唤醒中断

3. 

使能窗口看门狗中断

其余配置与独立看门狗相同配置即可


HAL库独立窗口狗函数库讲解:


看门狗初始化:


HAL_WWDG_Init(WWDG_HandleTypeDef *hwwdg)

喂狗:


HAL_WWDG_Refresh(WWDG_HandleTypeDef *hwwdg)

看门狗中断处理函数:


HAL_WWDG_IRQHandler(WWDG_HandleTypeDef *hwwdg)

功能:  判断中断是否正常,并进入中断回调函数


看门狗中断回调函数:


 __weak HAL_WWDG_EarlyWakeupCallback(hwwdg);

在HAL库中,每进行完一个中断,并不会立刻退出,而是会进入到中断回调函数中,


看门狗中断运行完成之后,便会进入看门狗的中断回调函数


例程实现:


本例程实现LED点亮延时300ms闪烁


在main.c下方添加中断回调函数


void HAL_WWDG_EarlyWakeupCallback(WWDG_HandleTypeDef *hwwdg)

{

  /* Prevent unused argument(s) compilation warning */

  UNUSED(hwwdg);

  HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_15);  //LED翻转  --闪烁表示喂狗成功

  HAL_WWDG_Refresh(hwwdg);      //喂狗

}

推荐阅读

史海拾趣

AINFO Inc公司的发展小趣事

为了进一步提升技术水平和市场竞争力,AINFO Inc公司积极寻求与国际知名企业的技术合作。通过与国外企业的合作,公司引进了先进的技术和管理经验,提升了自身的研发能力和管理水平。同时,公司也加快了国际化发展的步伐,拓展了海外市场,提升了品牌知名度。

Herley New York公司的发展小趣事

随着电子行业的快速发展,AINFO Inc公司积极响应国家产业政策,加快了产业升级的步伐。公司引进了先进的生产设备和技术,实现了智能制造和数字化转型。通过优化生产流程和提高生产效率,公司降低了成本,提高了产品质量,进一步巩固了市场地位。

FEIG ELECTRONIC公司的发展小趣事

自1997年以来,FEIG ELECTRONIC开始加速其全球扩张的步伐。通过不断的技术创新和市场推广,FEIG的产品逐渐覆盖了全球多个行业,包括物流、零售、医疗、制造等。FEIG凭借其高质量的产品和卓越的服务,赢得了全球客户的广泛认可,逐渐发展成为全球RFID领域的领军企业。

Blue Giga公司的发展小趣事

收购后,Blue Giga在芬兰埃斯波的研发中心继续发挥其技术创新的优势,不断推出新产品和解决方案。同时,借助Silicon Labs的全球销售网络,Blue Giga的产品开始进入更多国家和地区的市场。公司的业务范围不断扩大,应用领域也更加广泛,涵盖了工业自动化、消费类电子产品、汽车等多个领域。

这五个故事描绘了Blue Giga从创立到发展的过程,展示了其在电子行业中的努力和成就。虽然每个故事都基于事实,但具体细节可能因缺乏详细资料而有所简化或推测。如需更深入的了解,建议查阅Blue Giga的官方资料或相关新闻报道。

台湾远翔(Feeling Technology)公司的发展小趣事

乔光电子在全球拥有广泛的销售网络,不仅在国内的上海和深圳设有销售公司,还在韩国、印度、新加坡、巴西、意大利等国家设立了销售据点。随着市场的不断拓展和技术的不断创新,乔光电子的销售额从2015年的2200万元增长到2022年的27000万元,实现了跨越式发展。未来,乔光电子计划进一步扩展导热导电胶生产线业务,并可能涉足传感器和安规电容领域。同时,公司还将继续加大研发投入,提升产品性能和质量,为全球客户提供更加优质、可靠的电子产品和服务。

ACP Optoelectronic Technology Co Ltd公司的发展小趣事

在国内市场取得一定成绩后,ACP Optoelectronic Technology Co Ltd开始积极拓展国际市场。公司积极参加国际电子展会和技术交流活动,与海外企业建立合作关系,拓展销售渠道。经过几年的努力,ACP Optoelectronic Technology Co Ltd的产品已经成功打入多个国际市场,公司也逐渐发展成为一家具有国际影响力的光电企业。

问答坊 | AI 解惑

从学校内网数据库里得到的关于sim300的应用资料分享一下!

从学校内网数据库里得到的关于sim300的应用资料分享一下!…

查看全部问答>

Freescale 的 VPU 视频解码后怎么显示到指定的窗口控件上

我用Freescale Mx27 中的VPU进行 视频的编解码 ,解码后如何将视频帧显示到指定的窗口控件中呢,          …

查看全部问答>

黄文中wince视频教程文件为什么不完整

msdn webcasts 黄文中 老师讲的 《Windows Embedded从入门到精通系列课程(3):Windows CE 内存泄漏的检测和防止 (Level 300) 》 视频文件为什么不完整,谁有完整的啊? http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=zh ...…

查看全部问答>

运放稳定性-(第五第六部分)

本帖最后由 dontium 于 2015-1-23 12:49 编辑 第五部分-单电源缓冲器的实际设计 第六部分-电容性负载稳定性 …

查看全部问答>

MSP430开发总结

1.#i nclude<>指要在编辑器设定目录下,#i nclude\"\"指的是在当前工程目录下。2.要调用另一个文件中的函数,要把这个函数文件放到当前工程目录下,并且在工程中添加此文件。3.命名中不能有-,比如:byq-ee会认为是错误的,要用下划线。4.用IAR ...…

查看全部问答>

应用分析II:读取模拟数据时同步数字写入

要实现在读取模拟数据时同步进行数字写入[1],可执行如下步骤: 1.      在一个信道增益队列中使用任意给定的条目 2.      取出数字数据,然后对所有未使用的位做掩码处理,方法是通过与127 ...…

查看全部问答>

直流速度vs. RMS噪声

直流速度vs. RMS噪声 单通道,在60Hz(50Hz)频率下工作。 直流规格中包括1PLC和5PLC噪声。 Function:功能 Aperture:时间间隔 Digits:位数   RMS噪声,量程的ppm RMS噪声计算器: 将2.5דRMS噪声”加到“量程的ppm”(例如,1 ...…

查看全部问答>

双DSP的JTAG连接问题

小弟布了一个双DSP板,SPI的四根线直接相连。板子焊好后,两个DSP不能同时JTAG连接,但是单独连接是可以的,请大侠们帮助,非常感谢,非常感谢!…

查看全部问答>

【MSP430周盘点2】盘点令人手软SEED-EXP430F5529开发板和急速膨胀的资源库

TI MSP430F5529培训【学习有礼】已经过了两周,论坛只有两个网友完成了学习拿到了开发板。 TI MSP430F5529培训【学习有礼】第一期获奖信息公布! https://bbs.eeworld.com.cn/thread-366972-1-1.html TI MSP430F5529培训【学习有礼】第二期 htt ...…

查看全部问答>

c2000 launchpad连接到电脑后提示一个未知的USB设备

我的c2000 launchpad连接到电脑后提示一个未知的USB设备,这是什么情况?…

查看全部问答>