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