[uCOS/RTOS] 串口接收中断服务程序调用OSMboxPost()造成死机

[复制链接]
 楼主| 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();
Miltonliu2010 发表于 2013-11-2 15:09 | 显示全部楼层
同意二楼的说法,实时移植时的中断处理要慎重。你的OsSwiHandle1(2)处理可能造成了异常,程序应该跑到中断向量表那块死掉了。
 楼主| roalychen 发表于 2013-11-4 17:17 | 显示全部楼层
NVIC中断优先级设置有问题,现在已经解决了
谢谢大家关注
您需要登录后才可以回帖 登录 | 注册

本版积分规则

102

主题

227

帖子

0

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