MCU看门狗

目录

一、独立看门狗(IWDG)

[1、IWDG 主要作用](#1、IWDG 主要作用)

[2、IWDG 主要特性](#2、IWDG 主要特性)

3、编程控制

4、注意地方

二、窗口看门狗(WWDG)

1、窗口看门狗作用:

2、窗口看门狗产生复位信号有两个条件:

[3、WWDG 框图](#3、WWDG 框图)

[4、WWDG 将要复位的时间](#4、WWDG 将要复位的时间)

5、编程控制


一、独立看门狗(IWDG)

1、IWDG 主要作用

独立看门狗 (IWDG) 由其专用低速时钟 (LSI) 驱动,因此即便在主时钟发生故障时仍然保持工作状态。 IWDG 最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。

2、IWDG主要特性

(1) 32位(只使用了12位)自由运行递减计数器

(2) 时钟由独立 RC 振荡器(LSI )提供(可在待机和停止模式下运行);

(3) 当递减计数器值达到 0x000 时产生复位(如果看门狗已激活);

3、编程控制

(1) 初始化

看门狗超时时间由递减计数器重装载值和时钟预分频器共同决定。例如,STM32F407,LSI=32K,64分频,递减计数器重装载值为500,则超时时间 = 1/32K *64 * 500 = 1s 。

(2) 喂狗

在main的while(1)处喂狗:

要在超出时间之内喂狗,否则会触发复位,一般都是在main的while(1)循环内喂狗。

4、注意地方

(1) 某些执行时间特别长的程序,或者while(1)要多喂狗,避免超出时间导致复位;

(2) 在进入低功耗 的时候,如果没有按时喂狗,一样会触发复位,所以要注意喂狗时间或者定时喂狗。

二、窗口看门狗(WWDG)

1、窗口看门狗作用

窗口看门狗 (WWDG) 时钟由 APB1时钟经预分频后提供,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。 WWDG 最适合那些要求看门狗在精确计时窗口起作用的应用程序。通常被用来监测由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。

2、窗口看门狗产生复位信号有两个条件

(1) 当递减计数器的数值从 0x40 减到 0x3F 时(T6 位跳变到 0);

(2) 当喂狗的时候计数器的值大于 W[6:0]时,此数值在 WWDG_CFR 寄存器定义。

上述的两个条件详细解释是,当计数器的值减到 0x40 时还不喂狗的话,到下一个计数就会产生复位,++++这个值称为窗口的下限值,是固定的值++++ ,不能改变。这个跟独立看门狗类似,不同的是窗口看门狗的计数器的值在减到某一个数之前喂狗的话也会产生复位,这个值叫++++窗口的上限,上限值 W[6:0]由++++ ++++用户设置++++。窗口看门狗计数器的上限值和下限值就是窗口的含义,喂狗也必须在窗口之内,否则就会复位。

3、WWDG 框图

A:WWDG 有一个来自 RCC 的 PCLK1 输入时钟 ,经过一个 4096 的分频器(4096 分频在设计时已经设定死了, 图中并没有给出来, 但我们可以通过查看寄存器 WWDG_CFR 的 WDGTB 位的描述知道);

B: 经过一个分频系数可选(1、2、4、8)的可编程预分频器提供时钟给一个 7 位递减计数器;

C:下限值:0x40 就是下限值,递减计数器达到这个值就会产生复位。T6 位就是 WWDG_CR 寄存器的位 6,即递减计数器 T[6:0]的最高位;

D:上限值:W[6:0] 是 WWDG_CFR 寄存器的低 7 位,用于与递减计数器 T[6:0]比较的窗口值,也就是我们说的上限值,由用户设置。

4、WWDG 将要复位的时间

①当T[6:0]>W[6:0]是不允许刷新T[6:0]的值,即不允许喂狗,否则会产生复位。

②只有在 W[6:0]<T[6:0]< 0x3F 这个时间可以喂狗,这就是喂狗的窗口时间。

③当 T[6:0]=0x3F,即 T6 位为 0 这一刻,也会产生复位。

④计算窗口看门狗的超时公式:

TWWDG: WWDG 超时时间(单位为 ms);

TPCLK1: APB1 以 ms 为单位的时钟间隔(即单位为 1 /KHz);

WDGTB:经过APB1 的分频系数;

T[5:0]:窗口看门狗的计数器低 6 位(T6 位固定 1,范围 0x7F~0x40,对应值 0x3F~0x00);

根据以上公式,计算一下对应当重装值为 0x40 , 分频系数 WDGTB=3 时对应,假 设 TPCLK1= 42MHz , 下 一 个 计 数 将 发 生 复 位 , 到 达 下 个 复 位 的 时 间 是 :1/(42MHz)*4096*2^3*(0+1) =780.19us ;类似地,可以得到在 42MHz 时钟下不同分频值那么可以得到最小-最大超时时间表如表所示:

表格举例说明:当 WDGTB 等于0的时候,重装载值从0x40跳到0x3F,即1步,就会产生复位,这也是看门狗超时的最小时间;当0x7F跳到0x3F,即64步,就会产生复位,这也是看门狗超时的最大时间;

5、编程控制

(1) 初始化

设置计数器值为 0x7F,窗口寄存器为 0x5F,分频数为 8,然后可由前面的公式得到窗口上限时间 Twwdg=4096×8×(0x7F-0x5F)/42MHz=24.98ms,窗口下限时间 Twwdg=4096×8×(0x7F-0x3F) /42MHz=49.97ms,即喂狗的窗口区间为 24.98~49.97ms。

(2) 使用中断的方式喂狗

程序使用的是EWIF(提前唤醒中断标志)来喂狗,即当计数器值达到0x40时 此位由硬件置1。它必须由软件通过写入0来清零。写入1不起作用。++++如果不使能中断,此位也会被置1++++。在窗口看门狗的中断服务函数,通过该函数来喂狗,喂狗要快,否则当窗口看门狗计数器值减到 0X3F 的时候,就会引起软复位了。在中断服务函数里面也要将状态寄存器的 EWIF 位清空。

十三、DAC

十四、IIS

十五、CAN

相关推荐
scan19 小时前
单片机串口接收状态机STM32
stm32·单片机·串口·51·串口接收
Qingniu0110 小时前
【青牛科技】应用方案 | RTC实时时钟芯片D8563和D1302
科技·单片机·嵌入式硬件·实时音视频·安防·工控·储能
深圳市青牛科技实业有限公司11 小时前
【青牛科技】应用方案|D2587A高压大电流DC-DC
人工智能·科技·单片机·嵌入式硬件·机器人·安防监控
Mr.谢尔比12 小时前
电赛入门之软件stm32keil+cubemx
stm32·单片机·嵌入式硬件·mcu·信息与通信·信号处理
LightningJie12 小时前
STM32中ARR(自动重装寄存器)为什么要减1
stm32·单片机·嵌入式硬件
西瓜籽@13 小时前
STM32——毕设基于单片机的多功能节能窗控制系统
stm32·单片机·课程设计
远翔调光芯片^1382879887215 小时前
远翔升压恒流芯片FP7209X与FP7209M什么区别?做以下应用市场摄影补光灯、便携灯、智能家居(调光)市场、太阳能、车灯、洗墙灯、舞台灯必看!
科技·单片机·智能家居·能源
极客小张16 小时前
基于STM32的智能充电桩:集成RTOS、MQTT与SQLite的先进管理系统设计思路
stm32·单片机·嵌入式硬件·mqtt·sqlite·毕业设计·智能充电桩
m0_7393128719 小时前
【STM32】项目实战——OV7725/OV2604摄像头颜色识别检测(开源)
stm32·单片机·嵌入式硬件
嵌入式小章19 小时前
基于STM32的实时时钟(RTC)教学
stm32·嵌入式硬件·实时音视频