|
本人使用OSFlagPend函数等待一个事件标志组中的两个标志全部清零,按照以下写法出现了问题。当运行到该函数时,标志组的值为0x0002,而判断的标志为HOLD_DEC | HOLD_NORMAL = 0x0006,理论上是会被挂起的,然而并没有,直接运行通过了。
- 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);
复制代码
按照如下写法就挂起了,可以看出,是将两个标志拆开等待的。
- 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了。
希望各路兄弟能帮忙分析一下原因,欢迎指出代码问题
谢谢! |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|