打印
[uCOS/RTOS]

串口接收中断服务程序调用OSMboxPost()造成死机

[复制链接]
3120|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
roalychen|  楼主 | 2013-11-1 14:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 roalychen 于 2013-11-1 14:12 编辑

串口接收中断服务程序总框架:
OSIntEnter();
从接收缓冲区接收数据
OSMboxPost()将数据送入邮箱
OSIntExit();

另外一个任务TaskA里面取出邮箱的消息

串口接收一个字节数据,马上死机

如果串口中断程序不调用OSMboxPost(),而是在另外一个任务TaskB里面周期性的调用OSMboxPost();

则程序正常, 串口接收数据也正常

菜鸟求救

相关帖子

沙发
roalychen|  楼主 | 2013-11-1 15:46 | 只看该作者
单步执行,发现运行到OS_ENTER_CRITICAL就死机了, 这是个宏定义OsSwiHandle1(2)

但是不在中断服务程序的话,这个函数是没有问题的
是什么问题呢?

使用特权

评论回复
板凳
huangxz| | 2013-11-1 17:02 | 只看该作者
移植有问题,建议对于arm7来讲不要使用swi,直接关闭中断多简单啊

使用特权

评论回复
地板
roalychen|  楼主 | 2013-11-2 09:42 | 只看该作者
sysTimeTick中断也是这样的结构,怎么就没问题呢?
    OSIntEnter();
    OSTimeTick();  
    OSIntExit();

使用特权

评论回复
5
Miltonliu2010| | 2013-11-2 15:09 | 只看该作者
同意二楼的说法,实时移植时的中断处理要慎重。你的OsSwiHandle1(2)处理可能造成了异常,程序应该跑到中断向量表那块死掉了。

使用特权

评论回复
6
roalychen|  楼主 | 2013-11-4 17:17 | 只看该作者
NVIC中断优先级设置有问题,现在已经解决了
谢谢大家关注

使用特权

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

本版积分规则

102

主题

227

帖子

0

粉丝