OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4795|回复: 5

UCOSII 按键任务取不到扫描键值

[复制链接]

3

主题

12

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2013-1-14
在线时间
0 小时
发表于 2013-4-24 08:59:55 | 显示全部楼层 |阅读模式

如题:
任务
//按键
 void Task_Key(void *pdata)
{
    u8 key_value=0;
 while(1)
 { 
  key_value=KEY_Scan();
  if(key_value)  OSMboxPost(ButtonMsgMbox, (void *)&key_value); //发送邮箱,即发送消息的指针地址,
  //OSTimeDlyHMSM(0,0,0,200);
  delay_ms(10);
 }
}
//获得键值计数
void Task_Dis(void *pdata)
{
    u8 err, key = 0;
 u8 *msg; //请求消息邮箱指针
 while(1)
 {
     msg = OSMboxPend(ButtonMsgMbox,0,&err); //请求消息邮箱
  key = *msg;
  switch(key)
  {
   case 1: up_temp++;if(up_temp==99) up_temp=0; break;
   case 2: down_temp++;if(down_temp==99) down_temp=0;break;
   default: break;
  }
  LCD_ShowNum(148,90,up_temp,2,16);
  LCD_ShowNum(148,110,down_temp,2,16);
  delay_ms(10);
  //OSTimeDlyHMSM(0,0,0,200);

 }
}

按键扫描:
void KEY_Init(void)
{
 RCC->APB2ENR|=1<<2;     //使能PORTA时钟
 GPIOA->CRH&=0X0F0FFFFF;//PA13,15设置成输入  
 GPIOA->CRH|=0X80800000;       
 GPIOA->ODR|=1<<13;    //PA13上拉,PA0默认下拉
 GPIOA->ODR|=1<<15;    //PA15上拉
}
//按键处理函数
//返回按键值
//0,没有任何按键按下
//1,KEY0按下
//2,KEY1按下
//3,KEY2按下 WK_UP
//注意此函数有响应优先级,KEY0>KEY1>KEY2!!
u8 KEY_Scan(void)

 static u8 key_up=1;//按键按松开标志 
 //JTAG_Set(JTAG_SWD_DISABLE);      红色部分如果不注释掉程序异常
 if(key_up&&(KEY0==0||KEY1==0))
 {
     //OSTimeDlyHMSM(0,0,0,200);
  delay_ms(10);//去抖动
  key_up=0;
  if(KEY0==0)
  {
      //JTAG_Set(SWD_ENABLE);
   return 1;
  }
  else if(KEY1==0)
  {
   //JTAG_Set(SWD_ENABLE);
   return 2;
  }
 
 }else if(KEY0==1&&KEY1==1)key_up=1;     
 //JTAG_Set(SWD_ENABLE);
 return 0;// 无按键按下
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-4-24 10:31:43 | 显示全部楼层
你用的mini板?
mini板注释掉红色部分,那才不正常呢.
红色代码必须留着.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

96

主题

762

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1228
金钱
1228
注册时间
2012-10-19
在线时间
15 小时
发表于 2013-4-24 15:26:01 | 显示全部楼层
delay_ms(10);这东西为什么还在用?你这样写,低优先级任务根本没有执行机会。还有这按键代码太差了,还是换换吧!
回复 支持 反对

使用道具 举报

126

主题

820

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1683
金钱
1683
注册时间
2012-10-28
在线时间
62 小时
发表于 2013-4-24 15:40:52 | 显示全部楼层
回复【3楼】tian123chi:
---------------------------------
谢谢,现在在学UCOS,这个是应该注意的
坚持学习!就能成功!
回复 支持 反对

使用道具 举报

3

主题

12

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2013-1-14
在线时间
0 小时
 楼主| 发表于 2013-4-24 19:53:41 | 显示全部楼层
回复【4楼】1501697860:
---------------------------------
用的是mini板啊,我把实验程序(注释掉了红色)下载进去,正常用。
我是把延时重写了,任务可以正常执行,就是按键读取不了键值
回复 支持 反对

使用道具 举报

3

主题

12

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2013-1-14
在线时间
0 小时
 楼主| 发表于 2013-4-24 19:58:02 | 显示全部楼层
delay_ms(10);这东西用了为什么地优先级别不可以用?可以啊,只要你重写不要系统的冲突就可以
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-20 22:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表