完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
一、定义
按照STM32参考手册的说法:“独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。” 简单的说,STM32 中的IWDG 其核心就是一个12bits的向下递减的计数器,当计数器计数到零时就会触发系统复位。因此,要在每次计数到零之前将其复位到一个初始值。这个初始值就在重装载寄存器(IWDG_RLR)中存放,其默认值为0xFFF,我们也可以将其改为其他值。 二、初始化 时钟来源: 内部的40KHz的时钟,与系统时钟无关! 如下所示: 这里的fsoc才是IWDG真正的时钟!(IWDG_Prescaler_XX指的是XX分频)。 IWDG的重载值寄存器:RLR 是一个16位的寄存器,只有低12bit可以使用,其他的保留!所以重载值最大是0xFFF 也就是从IWDG最大从0xFFF减到0 然后如果没有喂狗就会引起系统软件复位! 所以定时时间Time可以如下计算: Time = (XX /(40*10^3))*Val(RLR) (s) XX表示40KHz的分频! void IWDG_Configuration(void){ IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //允许写IWDG IWDG_SetPrescaler(IWDG_Prescaler_64); //设置分频 IWDG_SetReload(1250); //设置Reload IWDG_ReloadCounter();//重载值 IWDG_Enable();//时能IDWG} Time = (64/(40*10^3))*1250 =2s 注意在程序里面要手动喂狗!喂狗代码如下: void IWDG_Feed(void) { IWDG_ReloadCounter(); } 如果大于2S不喂狗就会复位了! |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1632 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1559 浏览 1 评论
985 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
688 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1605 浏览 2 评论
1869浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
652浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
522浏览 3评论
539浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
508浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 12:17 , Processed in 0.716102 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号