//#####################################################################
//文件: Example_281xCpuTimer.c
//說明: 定時器應(yīng)用實(shí)例
//#####################################################################
#include "DSP281x_Device.h"
#include "DSP281x_Examples.h"
//定時器中斷服務(wù)程序聲明
interrupt void cpu_timer0_isr(void);
//主程序
void main(void)
{
//Step 1. 初始化系統(tǒng)控制
InitSysCtrl(); //初始化系統(tǒng)控制寄存器、PLL、看門狗和時種
//Step 2. 初始化 GPIO
//InitGpio(); //本例中沒有使用,跳過
//Step 3. 清除所有中斷,初始化PIE中斷向量表
DINT; //關(guān)CPU中斷
InitPieCtrl();
//初始化PIE控制寄存器組到默認(rèn)狀態(tài),這個子程序在DSP281x_PieCtrl.c
IER = 0x0000; //禁止所有CPU中斷
IFR = 0x0000; //清除所有CPU中斷標(biāo)志位
InitPieVectTable();
//初始化PIE中斷向量表,這個子程序在DSP281x_PieVect.c
EALLOW; //關(guān)保護(hù)
PieVectTable.TINT0 = &cpu_timer0_isr; //中斷向量指向中斷服務(wù)程序
EDIS; //開保護(hù)
//Step 4. 初始化所有片內(nèi)外設(shè)
//InitPeripherals(); //沒有使用,跳過,在DSP281x_InitPeripherals.c
InitCpuTimers(); //初始化定時器寄存器組
ConfigCpuTimer(&CpuTimer0, 100, 1000000);
//配置CPU-Timer 0 中斷周期為1s,100MHz CPU頻率,可以根據(jù)頻率改變實(shí)參
StartCpuTimer0(); //啟動定時器 0
//Step 5. 用戶代碼,打開中斷
IER |= M_INT1; //使能第一組PIE中斷
PieCtrlRegs.PIEIER1.bit.INTx7 = 1; //使能第一組的中斷7
EINT; //使能全局中斷
ERTM; //使能DEBUG中斷
//Step 6. 空循環(huán),等待中斷
for(;;);
}
//中斷服務(wù)子程序
interrupt void cpu_timer0_isr(void)
{
CpuTimer0.InterruptCount++;
//用戶可以在此處添加自己的代碼,以完成某些特定的功能
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
//響應(yīng)這個中斷,以便CPU繼續(xù)接收第1組中斷
}