|
刚刚接触UCOS,模仿着挣点原子的UCOS扩展例程\例11-1 UCOSIII消息传递自己写了点,将按键改为串口字符串指令。当接收到某个指令,打开或者关闭相应模块。但是经常出现无法通过串口发送指令关闭工作着的模块,发送其他指令也无响应。可能是什么问题?
- void main_task(void *p_arg)
- {
- u8 blue;
- OS_ERR err;
-
- OSTmrStart(&tmr1,&err);
-
- while(1)
- {
- if(allow_blue)
- {
- allow_blue=0;
- blue = Message_Scan(); //信息扫描
- if(blue)
- {
- //发送消息
- OSQPost((OS_Q* )&BLUE_Msg,
- (void* )&blue,
- (OS_MSG_SIZE)1,
- (OS_OPT )OS_OPT_POST_FIFO,
- (OS_ERR* )&err);
- }
- }
- OSTimeDlyHMSM(0,0,0,80,OS_OPT_TIME_PERIODIC,&err);
- }
- }
- //消息扫描处理任务的任务函数
- void Blueprocess_task(void *p_arg)
- {
- u8 *blue;
- OS_MSG_SIZE size;
- OS_ERR err;
- while(1)
- {
- //请求消息BLUE_Msg
- blue=OSQPend((OS_Q* )&BLUE_Msg,
- (OS_TICK )0,
- (OS_OPT )OS_OPT_PEND_BLOCKING,//OS_OPT_PEND_BLOCKING
- (OS_MSG_SIZE* )&size,
- (CPU_TS* )0,
- (OS_ERR* )&err);
- switch(*blue)
- {
- case MPU6050_ON:
- allow_6050=1;
- break;
- case MPU6050_OFF:
- allow_6050=0;
- break;
- case BH_ON:
- allow_bh1750=1;
- break;
- case BH_OFF:
- allow_bh1750=0;
- break;
- case DIS_ON:
- allow_dis=1;
- break;
- case DIS_OFF:
- allow_dis=0;
- break;
- }
- OSTimeDlyHMSM(0,0,0,100,OS_OPT_TIME_HMSM_STRICT,&err);
- }
- }
复制代码 |
|