使用新唐单片机M433。初始化pwm,开启周期中断。在中断里面将一个IO口拉高,再拉低。发现有很长一段时L间,PWM是没有周期中断的,请问这是为什么。周期中断不应该一直都有吗。
void ePWM0_Init()
{
CLK_EnableModuleClock(EPWM0_MODULE);
CLK_SetModuleClock(EPWM0_MODULE, CLK_CLKSEL2_EPWM0SEL_PLL, (uint32_t)NULL);//EPWM时钟频率来源于PLL.EPWMx_CLK = 144,000,000HZ
SYS->GPA_MFPL &= ~(SYS_GPA_MFPL_PA5MFP_Msk | SYS_GPA_MFPL_PA4MFP_Msk | SYS_GPA_MFPL_PA3MFP_Msk | SYS_GPA_MFPL_PA2MFP_Msk);
SYS->GPA_MFPL |= (SYS_GPA_MFPL_PA5MFP_EPWM0_CH0 | SYS_GPA_MFPL_PA4MFP_EPWM0_CH1 | SYS_GPA_MFPL_PA3MFP_EPWM0_CH2 | SYS_GPA_MFPL_PA2MFP_EPWM0_CH3);
EPWM_ConfigOutputChannel(EPWM0, 0, 4000, 50);
EPWM_EnableOutput(EPWM0, EPWM_CH_0_MASK);
EPWM_EnablePeriodInt(EPWM0, 0, 0);
NVIC_EnableIRQ(EPWM0P0_IRQn);
EPWM_Start(EPWM0, EPWM_CH_0_MASK);
}
void EPWM0P0_IRQHandler(void)
{
uint16_t u=100;
if(EPWM_GetPeriodIntFlag(EPWM0, 0))
{
PF4 = 1;
EPWM_ClearPeriodIntFlag(EPWM0, 0);
while(u--);//3.5us
PF4 = 0;
}
}
 |