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

    TMS320F2812外設例程系列之CpuTimer

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

     

     
    //#####################################################################
    //文件:  Example_281xCpuTimer.c
    //說明: 定時器應用實例
    //#####################################################################
    #include "DSP281x_Device.h"   
    #include "DSP281x_Examples.h"  
    //定時器中斷服務程序聲明
    interrupt void cpu_timer0_isr(void);
    //主程序
    void main(void)                
    {   
        //Step 1. 初始化系統控制
        InitSysCtrl();               //初始化系統控制寄存器、PLL、看門狗和時種
        //Step 2. 初始化 GPIO
        //InitGpio();               //本例中沒有使用,跳過  
        //Step 3. 清除所有中斷,初始化PIE中斷向量表
        DINT;                     //關CPU中斷
        InitPieCtrl();
        //初始化PIE控制寄存器組到默認狀態,這個子程序在DSP281x_PieCtrl.c
        IER = 0x0000;             //禁止所有CPU中斷
        IFR = 0x0000;             //清除所有CPU中斷標志位
        InitPieVectTable();
        //初始化PIE中斷向量表,這個子程序在DSP281x_PieVect.c
        EALLOW;                 //關保護  
        PieVectTable.TINT0 = &cpu_timer0_isr;   //中斷向量指向中斷服務程序
        EDIS;                     //開保護
        //Step 4. 初始化所有片內外設
        //InitPeripherals();   //沒有使用,跳過,在DSP281x_InitPeripherals.c
        InitCpuTimers();     //初始化定時器寄存器組
        ConfigCpuTimer(&CpuTimer0, 100, 1000000);
        //配置CPU-Timer 0 中斷周期為1s,100MHz CPU頻率,可以根據頻率改變實參
        StartCpuTimer0();       //啟動定時器 0
        //Step 5. 用戶代碼,打開中斷
        IER |= M_INT1;           //使能第一組PIE中斷
        PieCtrlRegs.PIEIER1.bit.INTx7 = 1; //使能第一組的中斷7
        EINT;                     //使能全局中斷
        ERTM;                     //使能DEBUG中斷
        //Step 6. 空循環,等待中斷
        for(;;);
    //中斷服務子程序
    interrupt void cpu_timer0_isr(void)
    {
        CpuTimer0.InterruptCount++;
        //用戶可以在此處添加自己的代碼,以完成某些特定的功能 
        PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
        //響應這個中斷,以便CPU繼續接收第1組中斷
    }
     
    關閉窗口
    亚洲一区二区制服在线|在绩专区欧美自拍日韩|青春娱乐网97超碰人人射|在线观看国产网址你懂的