STM32看门狗详解[通俗易懂]

STM32看门狗详解[通俗易懂]看门狗的作用:防止单片机因未知原因死机或比我们预期的时间过长长时间不能响应,如果出现这种问题,看门狗就会把单片机复位独立看门狗(IWDG):时钟来源:内部低速时钟(LSI),所以用看门狗时不需要配置时钟一般配置过程:寄存器:IWDG_KR:32位寄存器,低16位有效,只写写入0xAAAA,喂狗0x5555,取消IWDG_PR、IWDG_RLR的写保护0xCCCC,启动看门狗IWDG_PR:32位寄存器,低3位有效配置分频系数,4*2^prer.

大家好,又见面了,我是你们的朋友全栈君。

看门狗的作用:防止单片机因未知原因死机或比我们预期的时间过长长时间不能响应,如果出现这种问题,看门狗就会把单片机复位

独立看门狗(IWDG):

  时钟来源:内部低速时钟(LSI),所以用看门狗时不需要配置时钟

一般配置过程:

STM32看门狗详解[通俗易懂]

寄存器:

IWDG_KR:

32位寄存器,低16位有效,只写

写入 0xAAAA,喂狗

0x5555,取消IWDG_PR、IWDG_RLR的写保护

0xCCCC,启动看门狗

IWDG_PR:

32位寄存器,低3位有效

配置分频系数,4*2^prer

IWDG_RLR:

32位寄存器,低12位有效,每次对IWDG_KR写入0xAAAA,这个值会装载到看门狗计数器中(向下记数,记到0复位)

IWDG_SR:

32位寄存器,低2位有效

位0:PVU:看门狗预分频值更新状态位,1:指示预分频正在更新,预分频器值只有在 PVU 位为 0 时才可更新。

位1:RVU:看门狗重装载值更新状态位,1:指示重装载值正在更新,重载值只有在 RVU 位为 0 时才可更新。

代码:

void iwdg_init()
{
  //IWDG_PR和IWDG_RLR有写保护,对其进行预分频和重装载值配置要先取消写保护
  IWDG->KR=0X5555;
  //配置预分频值
    //预分频值 = 4*2^prer
  IWDG->PR=0X04;    //64分频
  //配置重装载值
    //12位
  IWDG->RLR=500;
  
  //喂狗
  IWDG->KR=0XAAAA;
  //启动看门狗
  IWDG->KR=0XCCCC;
}

 窗口看门狗(WWDG):

时钟来源:APB1时钟,使用时应先使能时钟,这一点与独立看门狗不一样

会先分频4096倍,再分2^WDGTB,所以WWDG超时公式如下:
Tout=(4096 * 2^WDGTB * (窗口值低6位+1))/Fpclk1

窗口看门狗喂狗时间有上下限,上限就是上窗口值(寄存器可以进行配置,不固定),下窗口值(固定,0X3F),喂狗必须在上窗口与下窗口之间,大于上窗口喂狗或递减 寄存器到0X3F都将复位。WWDG还有一个中断(提前唤醒中断),作用是当递减寄存器到0X40时会进入中断

一般配置过程:

STM32看门狗详解[通俗易懂]

 寄存器:

WWDG_CR:

32位,只用到低8位

位7:WDGA    激活位

位6:0  :这些位用来存储看门狗计数器的值。它每隔 (4096 x 2^WDGTB) PCLK1 个周期递减一次。当它 从 0x40 滚动到 0x3FT6 清零)时会产生复位。

WWDG_CFR:

只用到低10位

位9: EWI(Early Wakeup Interrupt),提前唤醒中断,置1后计数器达到0x40会产生中断。

位8:7  :WDGTB(TIME Base ),用来分频

位6:0  :窗口置,要大于0x3f

WWDG_SR:

位0:EWIF(Early Weakeup Interrupt Flag),在中断服务程序中要置0

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132032.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 关于雅虎优化

    关于雅虎优化尽可能的减少HTTP的请求数[content]合并背景图、缓存等使用CDN(ContentDeliveryNetwork)[server]也是缓存,加速,要考虑CDN失效、CDN缓

    2022年6月30日
    19
  • 加密_摩斯密码

    加密_摩斯密码加密

    2022年4月21日
    48
  • 利用树莓派搭建 web 服务器 (个人认为是网上步骤最全,也是最新的方式了 使用 PHP7)[通俗易懂]

    利用树莓派搭建 web 服务器 (个人认为是网上步骤最全,也是最新的方式了 使用 PHP7)[通俗易懂]#前言在暑假的时候想玩玩树莓派,就买了一块树莓派3B+,结果买回来也没太玩就放在宿舍吃灰,最近突然对网站很感兴趣,于是就在网上查找资料去搭建了这个web服务器,它是使用的nginx+PHP7+typecho组成的服务器。#首先安装raspbian系统引用了树莓派实验室的下载地址,大家可以直接下载。下载链接:http://downloads.raspberrypi.org/raspbian_…

    2022年6月6日
    29
  • 安装python时出现的错误0x80072efd及0x80072f7d的解决方法

    安装python时出现的错误0x80072efd及0x80072f7d的解决方法0x80072efd:是下载不了dubuggingsymbols和debugbinaries的问题。要翻墙。或者把2个Download的安装选项取消,就可以完成了。0x80072f7d:修改了EXE文件名称安装成功感觉问题解决的十分不靠谱,感谢https://blog.csdn.net/quantum7/article/details/81738839,脑残丞相的提醒,他安装时也…

    2025年7月31日
    0
  • Deep Reinforcement learning – 2. 基于tensorflow的DDPG实现

    Deep Reinforcement learning – 2. 基于tensorflow的DDPG实现TODDeepReinforcemenlearning-2.基于tensorflow的DDPG实现基于我上一篇博客的算法介绍,使用tensorflow的代码实现,仿真环境使用gymtorcs为了快速训练出结果,我没有使用driverview图像作为输入,而是使用lowdimension传感器数据作为输入,总共29个数据,包括:-赛车速度:speedX,

    2022年6月25日
    23
  • n皇后问题c语言代码_c语言序列求和输入两个正整数m和n

    n皇后问题c语言代码_c语言序列求和输入两个正整数m和nn皇后问题研究的是如何将n个皇后放置在n×n的棋盘上,并且使皇后彼此之间不能相互攻击。(即任意两个皇后都不能处于同一行、同一列或同一斜线上).上图为8皇后问题的一种解法。给定一个整数n,返回所有不同的n皇后问题的解决方案。每一种解法包含一个明确的n皇后问题的棋子放置方案,该方案中’Q’和’.’分别代表了皇后和空位。示例:输入:4输出:[…

    2022年9月29日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号