STMCU小助手
发布时间:2022-5-6 09:21
|
1 概述 1.1 资源概述 开发板:ST官方NUCLEO-F103RB开发板 CUBEMX版本:1.3.0 MDK版本:5.23 主控芯片型号:STM32F103RBT6
1.2 引脚资源分配
1.3 窗口看门狗概述 窗口看门狗通常被用来监测,由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在T6位变成0前被刷新,看门狗电路在达到预置的时间周期时,会产生一个MCU复位。在递减计数器达到窗口寄存器数值之前,如果7位的递减计数器数值(在控制寄存器中)被刷新, 那么也将产生一个MCU复位。这表明递减计数器需要在一个有限的时间窗口中被刷新。 WWDG主要特性 ● 可编程的自由运行递减计数器 ● 条件复位 ─ 当递减计数器的值小于0x40,(若看门狗被启动)则产生复位。 ─ 当递减计数器在窗口外被重新装载,(若看门狗被启动)则产生复位。 ● 如果启动了看门狗并且允许中断,当递减计数器等于0x40时产生早期唤醒中断(EWI),它可以被用于重装载计数器以避免WWDG复位。 1.4 实现功能 1、窗口看门狗功能。 2、使用HAL的窗口回调函数EWI,在0X40点喂狗。 3、while(1)设置LED灯闪烁,间隔时间1S。 4、当及时喂狗,没有窗口看门狗复位产生时,LED会不停的闪烁。 5、当没有及时喂狗,系统会不停复位,导致LED2灯常亮。 2 软件开发 2.1 CUBEMX配置 计数器时钟分频设为8,窗口值设为113,计数器设置为127(最大7位1111111)。计数器的值必须大于窗口值。使能早期唤醒中断。
2.2 WWDG原理框图和时序图 原理框图如下,三个门电路从左到右分别为与门,或门和与门。
时序图如下,依据CUBEMX的配置可以得到三个点的值
最早允许刷新的时间计算
最晚允许刷新时间(超时时间)计算
也就是程序不得早于14.336ms进行刷新,不得晚于65.536ms进行刷新。否则系统将会产生复位。在窗口刷新喂狗示意图如下。
2.3 程序设计 在此次试验中,我们并不使用计算得到的时间去执行喂狗操作,我们采用EWI功能函数HAL_WWDG_EarlyWakeupCallback()。这个中断函数在当向下计数器记到0X40时将会生效(产生复位0x3F的上一个状态),我们在此函数中进行喂狗即可。 1、使用CUBEMX生成代码,系统会自动生成WWDG的相关初始化函数;
2、将LED灯初始化,亮灯。
3、编写while(1)函数,每隔一秒钟闪烁LED灯。
4、编写回调函数EWI。
3、实验结果 将程序编译后,下载如官方开发板中。单板LED灯每隔1S进行闪烁。
将喂狗代码注释掉后,再编译下载,LED灯常亮,系统不停复位,
|
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
OpenSTLinux 6.1发布:M33-TD加持+安全升级,STM32MPU开发效率翻倍!
【经验分享】STM32CubeIDE汉化
手把手教你VSCode搭建STM32开发环境
RTOS在STM32中的应用
微信公众号
手机版