找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4434|回復: 0
打印 上一主題 下一主題
收起左側

[零基礎學習STM32]第六講:IWDG看門狗實驗—復位ARM

[復制鏈接]
跳轉到指定樓層
樓主
ID:278743 發(fā)表于 2018-3-9 10:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
一、概述
1、看門狗簡介
     在由單片機構成的微型計算機系統(tǒng)中,由于單片機的工作常常會受到來自外界磁場的干擾,造成各種寄存器和內存的數(shù)據混亂,會導致程序指針錯誤,不在程序區(qū),取出錯誤的程序指令等,都會陷入死循環(huán)。程序的正常運行被打斷,由單片機控制的系統(tǒng)無法繼續(xù)正常工作,會造成整個系統(tǒng)陷入停滯狀態(tài),發(fā)生不可預料的后果?撮T狗就是定期的查看芯片內部的情況,一旦發(fā)生錯誤就向芯片發(fā)出重啟的電路?撮T狗命令在程序的中斷中擁有最高的優(yōu)先級。
2、IWDG簡介
     此器件具有兩個嵌入式看門狗外設,具有安全性高、定時準確及使用靈活的優(yōu)點。兩個看門狗外設(獨立和窗口)均可用于檢測并解決由軟件錯誤導致的故障;當計數(shù)器達到給定的超時值時,觸發(fā)一個中斷(僅適用于窗口型看門狗)或產生系統(tǒng)復位。
     獨立看門狗(IWDG)由其專用低速時鐘(LSI)驅動,因此即便在主時鐘發(fā)生故障時仍然保持工作狀態(tài)。窗口看門狗(WWDG)時鐘由APB1時鐘經預分頻后提供,通過可配置的時間窗口來檢測應用程序非正常的過遲或過早的操作。IWDG最適合應用于那些需要看門狗作為一個在主程序之外,能夠安全獨立工作,并且對時間精度要求較低的場合。WWDG最適合那些要求看門狗在精度計時窗口起作用的應用程序。
3、IWDG主要特性
  • 自由運行遞減計數(shù)器。
  • 時鐘由獨立RC振蕩器提供(可在待機和停止模式下運行)。
  • 當遞減計數(shù)器值達到0x000時產生復位(如果看門狗已激活)。

           圖6_0獨立看門狗框圖

   圖6_1  32kHz(LSI)頻率條件下IWDG超時周期的最小值/最大值框圖
二、硬件電路

                  圖6_2引腳分配圖

                圖6_3電路原理圖
    在iCore3雙核心開發(fā)板中,采用一個獨立的按鍵與STM32F407PH15相連,限流電阻為1K。
三、實驗原理
     STM32內部包含獨立看門狗,通過看門狗可以監(jiān)控程序運行,程序運行錯誤時,未在規(guī)定時間喂狗,自動復位ARM。本實驗通過按下,停止喂狗,制造程序運行錯誤,從而產生復位。
四、源代碼  
    1、主函數(shù)
  1. /*
  2. * Name                : main
  3. * Description         : ---
  4. * Author              : ysloveivy.
  5. *
  6. * History
  7. * --------------------
  8. * Rev                 : 0.00
  9. * Date                : 11/21/2015
  10. *
  11. * create.
  12. * --------------------
  13. */
  14. int main(void)
  15. {
  16.         int i;
  17.         for(i = 0;i < 10000000;i++);
  18.         led.initialize();
  19.         key.initialize();
  20.         iwdg.initialize();
  21.         while(1){
  22. while(!KEY_INPUT);                          //按鍵按下進入循環(huán),不再喂狗,1秒后燈熄滅
  23.                 iwdg.feed_dog();
  24.                 for(i = 0;i < 5000000;i++);
  25.                 LED_RED_ON;
  26.                 LED_GREEN_OFF;
  27.                 LED_BLUE_OFF;
  28.                 for(i = 0;i < 5000000;i++);
  29.                 LED_RED_OFF;
  30.                 LED_GREEN_ON;
  31.                 LED_BLUE_OFF;
  32.                 for(i = 0;i < 5000000;i++);
  33.                 LED_RED_OFF;
  34.                 LED_GREEN_OFF;
  35.                 LED_BLUE_ON;
  36.         }
  37. }           
復制代碼
2、初始化函數(shù)和喂狗函數(shù)
  1. /*
  2. * Name               : initialize
  3. * Description        : ---
  4. * Author             : ysloveivy.
  5. *
  6. * History
  7. * -------------------
  8. * Rev                : 0.00
  9. * Date               : 11/21/2015
  10. *
  11. * create.
  12. * -------------------
  13. */
  14. static int initialize(void)
  15. {
  16.         //1s喂狗
  17.         IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);         //取消寄存器的寫保護
  18.         IWDG_SetPrescaler(4);                                 //設置獨立看門狗的預分頻系數(shù)
  19.         IWDG_SetReload(625);                                  //設置獨立看門狗的重裝載值
  20. IWDG_ReloadCounter();                                 //重裝載計數(shù)器
  21.         IWDG_Enable();                                        //使能獨立看門狗

  22.         return 0;
  23. }
  24. /*
  25. * Name               : feed_dog
  26. * Description        : ---
  27. * Author             : ysloveivy.
  28. *
  29. * History
  30. * -------------------
  31. * Rev                : 0.00
  32. * Date               : 11/21/2015
  33. *
  34. * create.
  35. * -------------------
  36. */
  37. static void feed_dog(void)
  38. {
  39.         IWDG_ReloadCounter();
  40. }
復制代碼
五、實驗現(xiàn)象
     iCore3雙核心板三色LED交替閃爍i,當按鍵按下超過1s,看門狗復位ARM.。
六、代碼包下載
     網盤:http://pan.baidu.com/s/1c0frjHm

iCore3_6_IWDG.rar

909.45 KB, 下載次數(shù): 7, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

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