完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这篇文章讲述的是用Cube MX工具配置IDWG,以及注意事项(必看红字部分),用的是STM32F412芯片,使用的是IAR编译器。
目录 1、简介 2、特点 3、Cube MX配置 4、血的经验.... 1、简介 独立看门狗(IWDG)由其自己的专用低速时钟(LSI)提供时钟,因此即使主时钟发生故障也能保持活动状态。 IWDG最适合需要看门狗作为主应用之外的完全独立过程运行的应用,但具有较低的定时精度约束。 2、特点
IDWG的框图以及寄存器自己做功课吧,我想应该都会的,就不罗嗦。接下来看Cube MX配置,开启独立看门狗如下图: 接下来到去配置IDWG的时钟以及多久喂狗的时间,如下图: 解释一波,应为IDWG的时钟是LSI(32KHz),我这里32分频也就是1KHz,也就是每计数一次就是1ms的时间,而我设置的重载值是200,也就是说如果程序超过200ms还没有重新喂狗,那么程序就开始复位重新从main函数开始运行。再来看下面一张时钟图,确实是LSI RC独立的时钟。 好了完成这些就可以生成代码了,不过Cubx MX只是帮我们吧IDWG配置好了,但是喂狗的函数还是要我们自己写的,不用担心,直接调用库函数就行了。复制下面的代码放到main函数的while函数中。建议喂狗函数是放在main函数中而不是放在中断中,有可能程序已经跑飞了,但是中断还在运行,这样的结果就是程序一直在复位,很可怕的。 if (IS_IWDG_RELOAD(&hiwdg) != HAL_OK) { _Error_Handler(__FILE__, __LINE__); } 来看一程序大概的布局,如下图: 4、血的经验.... 在这里我还有一点建议,尽量把MX_IWDG_Init()初始化函数靠近while(1),原因是这样的,在while函数之前的初始化,可能有很长的延时时间(比如SPI FLASH的初始化),而你的喂狗函数时间设置的有比较小,而你初始化配置顺序是先配置IDWG后配置SPI FLASH,这样的结果就是还没进入while函数就已经复位了。 |
|
|
|
只有小组成员才能发言,加入小组>>
2549 浏览 0 评论
1149浏览 2评论
748浏览 1评论
501浏览 0评论
267浏览 0评论
430浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 22:37 , Processed in 1.260445 second(s), Total 78, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号