定时器中断
1 定时器介绍
2 定时器的配置步骤
#include "time.h"
#include "leds.h"//定时器0初始化函数
//Freq:CPU时钟频率(150MHz)
//Period:定时周期值,单位us
void TIM0_Init(float Freq, float Period)
{EALLOW;SysCtrlRegs.PCLKCR3.bit.CPUTIMER0ENCLK = 1; // CPU Timer 0EDIS;//设置定时器0的中断入口地址为中断向量表的INT0EALLOW;PieVectTable.TINT0 = &TIM0_IRQn;EDIS;//指向定时器0的寄存器地址CpuTimer0.RegsAddr = &CpuTimer0Regs;//设置定时器0的周期寄存器值CpuTimer0Regs.PRD.all = 0xFFFFFFFF;//设置定时器预定标计数器值为0CpuTimer0Regs.TPR.all = 0;CpuTimer0Regs.TPRH.all = 0;//确保定时器0为停止状态CpuTimer0Regs.TCR.bit.TSS = 1;//重载使能CpuTimer0Regs.TCR.bit.TRB = 1;// Reset interrupt counters:CpuTimer0.InterruptCount = 0;ConfigCpuTimer(&CpuTimer0, Freq, Period);//开始定时器功能CpuTimer0Regs.TCR.bit.TSS=0;//开启CPU第一组中断并使能第一组中断的第7个小中断,即定时器0IER |= M_INT1;PieCtrlRegs.PIEIER1.bit.INTx7 = 1;//使能总中断EINT;ERTM;}interrupt void TIM0_IRQn(void)
{EALLOW;LED2_TOGGLE;PieCtrlRegs.PIEACK.bit.ACK1=1;EDIS;
}
#ifndef TIME_H_
#define TIME_H_#include "DSP2833x_Device.h" // DSP2833x 头文件
#include "DSP2833x_Examples.h" // DSP2833x 例子相关头文件void TIM0_Init(float Freq, float Period);
interrupt void TIM0_IRQn(void);void TIM1_Init(float Freq, float Period);
interrupt void TIM1_IRQn(void);void TIM2_Init(float Freq, float Period);
interrupt void TIM2_IRQn(void);#endif /* TIME_H_ */
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File#include "leds.h"
#include "time.h"/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main()
{int i=0;InitSysCtrl();InitPieCtrl();IER = 0x0000;IFR = 0x0000;InitPieVectTable();LED_Init();TIM0_Init(150,500000);//定时500mswhile(1){i++;if(i%2000==0){LED1_TOGGLE;}DELAY_US(100);}
}