最开始以为28335的PWM会和其定时器有关系,后面才知道。没啥关系,28335的PWM输出是由ePWM模块控制的;这里的定时器主要用来定时中断。跟STM32有所区别,但是原理一样,只是产生的方式有所不同。
//C28335一共三个定时器timer0、1、2
//timer0、1为通用定时器
//timer2主要用于操作系统时,若没有移植操作系统,可以将其作为通用定时器
//在初始化系统函数
InitSysCtrl();
//禁止产生中断
DINT;
//初始化PIE控制函数
InitPieCtrl();
//PIE向量表初始化
InitPieVectTable();
//将自定义的定时器中断函数映射到向量表中
PieVectTable.TINT0 = &cpu_timer0_isr;
//配置定时器
InitCpuTimers();
//配置定时器中断周期 参数:定时器结构体指针, 定时器频率(MHz), 目标周期时间(uS)
//T=Freq*Period/150000000(s)
ConfigCpuTimer(&CpuTimer0, 150, 500000);
//开启定时器
CpuTimer0Regs.TCR.all = 0x4001;
//使能CPU级中断:设置第一组中断源将会产生,
IER |= M_INT1;
//使能PIE级中断:第一组中断组中的第七个小中断
PieCtrlRegs.PIEIER1.bit.INTx7 = 1;
//开启中断
EINT;
//主循环
//自定义的中断服务函数
interrupt void cpu_timer0_isr(void){
//中断次数计数器
CpuTimer0.InterruptCount++;
//中断内容
//确认第一组cpu中断结束
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
1
2