我买了周航慈的基于嵌入式实时操作系统的程序设计技术,看到第90页:逻辑或的同步控制。书上是一个蜂鸣器任务,一个按键任务,一个串口显示任务。
蜂鸣器鸣叫一声,向标志组发送一次信号;按键每按一次,向标志组发送一次信号;显示任务
获取任何一个标志后更新一次数据,同时清除标志组内容,以便开始下一轮的同步过程。
也就是说,蜂鸣器叫一声,串口打印出一组数据;按键每按一次,串口打印出一组数据。
串口打印数据的次数是蜂鸣器鸣叫次数和按键按得次数之和。
可是我测试结果,跟86页的实验逻辑与的同步控制一样。
也就是按键按一次,同时蜂鸣器鸣叫一次,串口才打印一组数据。
(我开发板没有蜂鸣器,我拿LED灯代替)
我看了一下程序,逻辑与实验有一句:
OSFlagPend(FLAGW,0X03,OS_FLAG_WAIT_SET_ALL+OS_FLAG_CONSUME,0,&err);
逻辑或实验有一句:
OSFlagPend(FLAGW,0X03,OS_FLAG_WAIT_SET_ANY+OS_FLAG_CONSUME,0,&err);
就ANY和ALL的不同,可是实验结果一样。
我感到很疑惑。周航慈老师的书很有名气,不应该出错。
到底我哪儿弄错了呢?
我把程序打包传上来,高手给看看,哪里有问题,谢谢!
ALIENTEK MINISTM32 实验35 UCOSII实验1-任务调度.rar
(4.21 MB)
|