为什么进不了PWM中断? LPC2132
程序如下:
/*********************************************** PWM 中断函数 ************************************************/
__irq void motor_pwm(void) { PWMIR =0x01; //若有中断,清除中断 VICVectAddr=0x00; steps++; //运行步数加1 if(steps==m_stepnum) //判断运行总步数 { PWMPCR = (0<<13); // disable PWM5输出 PWMMCR = 0x04; //关闭PWM steps=0; //步数清0 }
}
//---------------------------------------------------------------- void motor_run(uint32 stepnum,uint32 pps) { steps = 0; m_stepnum=stepnum; m_pps=pps; PWMPR = 0x00; // 不分频,计数频率为Fpclk PWMMCR = 3; //设置PWMMR0匹配时复位、中断PWMTC PWMPCR = 0x2000; // 允许PWM5输出,单边PWM PWMMR0 = Fpclk /m_pps; // PWM0频率 PWMMR5 = PWMMR0 / 2; // 50%占空比 PWMLER = 0x21; // PWM0和PWM5匹配锁存 PWMTCR = 0x02; // 复位PWMTC PWMTCR = 0x09;
//------------------------------------------------------------------ VICIntSelect =0x00; //设置PWM5中断通道设置为IRQ中断 VICVectCntl7 = 0x20 | 8; //分配PWM5到向量中断7 VICVectAddr7 = (uint32)motor_pwm; //设置中断服务程序地址 VICIntEnable |=(1<<8); //使能PWM5中断 }
为什么能产生波形,而进不了中断呢? 请高手指点,谢谢
|