写了个函数:
定义变量等;
main()
{
程序初始化,中断向量一堆;
PWM_ComplPairDB_CNF(1, 2000);
PWM_1ch_CNF(4, 2000);
EALLOW;
PieVectTable.EPWM1_INT = &DATA1_ISR;
PieCtrlRegs.PIEIER3.bit.INTx1 = 1;
EPwm4Regs.CMPB =10;
EPwm1Regs.ETSEL.bit.INTSEL = ET_CTRU_CMPB;
EPwm1Regs.ETSEL.bit.INTEN = 1;
EPwm1Regs.ETPS.bit.INTPRD = ET_1ST;
PieVectTable.EPWM4_INT = &DATA2_ISR;
PieCtrlRegs.PIEIER3.bit.INTx4 = 1;
EPwm4Regs.CMPB =150;
EPwm4Regs.ETSEL.bit.INTSEL = ET_CTRU_CMPB;
EPwm4Regs.ETSEL.bit.INTEN = 1;
EPwm4Regs.ETPS.bit.INTPRD = ET_1ST;
EDIS;
IER |= M_INT3;
EINT;
ERTM;
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;// PWM1 和PWM4 同步
EDIS;
for(;;)
{
无中断普通函数();
}
interrupt void DATA1(void)
{
程序;//大约耗费50
}
interrupt void DATA2(void)
{
程序;//时钟大约耗费2000
}
从PWM1和PWM4开始计数后,应该计数到10的时候应该跳转到interrupt void DATA1(void)中的,计算到200后应该跳转到interrupt void DATA1(void)中的,
可是,在interrupt void DATA1(void)中设置了一个断点后,程序有的时候能跳进来,有时候又跳不进来。不知道怎么搞的?
在实施模式下,发现从检测到EPWM.的计算器为10到跳进interrupt void DATA1(void),竟然用了160多个时钟周期。不知道怎么搞的又?
谢谢帮忙!
