2410不开中断却中断,这是为什么???

[复制链接]
2765|0
 楼主| 52mcu 发表于 2007-5-28 21:01 | 显示全部楼层 |阅读模式
一下为三星的中断测试代码<br />未见有将cpsr中的IRQ中断屏蔽为I请零的操作。却能中断,这是为什么?????<br /><br /><br /><br /><br />void&nbsp;Test_Eint(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;extintMode;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Uart_Printf(&quot;[External&nbsp;Interrupt&nbsp;Test&nbsp;through&nbsp;PF0/2/11/19]\n&quot;);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Uart_Printf(&quot;1.L-LEVEL&nbsp;&nbsp;2.H-LEVEL&nbsp;&nbsp;3.F-EDGE&nbsp;&nbsp;4.R-EDGE&nbsp;&nbsp;5.B-EDGE\n&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;Uart_Printf(&quot;Select&nbsp;the&nbsp;external&nbsp;interrupt&nbsp;type.\n&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;extintMode=Uart_Getch();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//extintMode='3';<br />&nbsp;&nbsp;&nbsp;&nbsp;rGPFCON&nbsp;=&nbsp;(rGPFCON&nbsp;&&nbsp;0xffcc)|(1&lt&lt5)|(1&lt&lt1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PF0/2&nbsp;=&nbsp;EINT0/2<br />&nbsp;&nbsp;&nbsp;&nbsp;rGPGCON&nbsp;=&nbsp;(rGPGCON&nbsp;&&nbsp;0xff3fff3f)|(1&lt&lt23)|(1&lt&lt7);&nbsp;&nbsp;&nbsp;&nbsp;//PG3/11&nbsp;=&nbsp;EINT11/19<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;switch(extintMode)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;'1':<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rEXTINT0&nbsp;=&nbsp;(rEXTINT0&nbsp;&&nbsp;~((7&lt&lt8)&nbsp;&nbsp;|&nbsp;(0x7&lt&lt0)))&nbsp;|&nbsp;0x0&lt&lt8&nbsp;|&nbsp;0x0&lt&lt0;&nbsp;//EINT0/2=low&nbsp;level&nbsp;triggered<br />&nbsp;&nbsp;&nbsp;&nbsp;rEXTINT1&nbsp;=&nbsp;(rEXTINT1&nbsp;&&nbsp;~(7&lt&lt12))&nbsp;|&nbsp;0x0&lt&lt12;&nbsp;//EINT11=low&nbsp;level&nbsp;triggered<br />&nbsp;&nbsp;&nbsp;&nbsp;rEXTINT2&nbsp;=&nbsp;(rEXTINT2&nbsp;&&nbsp;~(7&lt&lt12))&nbsp;|&nbsp;0x0&lt&lt12;&nbsp;//EINT19=low&nbsp;level&nbsp;triggered<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;'2':<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rEXTINT0&nbsp;=&nbsp;(rEXTINT0&nbsp;&&nbsp;~((7&lt&lt8)&nbsp;&nbsp;|&nbsp;(0x7&lt&lt0)))&nbsp;|&nbsp;0x1&lt&lt8&nbsp;|&nbsp;0x1&lt&lt0;&nbsp;//EINT0/2=high&nbsp;level&nbsp;triggered<br />&nbsp;&nbsp;&nbsp;&nbsp;rEXTINT1&nbsp;=&nbsp;(rEXTINT1&nbsp;&&nbsp;~(7&lt&lt12))&nbsp;|&nbsp;0x1&lt&lt12;&nbsp;//EINT11=high&nbsp;level&nbsp;triggered<br />&nbsp;&nbsp;&nbsp;&nbsp;rEXTINT2&nbsp;=&nbsp;(rEXTINT2&nbsp;&&nbsp;~(7&lt&lt12))&nbsp;|&nbsp;0x1&lt&lt12;&nbsp;//EINT19=high&nbsp;level&nbsp;triggered<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;'3':<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rEXTINT0&nbsp;=&nbsp;(rEXTINT0&nbsp;&&nbsp;~((7&lt&lt8)&nbsp;&nbsp;|&nbsp;(0x7&lt&lt0)))&nbsp;|&nbsp;0x2&lt&lt8&nbsp;|&nbsp;0x2&lt&lt0;&nbsp;//EINT0/2=falling&nbsp;edge&nbsp;triggered<br />&nbsp;&nbsp;&nbsp;&nbsp;rEXTINT1&nbsp;=&nbsp;(rEXTINT1&nbsp;&&nbsp;~(7&lt&lt12))&nbsp;|&nbsp;0x2&lt&lt12;&nbsp;//EINT11=falling&nbsp;edge&nbsp;triggered<br />&nbsp;&nbsp;&nbsp;&nbsp;rEXTINT2&nbsp;=&nbsp;(rEXTINT2&nbsp;&&nbsp;~(7&lt&lt12))&nbsp;|&nbsp;0x2&lt&lt12;&nbsp;//EINT19=falling&nbsp;edge&nbsp;triggered<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;'4':<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rEXTINT0&nbsp;=&nbsp;(rEXTINT0&nbsp;&&nbsp;~((7&lt&lt8)&nbsp;&nbsp;|&nbsp;(0x7&lt&lt0)))&nbsp;|&nbsp;0x4&lt&lt8&nbsp;|&nbsp;0x4&lt&lt0;&nbsp;//EINT0/2=rising&nbsp;edge&nbsp;triggered<br />&nbsp;&nbsp;&nbsp;&nbsp;rEXTINT1&nbsp;=&nbsp;(rEXTINT1&nbsp;&&nbsp;~(7&lt&lt12))&nbsp;|&nbsp;0x4&lt&lt12;&nbsp;//EINT11=rising&nbsp;edge&nbsp;triggered<br />&nbsp;&nbsp;&nbsp;&nbsp;rEXTINT2&nbsp;=&nbsp;(rEXTINT2&nbsp;&&nbsp;~(7&lt&lt12))&nbsp;|&nbsp;0x4&lt&lt12;&nbsp;//EINT19=rising&nbsp;edge&nbsp;triggered<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;'5':<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rEXTINT0&nbsp;=&nbsp;(rEXTINT0&nbsp;&&nbsp;~((7&lt&lt8)&nbsp;&nbsp;|&nbsp;(0x7&lt&lt0)))&nbsp;|&nbsp;0x6&lt&lt8&nbsp;|&nbsp;0x6&lt&lt0;&nbsp;//EINT0/2=both&nbsp;edge&nbsp;triggered<br />&nbsp;&nbsp;&nbsp;&nbsp;rEXTINT1&nbsp;=&nbsp;(rEXTINT1&nbsp;&&nbsp;~(7&lt&lt12))&nbsp;|&nbsp;0x6&lt&lt12;&nbsp;//EINT11=both&nbsp;edge&nbsp;triggered<br />&nbsp;&nbsp;&nbsp;&nbsp;rEXTINT2&nbsp;=&nbsp;(rEXTINT2&nbsp;&&nbsp;~(7&lt&lt12))&nbsp;|&nbsp;0x6&lt&lt12;&nbsp;//EINT19=both&nbsp;edge&nbsp;triggered<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;default:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Uart_Printf(&quot;Press&nbsp;the&nbsp;EINT0/2/11/19&nbsp;buttons&nbsp;or&nbsp;Press&nbsp;any&nbsp;key&nbsp;to&nbsp;exit.\n&quot;);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;pISR_EINT0=(U32)Eint0Int;<br />&nbsp;&nbsp;&nbsp;&nbsp;pISR_EINT2=(U32)Eint2Int;<br />&nbsp;&nbsp;&nbsp;&nbsp;pISR_EINT8_23=(U32)Eint11_19;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;rEINTPEND&nbsp;=&nbsp;0xffffff;<br />&nbsp;&nbsp;&nbsp;&nbsp;rSRCPND&nbsp;=&nbsp;BIT_EINT0|BIT_EINT2|BIT_EINT8_23;&nbsp;//to&nbsp;clear&nbsp;the&nbsp;previous&nbsp;pending&nbsp;states<br />&nbsp;&nbsp;&nbsp;&nbsp;rINTPND&nbsp;=&nbsp;BIT_EINT0|BIT_EINT2|BIT_EINT8_23;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;rEINTMASK=~(&nbsp;(1&lt&lt11)|(1&lt&lt19)&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;rINTMSK=~(BIT_EINT0|BIT_EINT2|BIT_EINT8_23);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;Uart_Getch();<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;rEINTMASK=0xffffff;<br />&nbsp;&nbsp;&nbsp;&nbsp;rINTMSK=BIT_ALLMSK;<br />}<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

157

主题

292

帖子

0

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