STM32学习--看门狗与低功耗
什么是看门狗
简单来讲:看门狗是用来防止程序跑飞的计时器,在计时器记数结束前进行“喂狗”来将计数器复位,不然计数到0是看门狗就会将程序复位
STM32F4提供的看门狗资源
独立看门狗(IWDG)
此器件具有两个嵌入式看门狗外设,具有安全性高、定时准确及使用灵活的优点。两个看门狗外设(独立和窗口)均可用于检测并解决由软件错误导致的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。
独立看门狗 (IWDG) 由其专用低速时钟 (LSI) 驱动,因此即便在主时钟发生故障时仍然保持 工作状态。
IWDG 最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时 间精度要求较低的场合。
IWDG 主要特性
● 自由运行递减计数器
● 时钟由独立 RC 振荡器提供(可在待机和停止模式下运行)
● 当递减计数器值达到 0x000 时产生复位(如果看门狗已激活)
IWDG 功能说明
当通过对关键字寄存器 (IWDG_KR) 写入值 0xCCCC 启动独立看门狗时,计数器开始从复位 值 0xFFF 递减计数。当计数器计数到终值 (0x000) 时会产生一个复位信号(IWDG 复位)。
任何时候将关键字 0xAAAA 写到 IWWDG_KR 寄存器中,IWDG_RLR 的值就会被重载到计 数器,从而避免产生看门狗复位。
PR和PLR写访问保护
IWDG_PR 和 IWDG_RLR 寄存器具有写访问保护。若要修改寄存器,必须首先对 IWDG_KR 寄存器写入代码 0x5555。而写入其他值则会破坏该序列,从而使寄存器访问保护再次生 效。这意味着重装载操作(即写入 0xAAAA)也会启动写保护功能。状态寄存器指示预分频值和递减计数器是否正在被更新。
IWDG框图分析
操作主要看KR寄存器,写入值 0xCCCC 启动独立看门狗0X5555解除写保护,再写入0xAAAA进行喂狗(计数器重置),RLR寄存器写入12位重装载值,SR存RVU:看门狗计数器重载值更新(0位) PVU:看门狗预分频器值更新(1位)
IWDG寄存器
关键字寄存器 (IWDG_KR)
位 31:16 保留,必须保持复位值。
位 15:0 KEY[15:0]:键值 (Key value)(只写位,读为 0000h)
必须每隔一段时间便通过软件对这些位写入键值 0XAAAA,否则当计数器计数到 0 时,看门狗
会产生复位。
写入键值 0X5555 可使能对 IWDG_PR 和 IWDG_RLR 寄存器的访问
写入键值 0XCCCC 可启动看门狗(选中硬件看门狗选项的情况除外)
预分频器寄存器 (IWDG_PR)
位 31:3 保留,必须保持复位值。
位 2:0 PR[2:0]:预分频器 (Prescaler divider)
这些位受写访问保护,需要通过KR寄存器解除。通过软件设置这些位来选择计数器时钟的预分频
因子。若要更改预分频器的分频系数,IWDG_SR 的 PVU 位必须为 0。
000:4 分频
001:8 分频
010:16 分频
011:32 分频
100:64 分频
101:128 分频
110:256 分频
111:256 分频
分频越多频率越低一个计数周期越长
重载寄存器 (IWDG_RLR)
用来存计数值
状态寄存器 (IWDG_SR)
位 1 RVU:看门狗计数器重载值更新 (Watchdog counter reload value update) 可通过硬件将该位置 1 以指示重载值正在更新。当在 VDD 电压域下完成重载值更新操作后 (需要多达 5 个 RC 40 kHz 周期),会通过硬件将该位复位。重载值只有在 RVU 位为 0 时才可更新。用来计数值记录更新
位 0 PVU:看门狗预分频器值更新 (Watchdog prescaler value update)
可通过硬件将该位置 1 以指示预分频器值正在更新。当在 VDD 电压域下完成预分频器值更新 操作后(需要多达 5 个 RC 40 kHz 周期),会通过硬件将该位复位。预分频器值只有在 PVU 位为 0 时才可更新
IWDG程序配置
1、取消PR和RLR写保护
2、向PR写入预分频值
3、使能看门狗
4、喂狗
总结
独立看门狗时钟由LSI提供,所以使用时不需要开时钟线.