[ZLG-ARM] 求救LPC2378外部中断问题!

[复制链接]
 楼主| zzzpf 发表于 2007-8-4 10:08 | 显示全部楼层 |阅读模式
各高手,小弟在用LPC2378的外部中断0的时候,它一直不执行中断子程序,就是进不了中断,希望大家给会诊一下。我的程序是这样写的:<br />#include&nbsp;&quot;config.h&quot;<br /><br />#define&nbsp;BEEP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&lt&lt&nbsp;25&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;P4.25控制蜂鸣器,高电平蜂鸣<br /><br />/*<br />*********************************************************************************************************<br />**&nbsp;函数名称&nbsp;:DelayNS()<br />**&nbsp;函数功能&nbsp;:长软件延时<br />**&nbsp;入口参数&nbsp;:dly&nbsp;&nbsp;&nbsp;&nbsp;延时参数,值越大,延时越久<br />**&nbsp;出口参数&nbsp;:无<br />*********************************************************************************************************<br />*/<br />void&nbsp;DelayNS&nbsp;(uint32&nbsp;dly)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;uint32&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(&nbsp;;&nbsp;dly&gt0;&nbsp;dly--)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i=0;&nbsp;i&lt50000;&nbsp;i++);<br />}<br /><br />/*<br />*********************************************************************************************************<br />**&nbsp;函数名称&nbsp;:IRQ_Eint0()<br />**&nbsp;函数功能&nbsp;:外部中断0&nbsp;EINT0服务程序<br />**&nbsp;入口参数&nbsp;:无。<br />**&nbsp;出口参数&nbsp;:无。<br />*********************************************************************************************************<br />*/<br />void&nbsp;__irq&nbsp;IRQ_Eint0&nbsp;(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;EXTINT&nbsp;=&nbsp;0x01;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;清除EINT0中断标志<br />&nbsp;&nbsp;&nbsp;&nbsp;FIO4SET&nbsp;=&nbsp;BEEP;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DelayNS(1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FIO4CLR&nbsp;=&nbsp;BEEP;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DelayNS(1);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;向量中断结束<br />}<br /><br />/*<br />*********************************************************************************************************<br />**&nbsp;函数名称&nbsp;:main()<br />**&nbsp;函数功能&nbsp;:<br />**&nbsp;调试说明&nbsp;:*********************************************************************************************************<br />*/<br />int&nbsp;main&nbsp;(void)<br />{<br />&nbsp;&nbsp;//------管脚功能设置------<br />&nbsp;&nbsp;PINSEL0&nbsp;=&nbsp;0x00000300;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置管脚(P0.0~P0.3、P0.5~P0.15)连接GPIO,P0.4连接计数设置<br />&nbsp;&nbsp;PINSEL1&nbsp;=&nbsp;0x0000EA80;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置管脚(P0.16~P0.18、P0.24~P0.31)连接GPIO,(P0.19~P0.22)连接SD卡设置,P0.23连接计数设置<br />&nbsp;&nbsp;PINSEL2&nbsp;=&nbsp;0x50150105;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置管脚(P1.0~P1.15)连接到网口设置<br />&nbsp;&nbsp;PINSEL3&nbsp;=&nbsp;0x00000035;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置管脚(P1.16~P1.17)连接到网口设置,其他管脚连接GPIO<br />&nbsp;&nbsp;PINSEL4&nbsp;=&nbsp;0x0A900000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置管脚(P2.0~P2.9)连接到GPIO,(P2.11~P2.13)连接SD卡设置,P2.10连接中断<br />&nbsp;&nbsp;PINSEL6&nbsp;=&nbsp;0x00000000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置管脚(P3.0~P3.7)连接到GPIO<br />&nbsp;&nbsp;PINSEL7&nbsp;=&nbsp;0x00008000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置管脚(P3.24~P3.26)连接到GPIO,P3.23连接到计数器(系统中未用到P3.23)<br />&nbsp;&nbsp;PINSEL8&nbsp;=&nbsp;0x00000000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置管脚(P4.0~P4.15)连接到GPIO<br />&nbsp;&nbsp;PINSEL9&nbsp;=&nbsp;0x0F000000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置管脚(P4.24~P4.25、P4.30~P4.31)连接到GPIO(系统中未用到P4.24),(P4.28~P4.29)连接到串口<br />&nbsp;&nbsp;FIO4DIR&nbsp;=&nbsp;BEEP;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设定蜂鸣器控制管脚输出&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;//------外部中断0初始化------<br />&nbsp;&nbsp;VICIntSelect&nbsp;&nbsp;&nbsp;=&nbsp;0x00000000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置所有中断分配为IRQ中断<br />&nbsp;&nbsp;VICVectPri14&nbsp;&nbsp;&nbsp;=&nbsp;0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;分配外部中断0到向量中断0<br />&nbsp;&nbsp;VICVectAddr14&nbsp;&nbsp;&nbsp;=&nbsp;(uint32)IRQ_Eint0;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置中断服务程序地址<br />&nbsp;&nbsp;VICIntEnable&nbsp;&nbsp;&nbsp;=&nbsp;1&nbsp;&lt&lt&nbsp;14;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;使能EINT0中断<br />&nbsp;&nbsp;EXTMODE&nbsp;|=0x01;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//设置中断0为边缘触发<br />&nbsp;&nbsp;EXTPOLAR&nbsp;=&nbsp;0x01;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//设置为上升沿触发<br />&nbsp;&nbsp;EXTINT&nbsp;&nbsp;&nbsp;=&nbsp;0x01;&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;清除EINT0中断标志<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(1);<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />}<br />/*********************************************************************************************************<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;&nbsp;&nbsp;&nbsp;End&nbsp;Of&nbsp;File<br />********************************************************************************************************/<br /><br /><br />不知道是我中断设置有问题还是怎么回事,高手们帮帮小弟!先谢了!
zlgarm 发表于 2007-8-5 22:35 | 显示全部楼层

Re

此时IRQ是否使能。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

30

帖子

1

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