STMCU小助手
发布时间:2022-4-9 23:07
|
看门狗介绍+ T, s7 j3 e! V7 l N1 q' R 介绍:看门狗其实就是一个定时器,给他设置一个定时值,它会逐渐递减,递减到0后就会进行芯片复位,在看门狗定时器还没到达0时重新给他赋值的这个操作就叫喂狗。其实不管是单片机这样,大多数带看门狗的芯片实现都是这样的。 4 V+ N0 C I* E& s8 I+ { 作用:防止程序发生死循环,或者程序跑飞。5 b! h3 {+ o+ {7 A6 w' l$ y 4 H: O$ g. Y+ k t1 t STM32看门狗介绍 STM32包含两种开门狗:* @1 V; K, f3 `8 h+ F2 S % {! x& O! `# n& E: ?4 r 窗口看门狗(WWDG)- |4 o. Z) x/ W, H 独立开门狗(IWDG). w0 ]! L& k) _+ S 两者区别是窗口开门狗如果超时没有喂狗是触发中断,而独立开门狗是直接进行芯片复位。 时钟来源:( L/ Q$ j! w u, B6 ~8 E V+ ?% { 2 G# b; Q. ^: g 独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。 # w" `4 i6 r# u' _7 I$ o 窗口看门狗(WWDG)由从APB1时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。 使用场合: 2 m p: I& ^% g. Q3 ?2 t1 E1 g. _9 W* L IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。" e2 B, p& }, q/ P WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。6 I2 {, W# q x8 ~/ [/ I# ~7 b IWDG功能描述:$ M; |8 F, B1 \7 s 在键寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗,此时计数器开始从其复位值/ K/ g* a4 M9 N. r8 E. [ 0xFFF递减计数。当计数器计数到末尾0x000时,会产生一个复位信号(IWDG_RESET)。 无论何时,只要在键寄存器IWDG_KR中写入0xAAAA,IWDG_RLR中的值就会被重新加载到计数器,从而避免产生看门狗复位。 6 O' b: g8 N/ j& d. S1 R# L IWDG_PR和IWDG_RLR寄存器具有写保护功能。要修改这两个寄存器的值,必须先向IWDG_KR寄存器中写入0x5555。以不同的值写入这个寄存器将会打乱操作顺序,寄存器将重新被保护。重装载操作(即写入0xAAAA)也会启动写保护功能。 状态寄存器指示预分频值和递减计数器是否正在被更新。- D8 x- Z0 X" ?/ ? IWDG超时时间:2 r7 U4 P& Z8 q$ k' q: l 6 ^ r+ ^% N( C, L! E7 T! \! ] F1系列: ( p: [# E5 O6 r5 M3 e
F4系列: 1 _5 p2 Z% B% v
; i, x0 J0 D9 r) p" g 由表可知,F1系列LSI给看门狗的时钟频率是40KHz,F4系列是32KHz。5 G& t* D# d& X' N1 B7 J* H 超时时间计算公式: ; f7 ?" u7 d4 }$ P( Q4 q& \ 超时时间Tout = 4 * 2^PR * (重载值 + 1) / LSI 重载值取值范围:0~4095" R$ J4 u' Q3 e* B 以F1为例,4分频时所对应的PR位为0,重载值为0时是最短的超时时间,套用公式后:$ \2 ~& A4 A2 l U0 o/ G 4 * 2 ^ 0 * (0 + 1) / 40000HZ = 0.0001s = 0.1ms 7 ]8 Y$ }; \5 h( s" ~0 x/ C 当重载值为4095时是最大超时时间,套用公式:2 y$ A: w* t" K( F5 I8 z( F# k 4 * 2 ^ 0 (4095 + 1) / 40000HZ = 0.4096s = 409.6ms . k; c* y, o. G STM32Cube配置设置 以F1为例,开启看门狗:
+ p6 l" I7 v0 s# L5 ]( l" i 配置时钟:0 t2 I1 B9 w1 L ; a& b: n* |+ I! V/ ?
然后生成代码就可以了。 注意: 生成的IWDG初始化函数MX_IWDG_Init已经将看门狗启动了,如果不想这么早启动看门狗,可以将MX_IWDG_Init往后放。2 Z/ r" c0 Y3 n* a3 d 9 H3 H# \8 L( p! E $ b5 J8 V Q; ?% h* _ |
【经验分享】STM32语音识别的智能蓝牙音箱(源程序+原理图+PCB+设计说明书+PPT)
想找个ST芯片
[GPIO] 使用新型抽象开始C++嵌入式编程,从GPIO开始
技术手册stm32f1xx中的一个小问题
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
微信公众号
手机版