STMCU小助手
发布时间:2022-4-9 23:07
|
看门狗介绍 介绍:看门狗其实就是一个定时器,给他设置一个定时值,它会逐渐递减,递减到0后就会进行芯片复位,在看门狗定时器还没到达0时重新给他赋值的这个操作就叫喂狗。其实不管是单片机这样,大多数带看门狗的芯片实现都是这样的。 作用:防止程序发生死循环,或者程序跑飞。 STM32看门狗介绍 STM32包含两种开门狗: 窗口看门狗(WWDG) 独立开门狗(IWDG) 两者区别是窗口开门狗如果超时没有喂狗是触发中断,而独立开门狗是直接进行芯片复位。 时钟来源: 独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。 窗口看门狗(WWDG)由从APB1时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。 使用场合: IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。 WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。 IWDG功能描述: 在键寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗,此时计数器开始从其复位值 0xFFF递减计数。当计数器计数到末尾0x000时,会产生一个复位信号(IWDG_RESET)。 无论何时,只要在键寄存器IWDG_KR中写入0xAAAA,IWDG_RLR中的值就会被重新加载到计数器,从而避免产生看门狗复位。 IWDG_PR和IWDG_RLR寄存器具有写保护功能。要修改这两个寄存器的值,必须先向IWDG_KR寄存器中写入0x5555。以不同的值写入这个寄存器将会打乱操作顺序,寄存器将重新被保护。重装载操作(即写入0xAAAA)也会启动写保护功能。 状态寄存器指示预分频值和递减计数器是否正在被更新。 IWDG超时时间: F1系列:
F4系列:
由表可知,F1系列LSI给看门狗的时钟频率是40KHz,F4系列是32KHz。 超时时间计算公式: 超时时间Tout = 4 * 2^PR * (重载值 + 1) / LSI 重载值取值范围:0~4095 以F1为例,4分频时所对应的PR位为0,重载值为0时是最短的超时时间,套用公式后: 4 * 2 ^ 0 * (0 + 1) / 40000HZ = 0.0001s = 0.1ms 当重载值为4095时是最大超时时间,套用公式: 4 * 2 ^ 0 (4095 + 1) / 40000HZ = 0.4096s = 409.6ms STM32Cube配置设置 以F1为例,开启看门狗:
配置时钟:
然后生成代码就可以了。 注意: 生成的IWDG初始化函数MX_IWDG_Init已经将看门狗启动了,如果不想这么早启动看门狗,可以将MX_IWDG_Init往后放。 |
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
OpenSTLinux 6.1发布:M33-TD加持+安全升级,STM32MPU开发效率翻倍!
【经验分享】STM32CubeIDE汉化
手把手教你VSCode搭建STM32开发环境
RTOS在STM32中的应用
微信公众号
手机版