我先贴一下我的两个任务函数任务1的:
任务优先级:4
[mw_shl_code=c,true]void task1_task(volatile void* p_arg)
{
OS_ERR err;
p_arg = p_arg;
while(1)
{
ANO_DT_Send_Senser(5,5,5,5,5,5);
OSTimeDlyHMSM(0,0,0,500,OS_OPT_TIME_HMSM_STRICT,&err);
}
}[/mw_shl_code]
下面是任务2的:
任务优先级为:5
[mw_shl_code=c,true]void task2_task(volatile void *p_arg)
{
OS_ERR err;
p_arg = p_arg;
while(1)
{
ANO_DT_Send_Senser(0,0,(0),(0),(0),(0));
}
}[/mw_shl_code]
没有用时间片轮转调度,下面是创建任务的代码:
[mw_shl_code=c,true] OS_CRITICAL_ENTER();//½øèëáù½çÇø′úÂë±£»¤
/*′′½¨èÎÎñtask1*/
OSTaskCreate ((OS_TCB *)&Task1TCB,
(CPU_CHAR *)"task1",
(OS_TASK_PTR )task1_task,
(void *)0,
(OS_PRIO )TASK1_TASK_PRIO,
(CPU_STK *)TASK1_STK,
(CPU_STK_SIZE )TASK1_STK_SIZE/10,
(CPU_STK_SIZE )TASK1_STK_SIZE,
(OS_MSG_QTY )0,
(OS_TICK )0,
(void *)0,
(OS_OPT )OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR,
(OS_ERR *)&err);
/*′′½¨èÎÎñtask2*/
OSTaskCreate ((OS_TCB *)&Task2TCB,
(CPU_CHAR *)"task2",
(OS_TASK_PTR )task2_task,
(void *)0,
(OS_PRIO )TASK2_TASK_PRIO,
(CPU_STK *)TASK2_STK,
(CPU_STK_SIZE )TASK2_STK_SIZE/10,
(CPU_STK_SIZE )TASK2_STK_SIZE,
(OS_MSG_QTY )0,
(OS_TICK )0,
(void *)0,
(OS_OPT )OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR,
(OS_ERR *)&err);
OS_CRITICAL_EXIT();//íË3öáù½çÇø′úÂë±£»¤[/mw_shl_code]
下面是我用上位机收到的波形:
我的问题是:为什么会出现两个波峰,不是应该在任务1切换出去,到任务2的时候就会在任务2中死循环吗?为什么还会有任务1的在执行?
|