STM32窗口看门狗详解

发布时间: 2024-02-27
来源: 电子工程世界

本文将介绍窗口看门狗,并通过按键模拟触发程序死机、进而触发提前唤醒中断、并复位程序。


①窗口看门狗介绍

②STM32CUBEMX配置工程文件

③代码实现

①窗口看门狗介绍

窗口看门狗用来监测由于不可预知的因素或者不可预知的逻辑条件导致程序脱离正常运行序列的软件故障。

窗口看门狗介绍之工作原理框图:

wKgaomRGRoOAFrakAAGAJ4Mz4JQ800.jpg

窗口看门狗介绍之配置寄存器:

预分频器用于将RCC传来的PCLK1时钟进行分频,配置寄存器中第7位第8位用来存放预分频器的预分频值,第0位至第6位用于存放窗口看门狗的窗口值,当计数器的值大于窗口值时喂狗会触发复位、即只有计数器的值在0x40与窗口值之间时喂狗不会触发程序复位;所以窗口值需要大于0x40、小于0x7f,否则窗口没有意义。

窗口看门狗介绍之控制寄存器:

寄存器第0至第6位用于存放计数器的计数值,计数值最大0x7f、当计数值降低到0x40时会触发提前唤醒中断,在提前唤醒中断里可以保存重要的数据或者报警,当寄存器第6位由1变0时会对程序进行复位。

②STM32CUBEMX配置工程文件

Step1:使能USART3用于调试

wKgZomRGRoOAACQ_AANh2KlcKko800.jpg

Step2:使能RCC时钟、配置时钟树

wKgaomRGRoSAJ6y_AANypdax-RE591.jpg

wKgZomRGRoWAHZiuAALX6y0n8t8407.jpg

Step3:配置按键PA0为外部输入中断、设置中断优先级

wKgZomRGRoWAS9SvAAOE2sjSFz8710.jpg

wKgaomRGRoaAAEmCAAOXEbKMjZE533.jpg

Step4:使能窗口看门狗、配置分频数、计数值、窗口值,设置中断等级

wKgZomRGRoaACeYbAAKoNU16ZDM766.jpg

计数值减小5花费1us,窗口值为95、计数值为127

wKgaomRGRoeAD-ndAAOacZbfqtI337.jpg

Step5:配置GPIO控制led,用于提前唤醒中断里报警亮灯

wKgZomRGRoiADLTuAAMuP_Ja2pc448.jpg

Step6:生成工程

wKgaomRGRoiAHkmpAAKpwjBx_ic551.jpg

wKgZomRGRomAGNdqAAKcFgMJFeI041.jpg

wKgaomRGRomALy8kAAKaVblnRy0985.jpg

③代码实现

Step1:输出重定向,记得添加头文件

wKgZomRGRoqALk3uAAPKayBOR40703.jpg

While后少了一个分号哈!!!

Step2:在窗口值以下喂狗

wKgaomRGRouAbwejAATYAw_9B5o985.jpg

Step3:重定义提前唤醒函数

wKgZomRGRouAS67iAASEwxSmTk4247.jpg

Step4:重定义外部中断函数

wKgaomRGRoyAWtnUAAR0PKb4c78352.jpg

step5:编译、日志

wKgZomRGRoyAPVdhAABbRwPlmFk158.jpg


文章来源于: 电子工程世界 原文链接

本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。