[讨论] 请问:在临界区内能进行任务切换吗

hct627   2015-7-28 08:24 楼主
void start_task(void *pdata)
{
    OS_CPU_SR cpu_sr=0;
pdata = pdata;
OSStatInit();     //³õʼ»¯Í³¼ÆÈÎÎñ.ÕâÀï»áÑÓʱ1ÃëÖÓ×óÓÒ
  OS_ENTER_CRITICAL();   //½øÈëÁÙ½çÇø(ÎÞ·¨±»Öжϴò¶Ï)   
  OSTaskCreate(led1_task,(void *)0,(OS_STK*)&LED1_TASK_STK[LED1_STK_SIZE-1],LED1_TASK_PRIO);         
  OSTaskCreate(led2_task,(void *)0,(OS_STK*)&LED2_TASK_STK[LED2_STK_SIZE-1],LED2_TASK_PRIO);         
OSTaskSuspend(START_TASK_PRIO); //¹ÒÆðÆðʼÈÎÎñ.
OS_EXIT_CRITICAL();    //Í˳öÁÙ½çÇø(¿ÉÒÔ±»Öжϴò¶Ï)
}

在上面程序中, OSTaskSuspend(START_TASK_PRIO); 在临界区中,起始任务挂起自己后能进行任务切换吗?

回复评论 (3)

这是什么OS?一般OS切换任务有常规切换的,也有在中断里专用的切换任务的,我用COOS里有用过,ISR开头的以须中断里切换任务,
点赞  2015-7-28 08:28
是UCOS-II,任务调度时的任务切换需要进行中断
点赞  2015-7-28 08:32
临界区内能进行任务切换,这样的用法是错误的,严重影响系统实时性。
点赞  2015-8-16 22:48
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复