专注电子技术学习与研究
当前位置:单片机教程网 >> 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组中断
}
 
关闭窗口