登陆|注册|搜索|最近新帖
发帖子|共享我的资料|精华帖子|热门话题
导航: 老古开发网老古论坛首页单片机程序设计ARM技术嵌入式系统另类其他文件交流售后服务广告区域
→[求助]ucos中OS_Sched 函数的疑问[borif]

  [浏览上一篇主题]:招聘:嵌入式Linux、WinCE、DSP、IC设计、硬件电路设计培训讲师[分享]
  [浏览下一篇主题]:怎样进入em78451sleep模式2


 [ 索引]* 贴子主题:第33489篇: [求助]ucos中OS_Sched 函数的疑问

  

楼 主:作者:borif  文章:3发帖时间:2005年8月15日09:55
 [求助]ucos中OS_Sched 函数的疑问
我在看书的时候对这个函数不时很理解。
void  OS_Sched (void)
{
#if OS_CRITICAL_METHOD == 3                            /* Allocate storage for CPU status register     */
    OS_CPU_SR  cpu_sr;
#endif    
    INT8U      y;


    OS_ENTER_CRITICAL();
    if ((OSIntNesting == 0) && (OSLockNesting == 0))
   { 
        y             = OSUnMapTbl[OSRdyGrp];         
        OSPrioHighRdy = (INT8U)((y   <  < 3) + OSUnMapTbl[OSRdyTbl[y]]);
        if (OSPrioHighRdy != OSPrioCur) 
      {              
            OSTCBHighRdy = OSTCBPrioTbl[OSPrioHighRdy];
            OSCtxSwCtr++;                              
            OS_TASK_SW();                              /* Perform a context switch                     */
        }
    }
    OS_EXIT_CRITICAL();
}
书上说执行完OS_TASK_SW()后,PC的值变了。那就是说程序要跳到另外的地方。我的疑问是:下面的OS_EXIT_CRITICAL()不就不执行了吗?中断可还是关着的啊,什么时候开呢,在哪开呢?
[详细内容]

  

2楼:作者:kingxusheng  文章:3发帖时间:2005年8月23日10:37
 你再看一下OS_TASK_SW()是什么东西不就明白了

[详细内容]

>>>>>>对该主题发表你的看法

本主题贴数2,分页: [第1页]





老古开发网 asp.Net V2.0 设计:老古 2006年8月 执行时间:47毫秒 最大:70172毫秒 查询数据库10次 2010-9-10 23:51:01