PWM中断问题

[复制链接]
2311|3
 楼主| 梦想 发表于 2009-3-21 20:52 | 显示全部楼层 |阅读模式
PWM, TE, ST, ps, tc
为什么进不了PWM中断?&nbsp;LPC2132&nbsp;&nbsp;&nbsp;<br /><br />程序如下:<br /><br />/***********************************************<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PWM&nbsp;中断函数<br />************************************************/<br /><br />__irq&nbsp;void&nbsp;motor_pwm(void)<br />{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;PWMIR&nbsp;=0x01;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//若有中断,清除中断<br />&nbsp;VICVectAddr=0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;steps++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//运行步数加1<br />&nbsp;if(steps==m_stepnum)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//判断运行总步数<br />&nbsp;{<br />&nbsp;&nbsp;PWMPCR&nbsp;&nbsp;&nbsp;=&nbsp;(0&lt&lt13);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;disable&nbsp;PWM5输出<br />&nbsp;&nbsp;PWMMCR&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;0x04;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//关闭PWM<br />&nbsp;&nbsp;steps=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//步数清0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;<br />}<br /><br />//----------------------------------------------------------------<br />void&nbsp;motor_run(uint32&nbsp;stepnum,uint32&nbsp;pps)<br />{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;steps&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;m_stepnum=stepnum;<br />&nbsp;&nbsp;&nbsp;&nbsp;m_pps=pps;<br />&nbsp;&nbsp;&nbsp;&nbsp;PWMPR&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;不分频,计数频率为Fpclk<br />&nbsp;&nbsp;&nbsp;&nbsp;PWMMCR&nbsp;&nbsp;=&nbsp;3;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//设置PWMMR0匹配时复位、中断PWMTC<br />&nbsp;&nbsp;&nbsp;&nbsp;PWMPCR&nbsp;&nbsp;&nbsp;=&nbsp;0x2000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;允许PWM5输出,单边PWM<br />&nbsp;&nbsp;&nbsp;&nbsp;PWMMR0&nbsp;&nbsp;&nbsp;=&nbsp;Fpclk&nbsp;/m_pps;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;PWM0频率<br />&nbsp;&nbsp;&nbsp;&nbsp;PWMMR5&nbsp;&nbsp;&nbsp;=&nbsp;PWMMR0&nbsp;/&nbsp;2;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;50%占空比<br />&nbsp;&nbsp;&nbsp;&nbsp;PWMLER&nbsp;&nbsp;&nbsp;=&nbsp;0x21;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;PWM0和PWM5匹配锁存<br />&nbsp;&nbsp;&nbsp;&nbsp;PWMTCR&nbsp;&nbsp;&nbsp;=&nbsp;0x02;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;复位PWMTC<br />&nbsp;&nbsp;&nbsp;PWMTCR&nbsp;&nbsp;&nbsp;=&nbsp;0x09;<br />&nbsp;<br />&nbsp;<br />//------------------------------------------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;VICIntSelect&nbsp;&nbsp;=0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//设置PWM5中断通道设置为IRQ中断&nbsp;&nbsp;<br />&nbsp;VICVectCntl7&nbsp;&nbsp;=&nbsp;0x20&nbsp;|&nbsp;8;&nbsp;&nbsp;&nbsp;&nbsp;//分配PWM5到向量中断7<br />&nbsp;VICVectAddr7&nbsp;&nbsp;=&nbsp;(uint32)motor_pwm;&nbsp;&nbsp;//设置中断服务程序地址&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;VICIntEnable&nbsp;|=(1&lt&lt8);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//使能PWM5中断&nbsp;&nbsp;<br />}<br /><br /><br /><br />为什么能产生波形,而进不了中断呢?&nbsp;请高手指点,谢谢<br />&nbsp;<br />
lelee007 发表于 2009-3-24 01:32 | 显示全部楼层

沙发!WC借LX用

  
阿南 发表于 2009-3-24 09:13 | 显示全部楼层

调试时,不能产生中断通常看源程序是很难发现的,楼主要注意

种寄存器状态标志位,包括处理器外设,以及ARM核的
bwsz 发表于 2009-3-24 10:40 | 显示全部楼层

我可能遇到同样问题

我在KEIL&nbsp;下做定时中断,仿真时提示对定时器的一些寄存器没写权限。估计跟楼主问题差不多,楼主解决了吗。经验分享下,呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

123

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部