本文将介绍窗口看门狗,并通过按键模拟触发程序死机、进而触发提前唤醒中断、并复位程序。
①窗口看门狗介绍
②STM32CUBEMX配置工程文件
③代码实现
①窗口看门狗介绍
窗口看门狗用来监测由于不可预知的因素或者不可预知的逻辑条件导致程序脱离正常运行序列的软件故障。
窗口看门狗介绍之工作原理框图:
窗口看门狗介绍之配置寄存器:
预分频器用于将RCC传来的PCLK1时钟进行分频,配置寄存器中第7位第8位用来存放预分频器的预分频值,第0位至第6位用于存放窗口看门狗的窗口值,当计数器的值大于窗口值时喂狗会触发复位、即只有计数器的值在0x40与窗口值之间时喂狗不会触发程序复位;所以窗口值需要大于0x40、小于0x7f,否则窗口没有意义。
窗口看门狗介绍之控制寄存器:
寄存器第0至第6位用于存放计数器的计数值,计数值最大0x7f、当计数值降低到0x40时会触发提前唤醒中断,在提前唤醒中断里可以保存重要的数据或者报警,当寄存器第6位由1变0时会对程序进行复位。
②STM32CUBEMX配置工程文件
Step1:使能USART3用于调试
Step2:使能RCC时钟、配置时钟树
Step3:配置按键PA0为外部输入中断、设置中断优先级
Step4:使能窗口看门狗、配置分频数、计数值、窗口值,设置中断等级
计数值减小5花费1us,窗口值为95、计数值为127
Step5:配置GPIO控制led,用于提前唤醒中断里报警亮灯
Step6:生成工程
③代码实现
Step1:输出重定向,记得添加头文件
While后少了一个分号哈!!!
Step2:在窗口值以下喂狗
Step3:重定义提前唤醒函数
Step4:重定义外部中断函数
step5:编译、日志