本人使用OSFlagPend函数等待一个事件标志组中的两个标志全部清零,按照以下写法出现了问题。当运行到该函数时,标志组的值为0x0002,而判断的标志为HOLD_DEC | HOLD_NORMAL = 0x0006,理论上是会被挂起的,然而并没有,直接运行通过了。
[AppleScript]
纯文本查看 复制代码
OSFlagPend((OS_FLAG_GRP*)&sys.hold_state, (OS_FLAGS )HOLD_DEC | HOLD_NORMAL, (OS_
tiCK )0, (OS_OPT )OS_OPT_PEND_FLAG_CLR_ALL | OS_OPT_PEND_BLOCKING, (CPU_TS* )0, (OS_ERR* )&err);
按照如下写法就挂起了,可以看出,是将两个标志拆开等待的。
[AppleScript]
纯文本查看 复制代码
OSFlagPend((OS_FLAG_GRP*)&sys.hold_state, (OS_FLAGS )HOLD_DEC, (OS_TICK )0, (OS_OPT )OS_OPT_PEND_FLAG_CLR_ALL | OS_OPT_PEND_BLOCKING, (CPU_TS* )0, (OS_ERR* )&err); OSFlagPend((OS_FLAG_GRP*)&sys.hold_state, (OS_FLAGS )HOLD_NORMAL, (OS_TICK )0, (OS_OPT )OS_OPT_PEND_FLAG_CLR_ALL | OS_OPT_PEND_BLOCKING, (CPU_TS* )0, (OS_ERR* )&err);
另外说明一点,OS_CFG_FLAG_MODE_CLR_EN已经设置为1了。
希望各路兄弟能帮忙分析一下原因,欢迎指出代码问题
谢谢!
0