久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

TMS320F2812外設(shè)例程系列之EvTimerPeriod

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

  //#####################################################################

//文件:  Example_281xEvTimerPeriod.c
//說明:  配置EVA定時器1,EVA定時器2,EVB定時器3,定時器4為周期溢出中斷。
//       每進(jìn)行一次中斷響應(yīng)計數(shù)器加1。EVA定時器1的周期最短,EVB定時器4的周期最長
//測試變量:
//                 EvaTimer1InterruptCount;
//                 EvaTimer2InterruptCount;
//                 EvbTimer3InterruptCount;
//                 EvbTimer4InterruptCount;
//#####################################################################
#include "DSP281x_Device.h"   
#include "DSP281x_Examples.h"   
//功能函數(shù)原型
interrupt void eva_timer1_isr(void);
interrupt void eva_timer2_isr(void);
interrupt void evb_timer3_isr(void);
interrupt void evb_timer4_isr(void);
void init_eva_timer1(void);
void init_eva_timer2(void);
void init_evb_timer3(void);
void init_evb_timer4(void);
//全局變量
Uint32  EvaTimer1InterruptCount;
Uint32  EvaTimer2InterruptCount;
Uint32  EvbTimer3InterruptCount;
Uint32  EvbTimer4InterruptCount;
//主程序
void main(void)
{
  //步驟1.初始化系統(tǒng)控制(PLL,看門狗,使能外設(shè)時鐘)
    InitSysCtrl();
  //步驟2.初始化GPIO 
  //InitGpio();   //本例中跳過  
  //步驟3.清除所有中斷并初始化PIE中斷向量表,禁止CPU中斷
    DINT;
  //初始化PIE控制寄存器
    InitPieCtrl();
  //禁止CPU中斷并清除所有CPU中斷
    IER = 0x0000;
    IFR = 0x0000;
  //初始化PIE中斷向量表 
    InitPieVectTable();
  //本例中用到的中斷映射
    EALLOW;  
    PieVectTable.T1PINT = &eva_timer1_isr;
    PieVectTable.T2PINT = &eva_timer2_isr;
    PieVectTable.T3PINT = &evb_timer3_isr;
    PieVectTable.T4PINT = &evb_timer4_isr;
    EDIS;   
  //步驟4.初始化所有外設(shè)
  //InitPeripherals();   //本例中不需要,可以跳過
    init_eva_timer1();
    init_eva_timer2();
    init_evb_timer3();
    init_evb_timer4();
  //步驟5.使能中斷
    //初始化計數(shù)值為 0 
    EvaTimer1InterruptCount = 0;
    EvaTimer2InterruptCount = 0;
    EvbTimer3InterruptCount = 0;
    EvbTimer4InterruptCount = 0;
    PieCtrlRegs.PIEIER2.all = M_INT4;       //使能INT2.4(T1PINT)
    PieCtrlRegs.PIEIER3.all = M_INT1;       //使能INT3.1(T2PINT)
    PieCtrlRegs.PIEIER4.all = M_INT4;       //使能INT4.4(T3PINT)
    PieCtrlRegs.PIEIER5.all = M_INT1;       //使能INT5.1(T4PINT)
    //使能CPU中斷INT2(T1PINT)、INT3(T2PINT)、INT4(T3PINT)、INT5(T4PINT)
    IER |= (M_INT2 | M_INT3 | M_INT4 | M_INT5);
    //使能全局中斷和全局實時DBGM中斷
    EINT;   //使能全局中斷INTM
    ERTM;   //使能全局實時中斷DBGM
    //步驟6.空循環(huán)
    for(;;);
}
//EVA定時器1初始化程序
void init_eva_timer1(void)
{
    //初始化EVA 定時器1: 配置定時器1寄存器組(EVA)
    EvaRegs.GPTCONA.all = 0;
    //配置通用定時器1周期為0x0200
    EvaRegs.T1PR = 0x0200;         //周期
    EvaRegs.T1CMPR = 0x0000;       //比較寄存器值
    //使能通用定時器 1 周期中斷位、遞增計數(shù)、內(nèi)部時鐘模式、使能比較
    EvaRegs.EVAIMRA.bit.T1PINT = 1;
    EvaRegs.EVAIFRA.bit.T1PINT = 1;
    EvaRegs.T1CNT = 0x0000;         //清除通用定時器 1 的計數(shù)器
    EvaRegs.T1CON.all = 0x1742;
    EvaRegs.GPTCONA.bit.T1TOADC = 2; //定時器 1 周期中斷啟動 EVA ADC 轉(zhuǎn)換
}
//EVA 定時器 2 初始化程序
void init_eva_timer2(void)
{
    //初始化 EVA定時器2: 設(shè)置定時器2寄存器組(EV A)
    EvaRegs.GPTCONA.all = 0;  
    //配置通用定時器2的周期為0x0200;
    EvaRegs.T2PR = 0x0400;       //周期
    EvaRegs.T2CMPR = 0x0000;     //比較寄存器
    //使能通用定時器2周期中斷、遞增計數(shù)、內(nèi)部時鐘模式、使能比較
    EvaRegs.EVAIMRB.bit.T2PINT = 1;
    EvaRegs.EVAIFRB.bit.T2PINT = 1;
    EvaRegs.T2CNT = 0x0000;       //清除通用定時器2的計數(shù)器
    EvaRegs.T2CON.all = 0x1742;
    EvaRegs.GPTCONA.bit.T2TOADC = 2; //周期中斷啟動EVA ADC轉(zhuǎn)換
}
//EVB定時器3初始化程序
void init_evb_timer3(void)
{
    //初始化EVB定時器3:
    //設(shè)置定時器3寄存器組(EV B)
    EvbRegs.GPTCONB.all = 0;
    //配置通用定時器3的周期為 0x0200;
EvbRegs.T3PR = 0x0800;       //周期
EvbRegs.T3CMPR = 0x0000;     //比較寄存器
    //使能通用定時器3周期中斷、遞增計數(shù)、內(nèi)部時鐘模式、使能比較
    EvbRegs.EVBIMRA.bit.T3PINT = 1;
    EvbRegs.EVBIFRA.bit.T3PINT = 1;
    EvbRegs.T3CNT = 0x0000;     //清除通用定時器3的計數(shù)器
    EvbRegs.T3CON.all = 0x1742;
    EvbRegs.GPTCONB.bit.T3TOADC = 2;   //定時器3周期中斷啟動EVA ADC轉(zhuǎn)換
}
//EVB定時器4初始化程序
void init_evb_timer4(void)
{
    //初始化EVB定時器4:
    //設(shè)置定時器4寄存器 (EV B)
    EvbRegs.GPTCONB.all = 0;
    //配置通用定時器4的周期為 0x0200;
    EvbRegs.T4PR = 0x1000;     //周期
    EvbRegs.T4CMPR = 0x0000;     //比較寄存器
    //使能通用定時器4周期中斷、遞增計數(shù)、內(nèi)部時鐘模式、使能比較
    EvbRegs.EVBIMRB.bit.T4PINT = 1;
    EvbRegs.EVBIFRB.bit.T4PINT = 1;
    EvbRegs.T4CNT = 0x0000;     //清除通用定時器4的計數(shù)器
    EvbRegs.T4CON.all = 0x1742;
    EvbRegs.GPTCONB.bit.T4TOADC = 2;   //定時器4周期中斷啟動EVA ADC轉(zhuǎn)換
//EVA 定時器 1 中斷服務(wù)程序
interrupt void eva_timer1_isr(void)
{
    EvaTimer1InterruptCount++;
    EvaRegs.EVAIMRA.bit.T1PINT = 1; //使能來自這個定時器的更多的中斷
    EvaRegs.EVAIFRA.all = BIT7;         //注意,為了安全,寫一個掩碼到程序整體
    PieCtrlRegs.PIEACK.all = PIEACK_GROUP2;
  //應(yīng)答中斷接收更多的來自PIE第2組的中斷
}
//EVA定時器2中斷服務(wù)程序
interrupt void eva_timer2_isr(void)
{
  EvaTimer2InterruptCount++;
  //使能來自這個定時器的更多的中斷
  EvaRegs.EVAIMRB.bit.T2PINT = 1;
  EvaRegs.EVAIFRB.all = BIT0;         //注意,為了安全,寫一個掩碼到程序整體
  PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;  
  //應(yīng)答中斷接收更多的來自PIE第3組的中斷
}
//EVB 定時器 3 中斷服務(wù)程序
interrupt void evb_timer3_isr(void)
{
  EvbTimer3InterruptCount++;
  EvbRegs.EVBIFRA.all = BIT7;         //注意,為了安全,寫一個掩碼到程序整體
  PieCtrlRegs.PIEACK.all = PIEACK_GROUP4;  
  //應(yīng)答中斷接收更多的來自PIE第4組的中斷
}
//EVB 定時器 4 中斷服務(wù)程序
interrupt void evb_timer4_isr(void)
{
    EvbTimer4InterruptCount++;
    EvbRegs.EVBIFRB.all = BIT0;         //注意,為了安全,寫一個掩碼到程序整體
    PieCtrlRegs.PIEACK.all = PIEACK_GROUP5;  
  //應(yīng)答中斷接收更多的來自PIE第5組的中斷
}
關(guān)閉窗口
主站蜘蛛池模板: 亚洲一区二区三区四区av | 成人综合一区二区 | 久草成人 | 毛片av免费在线观看 | 国产精品第2页 | 在线观看第一页 | 国产99视频精品免费视频7 | 国产精品免费看 | 欧美激情视频一区二区三区在线播放 | 涩涩导航 | 成人免费在线观看视频 | 久久久噜噜噜久久中文字幕色伊伊 | 国产精品久久久久久久久久免费看 | 本道综合精品 | 99国产精品久久久久久久 | 久久五月婷 | 日韩av手机在线观看 | 久草新在线 | 九九伊人sl水蜜桃色推荐 | 亚洲日本免费 | 在线黄| 欧美激情一区二区三区 | 成年网站在线观看 | 成人午夜免费福利视频 | 欧美视频在线播放 | 91成人精品 | 一区二区中文 | 激情91| 天天干.com | 国产欧美在线观看 | 亚洲免费视频在线观看 | 国产精品久久久久久婷婷天堂 | 国产成人精品福利 | 国产超碰人人爽人人做人人爱 | 91精品国产乱码久久久久久久久 | 亚洲视频欧美视频 | 亚洲精选久久 | 中国一级大黄大片 | 国内精品在线视频 | 欧美一区二区在线播放 | 96国产精品久久久久aⅴ四区 |