<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        TMS320F2812外設例程系列之Watchdog

        作者:佚名   來源:不詳   點擊數:  更新時間:2014年08月17日   【字體:

         

         
        //#####################################################################
        //文件:  Example_281xWatchdog.c
        //說明:  DSP281x看門狗中斷測試程序
        //#####################################################################
        #include "DSP281x_Device.h"     
        #include "DSP281x_Examples.h"   
        interrupt void wakeint_isr(void);     //中斷服務程序wakeint_isr的聲明
        Uint32 WakeCount;
        Uint32 LoopCount;
        //主程序
        void main(void)
        {
            //Step 1. 初始化系統控制,該函數在DSP281x_SysCtrl.c 文件中
            InitSysCtrl();                 //初始化PLL、看門狗,使能外設時鐘
            //Step 2.初始化GPIO
            //該函數在DSP281x_Gpio.c文件中,顯示如何設置GPIO到其默認狀態
            //InitGpio();                 //本例未使用,跳過  
            //Step 3.禁止所有中斷,初始化PIE中斷向量表
            DINT;                         //關全局中斷
            //初始化PIE控制寄存器到它們的默認狀態,即禁止所有的PIE中斷,清除所有的PIE中斷
            //標志,這個函數在DSP281x_PieCtrl.c文件中
            InitPieCtrl();
            IER = 0x0000;                 //禁止CPU中斷
            IFR = 0x0000;                 //清除CPU中斷標志
            //初始化PIE中斷向量表,使中斷向量指向中斷服務程序(ISR)。為了調試方便,即使本例
            //不使用的中斷也初始化。ISR在DSP281x_DefaultIsr.c文件中
            InitPieVectTable();
            //本例中使用到的中斷程序入口地址重載到相應中斷向量
            EALLOW;                 //允許訪問受保護寄存器
            PieVectTable.WAKEINT = &wakeint_isr;
            EDIS;                       //禁止訪問受保護寄存器
            //Step 4.初始化器件所有的片內外設,該函數在DSP281x_InitPeripherals.c文件中
            //InitPeripherals();           //本例不需要,跳過
            //Step 5. 用戶代碼,使能中斷
            WakeCount = 0;               //計中斷次數清零
            LoopCount = 0;               //計通過循環的次數清零
            //看門狗復位(WDRST)輸出信號無效且看門狗中斷(WDINT)輸出信號有效 
            EALLOW;
            SysCtrlRegs.SCSR = BIT1;     //清除WDOVERRIDE位
            EDIS;
            PieCtrlRegs.PIECRTL.bit.ENPIE = 1;   //使能PIE塊
            PieCtrlRegs.PIEIER1.bit.INTx8 = 1;     //使能PIE級中斷INT1.8
            IER |= M_INT1;                 //使能CPU級中斷 INT1
            EINT;                         //使能全局中斷
            KickDog( );                     //喂狗,清除看門狗計數器
            EALLOW;
            SysCtrlRegs.WDCR = 0x0028; //使能看門狗
            EDIS;
            //Step 6. 空循環
            for(;;)
            {
               LoopCount++;
               //不注釋掉KickDog(喂狗)就一直在這兒循環,注釋掉KickDog(喂狗)引起WAKEINT中斷
               //KickDog();
            }
        }
        //Step 7. 加上局部中斷服務程序(ISR),如果局部ISR已經使用,按照Step 5中斷向量,
        //再分配中斷向量地址
        interrupt void wakeint_isr(void)
        {
        WakeCount++;
        PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;  
          //應答這個中斷,以便再接收PIE組1的中斷
        }
         
        關閉窗口
        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮