长风破浪会有时,直挂云帆济沧海

Dream Word

博客园 首页 新随笔 联系 订阅 管理

独立看门狗步骤:

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

 

posted on 2018-11-17 18:18  长风II  阅读(288)  评论(0编辑  收藏  举报