STMCU小助手
发布时间:2021-12-9 11:07
|
概述# J* c9 n3 T9 \/ b4 v3 m' h 系统窗口看门狗(WWDG)用于检测软件故障的发生,通常由外部干扰或无法预料的逻辑条件引起,导致应用程序放弃其正常顺序。 看门狗电路会在编程的时间段到期时生成MCU复位,除非程序在T6位清零之前刷新倒数计数器的内容。如果在递减计数器达到窗口寄存器值之前刷新递减计数器值,也会产生MCU复位。这意味着必须在有限的窗口中刷新计数器。WWDG时钟是从APB时钟预分频的,并具有可配置的时间窗口,WWDG最适合要求看门狗在准确的时序窗口内做出反应的应用。: I* d/ V' t" V 主要特性 - @4 T: U4 c" o$ a5 A1 f 激活窗口看门狗后,如满足如下条件则重置芯片:4 x8 l+ v5 N2 \& m8 |: |* j 当递减计数器的值小于0x40时 窗口值外重新加载递减计数器 如果启动了窗口看门狗并允许中断,当递减计数器等于0x40时产生提前唤醒中断(EWI),可以被用于重装栽计数器以避免WWDG复位。 用法 如果看门狗被激活(WWDG_CR寄存器中的WDGA位置1),并且当7位递减计数器(T [6:0]位)从0x40递减到0x3F(T6被清除)时,它启动重置。 如果软件在计数器大于窗口寄存器中存储的值时重新加载计数器,则会产生复位。 在正常操作期间,应用程序必须定期在WWDG_CR寄存器中写入数据,以防止MCU复位。 仅当计数器值小于窗口寄存器值且大于0x3F时,才必须执行此操作。要存储在WWDG_CR寄存器中的值必须在0xFF和0xC0之间。) R G) n. |9 G) S) D6 Q) O( T5 z 框图
. C6 b' Q7 A | 启用看门狗 当FLASH选项字节WWDG_SW选择“软件窗口看门狗”时,看门狗在复位后始终被禁用。通过将WWDG_CR寄存器中的WDGA位置1可以启用它,然后只能通过复位将其禁用。4 c6 k8 n& r, x; d R 当FLASH选项字节WWDG_SW选择“硬件窗口监视程序”时,在复位后始终启用监视程序,因此不能将其禁用。 递减计数器用法 该计数器可以自由运行,即使禁用了看门狗也可以递减计数。 当看门狗使能时,必须将T6bit置1以防止立即产生复位(即T[6:0]大于0x3F); 为防止复位,当计数器的值小于窗口寄存器的值且大于0x3F时,必须重新装入递减计数器。 下图描述了过程:: v h& t+ U( ], ^ ! X; L9 j% ?4 {+ _3 v2 |- J( b" a' I
; Z$ U6 N: D7 [& ?" y$ E 提前唤醒中断(EWI) 6 X8 X" ? z# P+ U8 t: t) n 通过将WWDG_CFR寄存器中的EWI位置1,可以使能EWI中断。当递减计数器达到值0x40时,将在重置芯片之前生成EWI中断,相应的中断服务程序(ISR)应该重新装入WWDG计数器以避免WWDG复位,然后触发所需的操作。通过将WWDG_SR寄存器的EWIF位写为0,可以清除EWI中断。当无法处理EWI中断时,例如由于较高优先级任务中的系统锁定,最终会产生WWDG重置。 计算超时时间 1 \/ Y5 P4 ?$ H/ S
0 v7 Z( W% K" h) ? 如:当APB=48MHz,WDGTB[1:0]=3,T[5:0]=63时; 8 D. N3 L9 T4 F; F( z! B
寄存器7 P* c R( J1 @3 a/ j7 J& g 寄存器可通过半字(16位)或字(32位)进行访问。 控制寄存器(WWDG_CR) 偏移地址:0x000/ q; O- C8 l: z$ R% q 复位值:0x0000 007F ! u: V) R$ Q) t) e BIT7:WDGA(r/s),启用看门狗。由软件置1,只能通过复位让硬件清0。0:禁用看门狗、1:启用看门狗1 Z; s" i( a c1 r" W9 K7 `! I BIT 6:0:T[6:0](r/w),7位计数器(msb to lsb),当值从0x40减到0x3F时产生复位(T6bit被清除)+ C3 u9 r. N8 b6 T. }: j 5 G: T8 ?( M, H m& v 配置寄存器(WWDG_CFG)# t; Q% N2 `, ~$ O 偏移地址:0x004. I/ f- ~9 V2 j6 U 复位值:0x0000 007F bit 13:11 WDGTB[2:0] (r/w),时基6 ~, U) o' ^2 `8 D* ~5 ~ 000: CK计数器时钟 (PCLK 分频4096) 除以1 001: CK计数器时钟 (PCLK 分频4096) 除以2 010: CK计数器时钟 (PCLK 分频4096) 除以 4 011: CK计数器时钟 (PCLK 分频4096) 除以8& ~2 E6 t3 D2 B 100: CK计数器时钟 (PCLK 分频4096) 除以16 101: CK计数器时钟 (PCLK 分频4096) 除以32 110: CCK计数器时钟 (PCLK 分频4096) 除以648 E7 Y8 R* ~7 M 111: CCK计数器时钟 (PCLK 分频4096) 除以128 bit9 EWI (r/s), 提前唤醒中断位,置1时,只要计数器值到0x40就会发生中断。该中断仅在硬件复位后清楚。 5 ]6 m% p( v4 X0 `' |, J4 I bit6:0 W[6:0](r/w),7位窗口值,用来与递减计数器比较的窗口值。8 u. \2 M) W+ r" k/ ~! W3 n% ~ % F3 `6 L9 @/ K" E3 _9 J: A 状态寄存器(WWDG_SR)# ?6 \ }: }4 F, z/ N u, P. l ' _5 _/ L; l; {2 X$ M; H 偏移值:0x008% T$ M0 E" H% d: p7 ~+ h3 C9 o 复位值:0x0000 0000 ) Z# @) X P, E5 Q- f$ q1 p bit0 EWIF(rc_w0) 提前唤醒中断标志,当计数器达到值0x40时,此位由硬件置1。 必须通过软件将其写入“ 0”来清除它。 写“ 1”无效。 如果未启用中断,则该位置1。 ( N5 @0 x* `- J1 b2 D) {" V0 w 实验示例7 p* u) a' R# D x8 B( B2 K 1、开启调试接口、HSE 8 E+ z4 f$ W) t% H( q8 J' k
: W* P. Z7 n m0 y- t
5 E- @6 G0 T0 W 2、 PA0设置为GPIO_Input,在NVIC中使能看门狗中断" j7 i/ }! W6 w$ X9 _" D% o$ d7 K6 G . ~6 W- {# _( k: P! H& b: B
3、使能USART1,使用异步模式,波特率115200,8,none,1; K, f6 ^& }% N
% W2 P) J! I0 ?5 @$ c( R- C3 d* x2 O 4、激活WWDG,设置分频系数128,窗口值(64~127)=64,计数值=127 ! E* N n( c2 [5 f7 M0 r% q8 e4 H
1 G6 n; g7 R" b+ b# O/ A0 }9 u1 W 5、设置时钟树,HCLK=64MHz、PCLK=32MHz, X6 K4 m/ r/ l$ ]* n3 u
6、利用上面的公式,计算当计数值T[6:0]到0x40的时间,引发EWI中断进入喂狗的时间 ) L N2 H# p6 c5 { n0 W =1048.576ms- {9 k3 W7 j- Z# W: Y( V 即每1048ms喂一次狗。 7、设置工程文件属性,生成代码。5 c t" ]" i7 Y* I
! ]3 E# S0 ~: j! \
$ p8 Y7 ?* r3 h8 n6 y
6 }' w0 }4 L9 d6 Z5 ^4 ~% ?( X 代码 ( a! |1 f3 r2 h e- J r 1、在USART.c文件中加入串口打印代码( {6 V9 g, H D; v
2、在main.c文件中加入开机打印代码," ]1 m, E, _( A1 e" K+ `' [8 u4 S * s( `8 r# }' z( b1 I
加入EWI中断代码' g: N3 z6 G. A% {8 Z8 ?% ] v# q 5 q6 N t% g' J2 }: b9 ?
3、编译,烧录之后就看到效果# S: ~# G" n3 J0 c! o+ q' T' x
- J9 H0 o( }8 q- v$ E, ]) O9 v ( S4 R( p" `$ C; U* d% ]' B |
实战经验 | 基于STM32G0B1的全桥移相+同步整流PWM解决方案
DMA 原理从 0 到 1:为什么它能解放 CPU?一文讲透 DMA 的工作流程
【福利三:逢7发帖赢大礼】8、基于STM32G070板子的Ymodem串口协议IAP Bootloader开发
【福利三:逢7发帖赢大礼】7、基于STM32G070板子TF卡的FATFS移植
【福利三:逢7发帖赢大礼】6、基于STM32G070板子spiflash的FATFS移植
【福利三:逢7发帖赢大礼】5、基于STM32G070板子IRDA红外遥控接收解码
【福利三:逢7发帖赢大礼】4、基于STM32G070板子SPI flash 移植SFUD库
【福利三:逢7发帖赢大礼】基于STM32G070板子的uart shell移植设计
【福利三:逢7发帖赢大礼】3、基于STM32G070板子的YModem串口协议通信
【福利三:逢7发帖赢大礼】2、基于STM32G070板子的OLED移植U8G2库
微信公众号
手机版