STMCU小助手
发布时间:2021-11-30 21:26
|
前言 今天总结“STM32F103 WDG看门狗”,STM32F1有两个看门狗,IWDG独立看门狗和WWDG窗口看门狗,今天将两个看门狗一并总结了。 * E( A9 E; Z% K8 V& M$ a2 ?4 R 总结一下二者的区别: ! ~8 p' S2 z9 m% m 1)、IWDG使用内部低速时钟LSI,WWDG使用系统时钟APB1ENR) I% d# a R; p : b% X9 [. Z8 x) Y* m9 T) d 2)、IWDG没有中断,WWDG有中断 3)、IWDG是12位递减的。WWDG是7位递减的 9 S5 e# Z( T. O$ } 4)、IWDG只有下限,WWDG有下限和上限. M) ^7 r4 u/ U% U 5)、IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。 WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。 $ L+ e- l/ f8 L. g& C 看门狗在长期工作的产品中用到比较多,作用很简单,防止死机。看门狗的功能也可用于定时计数等。 3 ~# _ M+ R( y; o K; U+ y 本着免费分享的原则,将总结的工程源代码分享给大家,还望看到的朋友关注一下微信公众号,并将文章分享给你的朋友。 内容讲解6 w; }6 r( g5 }# h+ t 工程概要说明: IWDG工程基于“EXIT中断”工程修改而来,因为使用到按键来喂狗。系统复位,快速闪烁两次LED,接下来间隔1秒串口打印一个计数值(从0 - 8),在8秒的时间内按键喂狗,计数值会归零;如果不喂狗则会复位。 % l* I) c0 o. q+ r WWDG工程基于“TIM定时”而来,因为使用了定时的功能。我提供的工程喂狗的时间是57ms(刚好最大值),间隔57ms喂狗一次,不会复位(LED快速变化, 快速打印WWDG...); 如果大于57ms(自己可以修改一下)未喂狗则会复位(LED慢速变化, 不断打印Reset...)。 % G# l |# I% `6 x" b 提供的工程简单明了,详细中文注释,方便自己方便大家。9 j) `4 I- H0 M+ j% A 关于“STM32F103 WDG看门狗” 我把重要的几点在下面分别讲述:/ P& h7 X7 `% q3 ~7 S* t1 k 一、IWDG的配置 ! z; Q2 d9 F# u) J
该函数位于IWDG工程的main.c文件下面; {# t |8 T# H* y' N- q- C6 V 9 O% G; x/ k9 m5 _+ c9 q 提供的框图为见资料。8 Z3 I% k" d' T9 n- y s 我想大部分关心的是这个8秒的喂狗时间是怎样计算出来的,其实,看了程序的注释和框图大概就应该能明白了。40K分频256之后就只能在1秒计数156次,9 W* I# i" J" ^& S' Q' V$ n# }/ T" J 0 e; d# p7 w" _ 而要计满1250(40000/32)就需要8秒。不明白的朋友请自己分析一下哦。 二、WWDG的配置2 z0 U1 S+ o/ I4 ?6 z! b4 Z
9 L. w5 G2 R# m9 q9 {
* a, x% B' Q4 l# ^' K+ c 该函数位于WWDG工程的main.c文件下面; ) |% M& b; i; N+ _5 m* \+ u 提供的框图为见资料。 L6 r i! r9 D* [. C 这里也主要讲一下最大喂狗时间57ms.分频之后只能在1秒计数1099次,要计满63个大概就需要57ms,这个值就是最大值。8 R8 Z2 _8 R) j* G 这个工程需要自己修改这个时间来测试,建议都自己亲手修改代码测试一下。 A9 {3 r" z' f. K7 v 三、WWDG主函数
该函数位于WWDG工程的main.c文件下面;9 i4 H( L A n2 \! E 通过串口打印的信息就可以清楚的知道系统复位了没有。7 Z# N+ X0 n( \ 5 o3 T. G- O' l$ ~3 n9 i 亲手修改来大于57ms的时间试试就知道。' G* g' R9 V. W q4 j* G: ? 四、今天的重点 A.WWDG计数器的范围为:0x40 --- 0x7F B.当微控制器进入调试模式时(Cortex-M3核心停止),根据调试模块中的DBG_WWDG_STOP 配置位的状态, WWDG的计数器能够继续工作或停止。4 s' Z- D5 E* f/ q; U , d h7 J; u9 L( {6 i7 v C.没有两个寄存器,编程时请细看寄存器7 K2 K0 W- O/ y9 C/ ] 说明* Y+ v0 x/ p- U4 e" R I$ q & y# \' Y: J: @ 今天提供的软件工程基于STM32F103大容量芯片,其实只要适当修改工程的部分配置,STM32F1的芯片都适用。 |
DMA 原理从 0 到 1:为什么它能解放 CPU?一文讲透 DMA 的工作流程
【福利三:雨露均沾·逢7狂欢】之五:STM32系统时钟PLL故障排除1例
【福利三:雨露均沾·逢7狂欢】之三:AI帮我查BUG
福利三:雨露均沾·逢7狂欢】之二:STM32F407VG串口通信乱码故障的排除
基于STM32F103的I2C主从机通信
OpenBLT移植到STM32F103战舰开发板上适用于所有STM32F103系列的Bootloader
TFT LCD 与 FSMC 的硬件连接大容量 STM32F10xxx FSMC 接口
单片机:初学者该了解的STM32F103基础知识
2025软件工具兔哥知道
STM32之继电器模块
微信公众号
手机版