找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5017|回復: 0
收起左側

眾拳STM8窗口看門狗(WWDG)實驗詳解 附源程序

[復制鏈接]
ID:170279 發(fā)表于 2017-12-16 14:56 | 顯示全部樓層 |閱讀模式
2.4STM8.jpg
窗口看門狗介紹
窗口看門狗用于監(jiān)測由于外部干擾或不可預知的邏輯條件所產生的軟件錯誤,這樣的軟件錯誤通常會導致應用程序不按照預期的方式運行。除非程序在遞減計數器的T6位變?yōu)?之前刷新遞減計數器,看門狗電路將在一個預置的時間間隔后產生系統復位;如果在7位的遞減計數器數值達到窗口寄存器數值之前刷新遞減計數器,同樣會產生系統復位。這就意味著只能在一個有限的時間窗口內刷新遞減計數器。

窗口看門狗時序圖
1.png

計算公式:
(0x7F-0x3F)*(12288/16Mhz)
窗口看門狗功能說明
如果開啟了看門狗(設置了WDGA=1),當7位的遞減計數器(T[6:0]位)從0x40變?yōu)?x3F時(即T6變?yōu)?),看門狗產生一個復位信號并把復位引腳拉低。如果軟件刷新計數器時,計數器的數值大于窗口寄存器中的數值,同樣會產生復位。
2.png

在正常的操作期間,應用程序必須定期地寫入WDGCR寄存器,以避免產生復位;這個寫的動作必須在計數器的數值小于窗口寄存器的數值時進行。寫入WDGCR寄存器的數值必須是介于0x7F和0x40之間
● 開啟看門狗:
如果(通過選擇字節(jié))選擇了軟件看門狗,在系統復位后看門狗處于關閉狀態(tài)。設置WDGCR寄存器中的WDGA位將開啟看門狗,隨后在下次復位之前將不能關閉看門狗。如果(通過選擇字節(jié))選擇了硬件看門狗,看門狗將始終開啟,而WDGA位將不起作用。


● 控制遞減計數器:
遞減計數器是自由運行計數器:即使未開啟看門狗,它依然不斷地遞減計數。當開啟看門狗時,必須設置T6位以避免立刻產生復位。T[5:0]位中包含了看門狗產生復位前允許的時間延遲;因為寫入WDGCR寄存器時,預分頻器的狀態(tài)是不可知的,所以這個時間延遲介于一個最小和最大數值之間。窗口寄存器(WDGWR)的數值是指定窗口的高限:為防止復位,必須在遞減計數器的數值小于窗口寄存器的數值并大于0x3F時刷新遞減計數器。


注意:T6 位可以用于產生一個軟件復位(即設置WDGA位同時清除 T6 位)

WWDG_CR寄存器

3.png

4.png

單片機源程序如下:
  1. /***********************************************************************
  2. *   開發(fā)平臺: 劍齒虎STM8開發(fā)板        
  3. *   作    者: 劉洋
  4. *   版    本: V1.0
  5. *   日    期: 2017-11-25   
  6. *
  7. *   STVD開發(fā)環(huán)境    版本 V4.3.12
  8. *   ST庫函數       版本 V2.2.0
  9. ***********************************************************************/

  10. #include "pbdata.h"//引入自定義公共頭文件

  11. void BSP_Configuration(void);//硬件初始化函數聲明

  12. /***********************************************************************
  13. *   函 數 名: main
  14. *   功能說明: c程序入口
  15. *   形    參:無
  16. *   返 回 值: 錯誤代碼(無需處理)
  17. ***********************************************************************/
  18. int main(void)
  19. {
  20.   BSP_Configuration();//硬件驅動初始化函數
  21.   
  22.   printf("窗口看門狗測試程序\r\n");
  23.   
  24.   while(1)//主程序循環(huán),反復執(zhí)行循環(huán)體里的語句
  25.   {
  26.     WWDG_Refresh();
  27.   }
  28. }
  29. /***********************************************************************
  30. *   函 數 名: BSP_Configuration
  31. *   功能說明: 初始化硬件設備。只需要調用一次。該函數配置CPU寄存器和外設的寄存器并初始化一些全局變量。
  32. *   形    參:無
  33. *   返 回 值: 無
  34. ***********************************************************************/
  35. void BSP_Configuration(void)
  36. {  
  37.   CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);//時鐘速度為內部16M,1分頻,
  38.   UART1_Congfiguration();//調用RS232串口1初始化函數
  39.   LED_Init();//調用LED初始化函數
  40.   delay_ms(1000);
  41.   WWDG_Configuration();
  42.   rim();//打開總中斷
  43. }

  44. /*斷言函數:它的作用是在編程的過程中為程序提供參數檢查*/
  45. #ifdef USE_FULL_ASSERT
  46. void assert_failed(u8* file,u32 line)
  47. {
  48.   while(1)
  49.   {
  50.   }
  51. }
  52. #endif
復制代碼
0.png

所有資料51hei提供下載:
【眾拳】劍齒虎STM8開發(fā)板的實驗代碼下載:
眾拳STM8窗口看門狗(WWDG)實驗程序.zip (1.82 MB, 下載次數: 31)



回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表