欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 基于STM32F4的窗口看門狗實現源程序 [打印本頁]

作者: 大工劉昊然    時間: 2021-1-15 10:56
標題: 基于STM32F4的窗口看門狗實現源程序
窗口看門狗(WWDG)通常被用來監測由外部干擾或不可預見的邏輯條件造成的應用程序背離正常的運行序列而產生的軟件故障。
窗口看門狗的超時公式如下:
Twwdg=(4096×2^WDGTB×(T[5:0]+1)) /Fpclk1;
其中:
Twwdg:WWDG 超時時間(單位為 ms)
Fpclk1:APB1 的時鐘頻率(單位為 Khz)
WDGTB:WWDG 的預分頻系數
T[5:0]:窗口看門狗的計數器低 6 位
        DS0(連接在PF9) ,DS1(連接在PF10。程序一運行則開啟WWDG,并使得DS0亮300ms后關閉,進入死循環。等待WWDG中斷的到來,在中斷里面,喂狗,并執行DS1的翻轉操作。所以可以看到DS1不停的閃爍,而DS0只在剛啟動的時候閃一下。
窗口看門狗.c文件如下。
  1. u8 WWDG_CNT=0X7F;
  2. //初始化窗口看門狗
  3. //tr :T[6:0],計數器值 wr :W[6:0],窗口值
  4. //fprer:分頻系數(WDGTB),僅最低 2 位有效
  5. //Fwwdg=PCLK1/(4096*2^fprer). 一般 PCLK1=42Mhz
  6. void WWDG_Init(u8 tr,u8 wr,u32 fprer)
  7. {
  8. NVIC_InitTypeDef NVIC_InitStructure;
  9. RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);
  10. //使能窗口看門狗時鐘
  11. WWDG_CNT=tr&WWDG_CNT; //初始化 WWDG_CNT.
  12. WWDG_SetPrescaler(fprer); //設置分頻值
  13. WWDG_SetWindowValue(wr); //設置窗口值
  14. WWDG_SetCounter(WWDG_CNT);//設置計數值
  15. WWDG_Enable(WWDG_CNT); //開啟看門狗
  16. NVIC_InitStructure.NVIC_IRQChannel=WWDG_IRQn; //窗口看門狗中斷
  17. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x02; //搶占優先級為 2
  18. NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x03; //響應優先級為 3
  19. NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; //使能窗口看門狗
  20. NVIC_Init(&NVIC_InitStructure);
  21. WWDG_ClearFlag();//清除提前喚醒中斷標志位
  22. WWDG_EnableIT();//開啟提前喚醒中斷
  23. }
  24. //窗口看門狗中斷服務程序
  25. void WWDG_IRQHandler(void)
  26. {
  27. WWDG_SetCounter (WWDG_CNT); //重設窗口看門狗值
  28. WWDG_ClearFlag();//清除提前喚醒中斷標志位
  29. LED1=!LED1;
  30. }
復制代碼

全部程序51hei下載地址:
STM32F4窗口看門狗.7z (294.42 KB, 下載次數: 15)







歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1