[ZLG-ARM] 麻烦下周公, smart2300 自己添加的中断程序怪问题

[复制链接]
2562|5
 楼主| db10 发表于 2008-11-12 11:50 | 显示全部楼层 |阅读模式
&nbsp;在2300板子,带ucos,tcp的程序里添加另外的串口或者I2C程序出现比较怪的现象。调试用H-JTAG。<br />1.例如添加了串口驱动后,程序可以进入串口中断响应,但是一直在串口中断里出不来了,就是说不停的进出串口中断,别的程序不能执行了。<br />2.将我的串口响应程序如void&nbsp;&nbsp;Uart0Receive(void)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;......<br />&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;现在写成:void&nbsp;&nbsp;__Uart0Receive(void)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />上面唯一改动就是函数名字前加了下划线。程序就可以了。但是感觉怪怪的。<br /><br />&nbsp;我看了下有关如void&nbsp;&nbsp;__irq&nbsp;Uart0Receive(void)的写法,加__irq和没有加是有区别的,加了就是函数本身可以告诉编译器这是中断函数,编程成中断函数,有堆栈的进出编译。没有加相反。然后有操作系统的程序,在startup.s里有中断的堆栈等操作,不需要加__irq。加的话是不对的。而现在的问题是在函数加下划线,搞不太清楚,怎么回事。相反加这个下划程序就能跑。。奇怪??
 楼主| db10 发表于 2008-11-12 11:54 | 显示全部楼层

。。。

&nbsp;lpc2300和lpc213x带ucos时候中断,软中断汇编程序写法是不同,但是没有发现到会引起上面问题的地方。
zlg_ltt 发表于 2008-11-12 16:51 | 显示全部楼层

re

建议动手调试一下,看看中断标志是否清除。如果没清除,为什么没清除。<br /><br /><br />&nbsp;<br />
 楼主| db10 发表于 2008-11-12 17:23 | 显示全部楼层

。。。

中断标志被清除了&nbsp;但是还是进中断。<br />&nbsp;这个之前观察过。现在也是这样。。
 楼主| db10 发表于 2008-11-13 21:33 | 显示全部楼层

...

&nbsp;看来老Z也不。。
ZLG_Dengz 发表于 2008-11-13 22:45 | 显示全部楼层

RE

就我个人而言,我也没遇到这样的情况。。。<br />使用Uart0Receive时,中断也能正常进入Uart0Receive()吗?看看用户模式和IRQ模式下的LR的值是正常的返回地址吗?<br />&nbsp;&nbsp;&nbsp;VICVectAddr寄存器清零没?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

77

主题

2230

帖子

0

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