项目里面需要加一个独立看门狗,就上网了解了一下,具体原理后期有时间再分享,今天先简单分享一下使用方法。
第一步:CubeMX设置
第二步:Keil下主循环中喂狗
说明:在主函数中调用此函数,如果主程序正常运行,则喂狗函数会被循环执行到。如果程序异常跑飞,则喂狗函数不会被执行到,独立看门狗本质就是一个计时器(或者计数器),计时器(或者计数器)会一直加,直到超过我们设置的喂狗时间后复位单片机。
第三步:喂狗时间的计算
其实上面的两步已经实现了独立看门狗的功能,下面我们分析一下关于喂狗时间的计算。
上图是STM32手册的一张图,不同型号单片机的独立看门狗内部时钟可能不一样,有的是32Khz,我用的这款单片机是40Khz。
预分频系数和CubeMx里的第一项对应,时钟是40KHz,比如我选的8分频,就是实际用的频率是40/8=5KHz。时间是频率的倒数,那么此时也就是说计数器加1或者减1所花费的最短时间是(1/5)=0.2ms(Khz和s单位千分抵消了,所以最后时间单位是ms),因此如果设置加载值为2000,则喂狗的最长时间应该是2000*(1/5)=400ms。
我们和表格对比一下,8分频最短时间是0.2ms(计数器加1或者减1所花费的最短时间),我们最后的喂狗时间400ms也没有超过最长时间819.2ms。因此我们的设置OK。
具体的喂狗时间需要结合主程序代码运行时间综合设定。甚至对一些特殊时间段的考虑需要用到窗口看门狗WWDG。
下面我们看一下生成的Keil工程中关于设置的位置,如果需要修改时钟分频系数或者喂狗时间可以直接在Keil中修改:
网友高见 :
-
STM32
+关注
关注
2264文章
10852浏览量
354100 -
计时器
+关注
关注
1文章
416浏览量
32591 -
WWDG
+关注
关注
0文章
19浏览量
5485 -
独立看门狗
+关注
关注
0文章
24浏览量
3788 -
CubeMx
+关注
关注
0文章
30浏览量
1302
发布评论请先 登录
相关推荐
评论