程序在运行到到 Motro_task()任务中的自我挂起函数后,Motro_task 被挂起。当程序运行到Task2的OSTaskResume(&MotroTaskTCB,&err);位置时, Motro_task解挂。程序再次调用Motro_task时,从Motor_task_num++;开始。
void Motro_task(void *p_arg)
{
OS_ERR err;
static u8 Motor_task_num=0;
while(1)
{
// if(KEY_Scan(0))//(GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_7)==0)
{
OSTaskSuspend(0,&err);
Motor_task_num++;
APP_TRACE_INFO(("任务1执行的次数:%d\n\r",xx));
OSTimeDlyHMSM(0,0, 1,0,OS_OPT_TIME_HMSM_STRICT,&err);
GPIO_SetBits(GPIOD, GPIO_Pin_15);
}
}
}
void Task2(void *p_arg)
{
OS_ERR err;
uint16_t i;
static uint16_t Task2_num=0;
while(1)
{
OSTaskResume(&MotroTaskTCB,&err);
Task2_num++;
APP_TRACE_INFO(("The num of 任务2:%d\n\r",Task2_num));
OSTimeDlyHMSM(0, 0, 1,0,OS_OPT_TIME_HMSM_STRICT,&err);
}
}