新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM8S-獨立看門狗的應用

        STM8S-獨立看門狗的應用

        作者: 時間:2016-11-26 來源:網絡 收藏
        在編寫程序時有時會出現死機或程序跑飛的情況,這時對系統有一定的影響,怎樣讓程序可以自行重啟呢,STM8S中的看門狗就是實現這一功能的,用看門狗檢測程序的執行,在看門狗的復位時間內進行喂狗,如果程序在某個地方出現問題,那么就不能及時的進行喂狗,這時系統就會重新啟動,達到檢測的目的。通過觀察小燈的閃爍快慢可以看出系統是否復位。

        程序如下:

        本文引用地址:http://www.104case.com/article/201611/321589.htm

        //軟件環境:IAR FOR STM8 V1.0
        //作者:Nicole

        //功能:STM8的獨立看門狗應用

        //日期:2010.11.04

        #include
        #include
        unsigned int i;
        //時鐘配置
        void CLK_Configuration(void)
        {
        //CLK_ICKR= 0x08; //打開低速時鐘
        CLK_CKDIVR = 0x00;
        }

        //延時函數
        void Delay(unsigned int i)
        {
        unsigned int j;
        while(i--)
        {
        for(j=1000;j>0;j--);
        }

        }
        //IO口配置,控制小燈
        void GPIO_Init(void)
        {
        unsigned int i;
        PD_DDR|=0x01;//PD0輸出,其余保持原功能
        PD_CR1|=0x01;//對應位設置為推挽輸出
        PD_CR2|=0x00;//輸出最大頻率為2MHz

        //小燈閃爍的速度快(為了看的清晰循環4次)
        for(i=0;i<4;i++)
        {
        PD_ODR=0xff;
        Delay(200);
        PD_ODR=0xfe;
        Delay(200);
        }
        }


        //看門狗配置

        void IWDG_Init(void)
        {
        IWDG_KR = 0xCC; //啟動IWDG
        IWDG_KR = 0x55; //解除 PR 及 RLR 的寫保護
        IWDG_RLR = 0xff; //看門狗計數器重裝載數值
        IWDG_PR = 0x06; //分頻系數為256,最長超時時間為:1.02S
        IWDG_KR = 0xAA; //刷新IDDG,避免產生看門狗復位,同時恢復 PR 及 RLR 的寫保護狀態
        void main(void)
        {
        CLK_Configuration(); // 開啟外部時鐘
        GPIO_Init();// 初始化端口
        IWDG_Init();// 初始化外部看門狗
        while(1)
        {
        PD_ODR = 0xff;//PD0為輸出1,LED
        Delay(1000);//延時長小燈閃爍慢些

        PD_ODR = 0xfe;//PD0為輸出0,LED亮
        Delay(1000);
        }

        //程序中沒有及時喂狗,所以觀察到小燈先閃爍快些,然后閃爍慢些,達到看門狗的復位時間系統重啟,循環上述過程
        }



        關鍵詞: STM8S獨立看門

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 武宣县| 崇阳县| 墨玉县| 饶河县| 民丰县| 慈溪市| 广河县| 本溪市| 顺昌县| 宜昌市| 即墨市| 平武县| 丘北县| 南丹县| 璧山县| 灵宝市| 图们市| 临江市| 林西县| 汪清县| 隆子县| 云浮市| 唐海县| 千阳县| 宁化县| 永靖县| 泰和县| 图木舒克市| 乡宁县| 仪陇县| 绥化市| 滨州市| 永仁县| 综艺| 含山县| 牟定县| 元谋县| 阿尔山市| 洞头县| 中牟县| 东乡县|