本帖最后由 liuchang 于 2016-6-8 15:50 编辑
程序如下,在main()中就是创建了一个start_task任务,在start_task任务中创建了如下task1_task和task2_task任务.程序现象:同时按下key0和key1,会在串口打印出来~~~
问题在程序注释部分,恳请大神指教~~~
[mw_shl_code=c,true]void task1_task(void *p_arg)
{
u8 key = 0;
OS_FLAGS flag1, flag2;
OS_ERR err;
p_arg = p_arg;
while(1)
{
key = KEY_Scan(0);
if(key == KEY0_PRES)
{
flag1 = OSFlagPost((OS_FLAG_GRP *)&EventFlags,
(OS_FLAGS )KEY0_FLAG,
(OS_OPT )OS_OPT_POST_FLAG_SET,
(OS_ERR *)&err);
printf("key0's value = %d\r\n", flag1);
}
if(key == KEY1_PRES)
{
flag2 = OSFlagPost((OS_FLAG_GRP *)&EventFlags,
(OS_FLAGS )KEY1_FLAG,
(OS_OPT )OS_OPT_POST_FLAG_SET,
(OS_ERR *)&err);
printf("key1's value = %d\r\n", flag2);
}
//OSTimeDlyHMSM(0, 0, 0, 10, (OS_OPT)OS_OPT_TIME_PERIODIC, &err); //我知道,在OSTimeDlyHMSM()中会进行任务调度, //可是我把这2句都注释掉,程序仍然OK,
//我不知道程序在哪里进行任务调度的,恳请指教
}
}
void task2_task(void *p_arg)
{
OS_ERR err;
OS_FLAGS flag;
p_arg = p_arg;
while(1)
{
flag = OSFlagPend((OS_FLAG_GRP *)&EventFlags,
(OS_FLAGS )KEY0_FLAG+KEY1_FLAG,
(OS_TICK )0,
(OS_OPT )OS_OPT_PEND_FLAG_SET_ALL +OS_OPT_PEND_FLAG_CONSUME,
(CPU_TS *)0,
(OS_ERR *)&err);
printf("task2_pending = %d\r\n", flag);
//OSTimeDlyHMSM(0, 0, 0, 10, (OS_OPT)OS_OPT_TIME_PERIODIC, &err); //这里也被注释掉了
}
}[/mw_shl_code]
|