初级会员

- 积分
- 147
- 金钱
- 147
- 注册时间
- 2014-7-23
- 在线时间
- 5 小时
|
1金钱
void AppLED1Task(void *pdata) | | { | | pdata = pdata; //防止编译器出错 无实际意义 | | u8 key = 0; | | u8 err;//邮箱信息 | | while(1) | | { | | | | switch(key) | | { | | case 1: | | OLED_P6x8Str(0,0,"1"); | | | | break; | | | | case 2: | | OLED_P6x8Str(0,0,"2"); | | break; | | case 3: | | OLED_P6x8Str(0,0,"3"); | | | | break; | | | | case 4: | | OLED_P6x8Str(0,0,"4"); | | break; | | | | } | | key = (u8)OSMboxPend(msg_key,200,&err); | | OSTimeDlyHMSM(0, 0, 0, 300); | | } | | } |
/*************** | | | | 按键扫描任务 | | | | ***********/ | | void keyScan(void * pdata) | | { | | pdata = pdata; | | u16 T =0; | | u16 Ti=0; | | u8 key; | | u8 keysave;//上次按键状态保存 | | while(1) | | { | | if(KEY_U == 1) | | { key =1;} //上键 | | else if(KEY_D == 1) | | { key = 2; } //下键 | | else if(KEY_A == 1) | | { key = 3;} //左键 | | else if(KEY_B == 1) | | { key = 4; } //右键 | | else key = 0; | | | | switch(keysave) | | { | | case 1: //上 | | if(key != keysave) | | { | | OSMboxPost(msg_key,(u8 *)keysave); | | T = 0; | | Ti = 0; | | } | | else | | { | | if(T > LongPressTime) // 触发长按 | | { | | T= LongPressTime; | | if(Ti> LongPressSpeed) //长按执行速度 | | { | | Ti = 0; | | OSMboxPost(msg_key,(void *)keysave); | | } | | Ti++; | | } | | T++; | | } | | break; | | | | case 2: //下 | | if(key != keysave) | | { | | OSMboxPost(msg_key,(void *)keysave); | | T = 0; | | Ti = 0; | | } | | else | | { | | if(T > LongPressTime) // 触发长按 | | { | | T= LongPressTime; | | if(Ti> LongPressSpeed) //长按执行速度 | | { | | Ti = 0; | | OSMboxPost(msg_key,(void *)keysave); | | } | | Ti++; | | } | | T++; | | } | | | | break; | | | | case 3: //左 | | if(key != keysave) | | { | | OSMboxPost(msg_key,(void *)keysave); | | T = 0; | | Ti = 0; | | } | | else | | { | | if(T > LongPressTime) // 触发长按 | | { | | T= LongPressTime; | | if(Ti> LongPressSpeed) //长按执行速度 | | { | | Ti = 0; | | OSMboxPost(msg_key,(void *)keysave); | | } | | Ti++; | | } | | T++; | | } | | break; | | | | case 4: //右 | | if(key != keysave) | | { | | OSMboxPost(msg_key,(void *)keysave); | | T = 0; | | Ti = 0; | | } | | else | | { | | if(T > LongPressTime) // 触发长按 | | { | | T= LongPressTime; | | if(Ti> LongPressSpeed) //长按执行速度 | | { | | Ti = 0; | | OSMboxPost(msg_key,(void *)keysave); | | } | | Ti++; | | } | | T++; | | } | | break; | | } | | keysave = key; | | OSTimeDlyHMSM(0, 0, 0, 50); | | } | | | | } |
我在按键扫描中调试 可以获取到按键的信息,也能走到发送消息的函数 但是为什么在第一个任务中却收不到发来的按键信息呢 一直都是 0
代码也不是很复杂 我也是完全按照教程来的 实在是看不出来哪里有问题了 大家帮忙看看 是不是哪里出了什么问题。。。。
|
最佳答案
查看完整内容[请看2#楼]
我擦 我解决了 是没有创建空的 邮箱
加上 msg_key = OSMboxCreate((void*)0); //创建空消息邮箱
在任务头 就好了
|