打印
[ZLG-ARM]

麻烦下周公, smart2300 自己添加的中断程序怪问题

[复制链接]
1589|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
db10|  楼主 | 2008-11-12 11:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
 在2300板子,带ucos,tcp的程序里添加另外的串口或者I2C程序出现比较怪的现象。调试用H-JTAG。
1.例如添加了串口驱动后,程序可以进入串口中断响应,但是一直在串口中断里出不来了,就是说不停的进出串口中断,别的程序不能执行了。
2.将我的串口响应程序如void  Uart0Receive(void)
                     {
                       ......
                      }
  现在写成:void  __Uart0Receive(void)
           {
            ...
            }
上面唯一改动就是函数名字前加了下划线。程序就可以了。但是感觉怪怪的。

 我看了下有关如void  __irq Uart0Receive(void)的写法,加__irq和没有加是有区别的,加了就是函数本身可以告诉编译器这是中断函数,编程成中断函数,有堆栈的进出编译。没有加相反。然后有操作系统的程序,在startup.s里有中断的堆栈等操作,不需要加__irq。加的话是不对的。而现在的问题是在函数加下划线,搞不太清楚,怎么回事。相反加这个下划程序就能跑。。奇怪??

相关帖子

沙发
db10|  楼主 | 2008-11-12 11:54 | 只看该作者

。。。

 lpc2300和lpc213x带ucos时候中断,软中断汇编程序写法是不同,但是没有发现到会引起上面问题的地方。

使用特权

评论回复
板凳
zlg_ltt| | 2008-11-12 16:51 | 只看该作者

re

建议动手调试一下,看看中断标志是否清除。如果没清除,为什么没清除。


 

使用特权

评论回复
地板
db10|  楼主 | 2008-11-12 17:23 | 只看该作者

。。。

中断标志被清除了 但是还是进中断。
 这个之前观察过。现在也是这样。。

使用特权

评论回复
5
db10|  楼主 | 2008-11-13 21:33 | 只看该作者

...

 看来老Z也不。。

使用特权

评论回复
6
ZLG_Dengz| | 2008-11-13 22:45 | 只看该作者

RE

就我个人而言,我也没遇到这样的情况。。。
使用Uart0Receive时,中断也能正常进入Uart0Receive()吗?看看用户模式和IRQ模式下的LR的值是正常的返回地址吗?
   VICVectAddr寄存器清零没?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

77

主题

2230

帖子

0

粉丝