分享一下STM32基于CubeMX独立看门狗的使用方法

电子说

1.3w人已加入

描述

项目里面需要加一个独立看门狗,就上网了解了一下,具体原理后期有时间再分享,今天先简单分享一下使用方法。

第一步: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中修改:

计时器

计时器

网友高见

计时器

计时器

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分