新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > S3C2440看門狗定時器

        S3C2440看門狗定時器

        作者: 時間:2016-11-21 來源:網絡 收藏
        看門狗定時器的主要作用是在程序因為干擾而跑飛后,能夠使系統復位,不至于使系統永遠的死下去。它的原理與一般的定時器沒有多大區別,就是先要設置好一段時間,當超過這段時間后,就從當前運行的程序中跳出進入中斷處理程序中。但兩者的主要差別是,一般的定時器中斷是我們希望它發生的,因此我們不會在定時器中斷發生前的那個時間段內干預它;而看門狗定時器中斷是我們不希望它發生的,因此我們要想方設法地避免其發生。主要的方法就是在中斷發生前,重新對看門狗定時器的寄存器進行賦值,使它的定時器重新開始計時。

        [cpp]view plaincopy
        1. #include"2440addr.h"
        2. #include"Option.h"
        3. #defineLED1_ON(rGPBDAT&=~(1<<5))
        4. #defineLED1_OFF(rGPBDAT|=(1<<5))
        5. #defineLED2_ON(rGPBDAT&=~(1<<6))
        6. #defineLED2_OFF(rGPBDAT|=(1<<6))
        7. #defineLED3_ON(rGPBDAT&=~(1<<7))
        8. #defineLED3_OFF(rGPBDAT|=(1<<7))
        9. #defineLED4_ON(rGPBDAT&=~(1<<8))
        10. #defineLED4_OFF(rGPBDAT|=(1<<8))
        11. void__irqWdt_Int(void);
        12. voidDelay(void)
        13. {
        14. inti;
        15. for(i=0;i<1000000;i++);
        16. }
        17. voidMain(void)
        18. {
        19. rGPBCON&=~((3<<10)|(3<<12)|(3<<14)|(3<<16));//對GPBCON[10:17]清零
        20. rGPBCON|=((1<<10)|(1<<12)|(1<<14)|(1<<16));//設置GPB5~8為輸出
        21. rGPBUP&=~((1<<5)|(1<<6)|(1<<7)|(1<<8));//設置GPB5~8的上拉功能
        22. rGPBDAT|=(1<<5)|(1<<6)|(1<<7)|(1<<8);//關閉LED
        23. rGPBCON|=1;//輸出
        24. rGPBUP|=0;
        25. rGPBDAT|=0;//關閉蜂鳴器
        26. rWTDAT=50000;//設置看門狗定時器超時時間為4秒(50÷12.5)
        27. rWTCNT=50000;
        28. rWTCON=(249<<8)|(1<<5)|(0<<3)|(1<<2);//預分頻值為249,使能看門狗,分頻系數為16,中斷使能
        29. rSRCPND|=BIT_WDT_AC97;
        30. rINTPND|=BIT_WDT_AC97;
        31. rSUBSRCPND|=BIT_SUB_WDT;//清除中斷標志
        32. rINTMSK&=~(BIT_WDT_AC97);
        33. rINTSUBMSK&=~(BIT_SUB_WDT);//開中斷
        34. pISR_WDT_AC97=(unsigned)Wdt_Int;//設置中斷程序入口
        35. while(1)
        36. {
        37. LED1_ON;Delay();LED1_OFF;
        38. LED2_ON;Delay();LED2_OFF;
        39. LED3_ON;Delay();LED3_OFF;
        40. LED4_ON;Delay();LED4_OFF;
        41. rWTCNT=50000;//喂狗沒喂狗蜂鳴器很響
        42. }
        43. }
        44. void__irqWdt_Int(void)
        45. {
        46. rSRCPND|=BIT_WDT_AC97;
        47. rINTPND|=BIT_WDT_AC97;
        48. rSUBSRCPND|=BIT_SUB_WDT;//清除中斷標志
        49. rGPBDAT=1;
        50. Delay();
        51. rGPBDAT=0;//蜂鳴器響一段時間
        52. }




        評論


        技術專區

        關閉
        主站蜘蛛池模板: 福海县| 天台县| 浠水县| 梁河县| 赫章县| 宁安市| 河北省| 漳州市| 东兴市| 衡阳市| 同心县| 视频| 克拉玛依市| 韶关市| 津市市| 远安县| 施秉县| 蓬莱市| 平和县| 西贡区| 合川市| 罗田县| 玉林市| 顺平县| 恩施市| 阜宁县| 巍山| 南康市| 洞口县| 恭城| 灵宝市| 昆明市| 保定市| 襄城县| 靖远县| 穆棱市| 梁山县| 黔西县| 琼海市| 镇康县| 甘孜县|