STM32学习笔记之独立看门狗(IWDG)的使用
来源:互联网 发布:ubuntu ant 编辑:程序博客网 时间:2024/05/22 06:42
对STM32任何模块使用前都要对其初始化、首先就是初始化外设时钟,可以简单看系统时钟章节关于外设时钟,看数据手册如下:
看门狗由独立内部40M时钟驱动,所以不需要我们在初始化时钟配置寄存器。
读数据手册可以得知看门狗模块使用的系统LSI时钟,初始化配置之前要设置预分配寄存器IWDG_PR,以及设置IWDG_RLR两个寄存器的值,由于寄存器有写保护,根据数据手册可知:
所以在设置之前寄存器之前必须先对IWDG_KR(键寄存器)再写入0x5555,修改寄存器的值 。接下来看预分频寄存器:
预分因子主要和看门狗的超时时间有关 看手册可知:
(这里我没有深究最大值的用处),接着我们看自动装载寄存器:
设置IWDG_PR和IWDG_RLR的初值。
我们计算一下看门狗的喂狗时间(看门狗溢出时间)计算公式:
Tout=((4*2^prer)*rlr)/40
其中Tout就是看门狗溢出时间(单位ms),prer是看门狗时钟预分频值 (IWDG_PR值),范围为0~7,rlr位看门狗重载值(IWDG_RLR)。
比如我们设置prer为4, rlr的值为625,我们就可以计算得到 Tout=64*625/40=1000ms,这样,看门狗的溢出时间就是1S,只要在这一秒钟 内,有一次吸入0XAAAA到IWDG_KR,就不会导致看门狗复位。
所以初始化函数如下:
void IWDG_Init(4,625)
{
IWDG->KR=0X5555; //解除寄存器保护
IWDG->PR=prer; // 写入初始化分频值
IWDG->RLR=rlr; // 写入自动装载值
IWDG->KR=0XAAAA; //开启寄存器保护
IWDG->KR=0XCCCC; //启动看门狗
}
初始化完成后 看门狗开始逐渐递减计数到0000并复位 ,所以在复位之前要不断喂狗,
即不断重新加载数据到IWDG_RLR中防止复位
喂狗函数如下:
void IWDG_Feed(void)
{
IWDG->KR=0XAAAA;
}
至此基本的独立看门狗的配置完成 初始化后 在适当地方调用喂狗程序即可。
0 0
- STM32学习笔记之独立看门狗(IWDG)的使用
- stm32 独立看门狗 IWDG
- STM32F10x 学习笔记之独立看门狗IWDG 模块
- stm8的独立看门狗iwdg
- STM32F10x 学习笔记7(独立看门狗IWDG 模块)
- cortex_m3_stm32嵌入式学习笔记(五):独立看门狗实验(IWDG)
- [HAL库学习之路]5.IWDG-独立看门狗
- STM32 独立看门狗IWDG 与窗口看门狗WWDG
- STM32独立看门狗IWDG与窗口看门狗WWDG研究
- STM32 独立看门狗IWDG和窗户看门狗WWDG
- STM32学习——STM32 独立看门狗的使用
- STM32F4独立看门狗IWDG
- 独立看门狗IWDG
- STM32学习笔记一一独立看门狗
- stm32学习笔记(五)独立看门狗
- stm32 独立看门狗学习
- STM32的IWDG使用
- STM32之独立看门狗
- 快速排序和快速幂取模
- 分布式系统开发常见问题-1. session的复制与共享 2. 分布式缓存的设计
- HDU1720 A+B Coming
- 近期总结和展望
- Mybatis传多个参数
- STM32学习笔记之独立看门狗(IWDG)的使用
- Thinking in C++: 第1章 对象=特性+行为
- 递归实现二分法
- 深入理解ThreadPoolExecutor
- 聊聊高并发系统之限流特技-1
- ubuntu 删除virbr0
- myeclipse2014安装aptana
- JHTP小结_第九章_面向对象编程-继承(Inheritance)
- Tomcat源码分析--总体架构