[ZLG-ARM] ads中__irq的疑问!

[复制链接]
2774|3
 楼主| luogs 发表于 2007-7-31 09:13 | 显示全部楼层 |阅读模式
一般介绍的是在不嵌套的isr中,使用__irq编译器自动产生寄存器保护代码.<br /><br />在ZLG的提供的ucso-ii的例程中isr都没有加__irq,我在isr上加上__irq也运行正常,但是timer0(提供ucos-ii&nbsp;time&nbsp;tick)&nbsp;isr&nbsp;前加__irq就运行不对了,哪位大侠可以解释一下吗?
Ice_River 发表于 2007-7-31 11:28 | 显示全部楼层

去查查 加__irq和不加的区别!

我记得看到过,周工的某个文档里面有,想不起来了,抱歉!!!!
bear2000 发表于 2007-7-31 15:45 | 显示全部楼层

我的一点理解

在target.c中有一段代码<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;IRQ_Exception(void)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;while(1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br />以及在初始化中断向量时&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;VICDefVectAddr&nbsp;=&nbsp;(uint32)IRQ_Handler;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(2)<br />在IRQ.S中:<br />&nbsp;&nbsp;&nbsp;IRQ_Handler&nbsp;HANDLER&nbsp;IRQ_Exception&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(3)<br /><br />我的理解是如果在ISR后面加入&quot;__irq&quot;,编译器会将该ISR认为是irq中的一员,根据(1)(2)(3),最终的结果是程序一直在中断服务程序中循环,不能从中断中恢复。<br /><br />本人在尝试将LPC2141的虚拟串口程序移植到ucosii的过程中就遇到过以上我说的问题,后来在将ISR后面的&quot;__irq&quot;取掉以后,能够退出中断服务程序,虚拟串口程序也能正常运行。
wlsui 发表于 2007-7-31 23:35 | 显示全部楼层

Re

看下加了__irq时编译器的汇编代码就知道了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

70

帖子

0

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