標(biāo)題: CC2530看門狗系統(tǒng)源程序與詳細講解 [打印本頁]

作者: 滬杭車中    時間: 2017-11-28 21:28
標(biāo)題: CC2530看門狗系統(tǒng)源程序與詳細講解
看門狗是在軟件跑飛的情況下CPU自恢復(fù)的一個方式,當(dāng)軟件在選定的時間間隔內(nèi)不能置位看門狗定時器(WDT),WDT就復(fù)位系統(tǒng)?撮T狗可用于電噪聲,電源故障或靜電放電等惡劣工作環(huán)境或高可靠性要求的環(huán)境。如果系統(tǒng)不需要應(yīng)用到看門狗,則WDT可配置成間隔定時器,在選定時間間隔內(nèi)產(chǎn)生中斷。 WDT的特性如下:4個可選擇的時間間隔看門狗定時器模式下產(chǎn)生中斷請求時鐘獨立于系統(tǒng)時鐘,WDT包括一個15位定時/計數(shù)器,它的頻率由32.768KHz的晶振決定。用戶不能查看計數(shù)器的值工作于各個電源模式。讓用戶了解幾種看門狗定時器的使用


單片機源程序如下:
  1. /****************************************************************************
  2. * 文 件 名: main.c
  3. * 作    者: Andy
  4. * 修    訂: 01-09
  5. * 版    本: 1.0
  6. * 描    述: 打開看門狗后,得記得喂狗,不然系統(tǒng)就會不停地復(fù)位了
  7. ****************************************************************************/
  8. #include <ioCC2530.h>

  9. typedef unsigned char uchar;
  10. typedef unsigned int  uint;

  11. #define LED1 P1_0       // P1.0口控制LED1
  12. #define LED2 P1_1       // P1.1口控制LED2


  13. /****************************************************************************
  14. * 名    稱: DelayMS()
  15. * 功    能: 以毫秒為單位延時 16M時約為535,系統(tǒng)時鐘不修改默認(rèn)為16M
  16. * 入口參數(shù): msec 延時參數(shù),值越大,延時越久
  17. * 出口參數(shù): 無
  18. ****************************************************************************/
  19. void DelayMS(uint msec)
  20. {
  21.     uint i,j;
  22.    
  23.     for (i=0; i<msec; i++)
  24.         for (j=0; j<535; j++);
  25. }

  26. /****************************************************************************
  27. * 名    稱: InitLed()
  28. * 功    能: 設(shè)置LED燈相應(yīng)的IO口
  29. * 入口參數(shù): 無
  30. * 出口參數(shù): 無
  31. ****************************************************************************/
  32. void InitLed(void)
  33. {
  34.     P1DIR |= 0x03;      //P1.0、P1.1定義為輸出
  35.     LED1 = 1;           //默認(rèn)LED燈為熄滅狀態(tài)
  36.     LED2 = 1;
  37. }


  38. void Init_Watchdog(void)
  39. {
  40.     WDCTL = 0x00;       //打開IDLE才能設(shè)置看門狗
  41.     WDCTL |= 0x08;      //定時器間隔選擇,間隔一秒
  42. }

  43. void FeetDog(void)
  44. {
  45.     WDCTL = 0xa0;       //清除定時器。當(dāng)0xA跟隨0x5寫到這些位,定時器被清除
  46.     WDCTL = 0x50;
  47.     LED2 = 0;           //系統(tǒng)不復(fù)位LED2燈長亮
  48. }

  49. /****************************************************************************
  50. * 程序入口函數(shù)
  51. ****************************************************************************/
  52. void main(void)
  53. {
  54.     InitLed();                //調(diào)用初始化函數(shù)
  55.     Init_Watchdog();

  56.     while(1)
  57. ……………………

  58. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼


所有資料51hei提供下載:
15.看門狗.zip (303.76 KB, 下載次數(shù): 14)







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