新手入门
- 积分
- 10
- 金钱
- 10
- 注册时间
- 2023-5-17
- 在线时间
- 1 小时
|
1金钱
本帖最后由 zwy0104 于 2023-5-20 15:14 编辑
task1
{
key=KEY_Scan(0);
switch(key)
{
case KEY_0_PRES:
printf("1\r\n");
xSemaphoreGive(myBinarySemRecordwhiteHandle);
break;
case KEY_1_PRES:
printf("2\r\n");
xSemaphoreGive(myBinarySemRecorduvHandle);
break;
}
}
task2
{
if(xSemaphoreTake(myBinarySemRecordwhiteHandle,portMAX_DELAY) == pdTRUE)
{\\执行任务white}
if(xSemaphoreTake(myBinarySemRecorduvHandle,portMAX_DELAY) == pdTRUE)
{\\执行任务uv}
}
我拿这两个二值信号量whiteHandle和uvHandle作为标志位来用,意思是按下按键0释放whiteHandle信号量,执行任务white,按下按键1释放uvHandle,执行uv任务,
但是实际情况是按下按键0先执行任务white,然后执行任务uv,按下按键1没有反应,那位大神能帮忙解释一下这是咋回事,按键代码就用的是正点原子的例程移植过来的
|
|