打印

ucos 移植到LPC1768时遇到的一个问题

[复制链接]
2942|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lsddata|  楼主 | 2012-10-6 17:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void  eint3Isr (void)
{
  IO0IntEnf =IO0IntEnf&(~ad7190_data_out); /* P0.17下降沿中断禁止*/
delay_nus(1);
if(0x00000000==(FIO0PIN&0x00020000))
  {
   read_from_ad7190(3,ad_new_buffer);
   ad_new_data=ad_new_buffer[2]<<16|ad_new_buffer[1]<<8|ad_new_buffer[0];
   OSMboxPost(SampleMbox,&ad_new_data);
  }
IO0IntEnf = ad7190_data_out; /* P0.17下降沿中断使能          */   
IO0IntClr = ad7190_data_out;  //中断标志清零
}


只要在上面的程序中加入OSMboxPost(SampleMbox,&ad_new_data);
时,程序运行时出现异常,进入下面的while (1);

void defaultVectorHandle (void)
{
#ifdef DEBUG
    while (1);
#else
    zyReset(ZY_HARD_RESET);
#endif                                                                  /*  DEBUG                       */
}


但在别的任务中调用OSMboxPost(SampleMbox,&ad_new_data);时正常运行,哪位高人能指点一下?

相关帖子

沙发
阿南| | 2012-10-6 18:27 | 只看该作者
defaultVectorHandle 是默认异常处理。别的任务中调用无该问题,而这个程序中有,很大程度是和P0.17下降沿中断有关。楼主可以将该中断一直禁止,再调用试试,并跟踪该线索看是否能找到问题。

使用特权

评论回复
板凳
lsddata|  楼主 | 2012-10-6 20:32 | 只看该作者
我仿真跟进去看看了,是在OSMboxPost(SampleMbox,&ad_new_data)函数里,调用OS_Sched()时发生了异常,这个问题应该怎么解决啊?

使用特权

评论回复
地板
阿南| | 2012-10-7 08:26 | 只看该作者
OS_Sched()这是操作系统的调度函数。
我觉得还是中断异常引起的,重点抓住只有这个函数调用才会引起,这条线索,多做些实验比较。
PS:请问eint3Isr是中断处理函数吧?试一下在其它中断处理函数调用OSMboxPost是否也会出现该问题。

使用特权

评论回复
5
lsddata|  楼主 | 2012-10-7 10:28 | 只看该作者
知道原因了,中断中要加OSIntEnter(); OSIntExit();

使用特权

评论回复
6
阿南| | 2012-10-7 10:33 | 只看该作者
呵呵,果然是中断中没处理好引起的

使用特权

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

本版积分规则

7

主题

93

帖子

1

粉丝