独立看门狗步骤:
l 取消寄存器写保护:
n IWDG_WriteAccessCmd();
l 设置独立看门狗的预分频系数,确定时钟:
n IWDG_SetPrescaler();
l 设置看门狗重装载值,确定溢出时间:
n IWDG_SetReload();
l 使能看门狗
n IWDG_Enable();
l 应用程序喂狗:
n IWDG_ReloadCounter();
l 溢出时间计算:
n Tout=((4×2^prer) ×rlr) /40 (M3)时钟为LSI 40KHZ
源码:
1 //wdg.c 2 //pere:分频数:0~7 只有低三位有效 3 //分频因子=4*2^prer,但最大只能256 4 void IWDG_Init(u8 prer,u16 rlr) 5 { 6 IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); 7 IWDG_SetPrescaler(prer); 8 9 IWDG_SetReload(rlr); 10 IWDG_ReloadCounter(); 11 IWDG_Enable(); 12 } 13 //喂狗 14 void IWDG_Feed(void) 15 { 16 IWDG_ReloadCounter();//reload 17 } 18 19 //main.c 20 int main(void) 21 { 22 delay_init(); 23 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); 24 uart_init(115200); 25 LED_Init(); 26 KEY_Init(); 27 delay_ms(500); 28 IWDG_Init(4,625); 29 LED0=0; 30 while(1) 31 { 32 if(KEY_Scan(0)==WKUP_PRES) 33 { 34 IWDG_Feed(); 35 } 36 delay_ms(10); 37 }; 38 } 39 40 喂狗使程序不会复位,这样LED灯就不会熄灭然后500ms再亮,溢出时间1S
作者:长风
Email:844064492@qq.com
QQ群:607717453
Git:https://github.com/zhaohu19910409Dz
开源项目:https://github.com/OriginMEK/MEK
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
感谢您的阅读。如果觉得有用的就请各位大神高抬贵手“推荐一下”吧!你的精神支持是博主强大的写作动力。
如果觉得我的博客有意思,欢迎点击首页左上角的“+加关注”按钮关注我!