打印
[ZLG-ARM]

LPC2378+uCOSII的问题,各位帮忙

[复制链接]
1642|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ZorroCN|  楼主 | 2009-5-19 16:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题1:
周立功的那个模板里面,OS_ENTER_CRITICAL()函数是只关IRQ中断,还是将FIQ也一并关掉?记的老版本的是只关IRQ的(从代码上看),而新的则丢到OsSwiHandle1(2)里面去了。
问题2:
在FIQ中断服务当中,调用OSSemPost()函数向任务发送消息,是否可行?我在快速中断当中每次调用此函数都会造成未定义异常(在这之前已经OSSemCreate()),如下:
void FIQ_Exception(void)
{
      ……
      OSSemPost(pSem);
      ……
      VICVectAddr=0;
}
这种方式是否恰当?

相关帖子

沙发
usber| | 2009-5-20 12:45 | 只看该作者

不清楚,等待高人解决

使用特权

评论回复
板凳
赖皮| | 2009-5-25 10:52 | 只看该作者

看看你的OS_CPU_A.s

MRS r0 , cp
ORR r0 , r0 I_Bit     ;禁止IRQ
MSR cpsr_c
ORR r0 , r0 , # F_Bit ;禁止 FIQ
MSR cpsr_c r0

需增加OSIntNesting防止任务切换OS_Sched
void FIQ_Exception(void)
{
      (1)
      ……
      OSSemPost(pSem);
      ……
      VICVectAddr=0;
      (2)
}

增加两部分语句
(1)
if (OSIntNesting < 255u) {
            OSIntNesting++;
        }
(2)if (OSIntNesting > 0) { 
             OSIntNesting--;
        }
   //可以增加OSIntNesting=0任务切换

使用特权

评论回复
地板
zlg_Wankai| | 2009-5-25 20:38 | 只看该作者

re

问题楼上已经回答,最好还是去找一个最新的模板,这样不用修改。

使用特权

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

本版积分规则

29

主题

84

帖子

0

粉丝