链接仿真时,应用TZ触发,OST脉冲触发中断,TZEINT和PIE外设已经使能。
现在问题是:当发生GPIO为低,TZ触发能够封锁PWM脉冲,仿真打断点能够进入TZ触发中断,正常。但是如果不打断点,连续运行,即使TZ为低了,都不能进入tz触发中断?这是为何?
TZ触发中断,打断点和连续运行,有何区别?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
链接仿真时,应用TZ触发,OST脉冲触发中断,TZEINT和PIE外设已经使能。
现在问题是:当发生GPIO为低,TZ触发能够封锁PWM脉冲,仿真打断点能够进入TZ触发中断,正常。但是如果不打断点,连续运行,即使TZ为低了,都不能进入tz触发中断?这是为何?
TZ触发中断,打断点和连续运行,有何区别?
判断GPIO16是否为低,进中断。我是将GPIO16引线手动接触GND进行拉低。
初始化:
EALLOW;
EPwm7Regs.TZCLR.bit.OST = 1;
EPwm7Regs.TZCLR.bit.INT = 1;
EPwm7Regs.TZSEL.bit.OSHT1 = 1;
EPwm7Regs.TZCTL.bit.TZA = TZ_FORCE_LO;
EPwm7Regs.TZCTL.bit.TZB = TZ_FORCE_LO;
EPwm7Regs.TZEINT.bit.OST = 1;
EDIS;
使能中断组:PIE外设中断
EALLOW;
PieVectTable.EPWM7_TZINT = &tz7int_isr;
EDIS;
PieCtrlRegs.PIEIER2.bit.INTx7 = TZINT7_ENABLE;
当GPIO16为低时,触发中断:
GpioCtrlRegs.GPAPUD.bit.GPIO16 = 0; // (TZ1)
GpioCtrlRegs.GPAQSEL2.bit.GPIO16 = 3; // (TZ1)
GpioCtrlRegs.GPAMUX2.bit.GPIO16 = 3; //
中断函数:
interrupt void tz7int_isr(void)
{
...绿灯亮...
}
当将GPIO16拉低至GND时,打断点能够,进入tz7int_isr函数,连续运行没有不能进tz7int_isr函数,但是能够看到TZ中断标志位置1了:EPwm7Regs.TZFLG.bit.OST=1,EPwm7Regs.TZFLG.bit.INT=1,但是就是不进中断,是否进中断以“绿灯事宜”。