[STM31F103]獨立看門狗
阿新 • • 發佈:2018-11-17
獨立看門狗步驟:
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)
原始碼:
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