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); 在临界区中,起始任务挂起自己后能进行任务切换吗?
这是什么OS?一般OS切换任务有常规切换的,也有在中断里专用的切换任务的,我用COOS里有用过,ISR开头的以须中断里切换任务,
是UCOS-II,任务调度时的任务切换需要进行中断
临界区内能进行任务切换,这样的用法是错误的,严重影响系统实时性。