OpenEdv-开源电子网

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

用邮箱通信实现按键控制

[复制链接]

9

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2012-5-14
在线时间
2 小时
发表于 2012-6-7 20:27:04 | 显示全部楼层 |阅读模式

我想实现以下功能:三个按键控制三个圆环在OLED屏上显示,按一个按键显示相应大小的环。但是我的程序每运行一次只有一个按键可以实现,另外两个不管用。跪求高手指点!!!!            

//开始任务
void TaskStart(void * pdata)
{
 pdata = pdata;
 OS_ENTER_CRITICAL();  
 OSTaskCreate(Taskhuanshu, (void * )0, (OS_STK *)&TASK_huanshu_STK[huanshu_STK_SIZE-1], huanshu_TASK_Prio+1);
 OSTaskCreate(Taskkeycontrol, (void * )0, (OS_STK *)&TASK_keycontrol_STK[keycontrol_STK_SIZE-1], keycontrol_TASK_Prio);
 yx=OSMboxCreate((void *)0);
 OSTaskSuspend(START_TASK_Prio); //suspend but not delete
 OS_EXIT_CRITICAL();
}
//任务1
//环显示
void Taskhuanshu(void *pdata)
{  char *rasm;
   INT8U err;
   u16 dat;
   rasm=(char *)OSMboxPend(yx,0,&err);
   dat=*rasm;
 for( ;;)
   {   if(KEY_Scan()==1||KEY_Scan()==2||KEY_Scan()==3)
     { OSTaskSuspend (huanshu_TASK_Prio);
      }
      switch(dat)
      {
       case 0:
   
    OLED_ShowString(78,3,"1");
    Draw_Circle(60,40,15); 
        OLED_Refresh_Gram();
       OSTimeDlyHMSM(0,0,0,100);
    OLED_Fill(37,17,83,63,0);
       OLED_Refresh_Gram();
    case 1: 
          OLED_ShowString(78,3,"2");
    Draw_Circle(60,40,19);     
      OLED_Refresh_Gram();
       OSTimeDlyHMSM(0,0,0,10);

   case 2:
    OLED_ShowString(78,3,"3");
       Draw_Circle(60,40,23);
     OLED_Refresh_Gram();
   OSTimeDlyHMSM(0,0,0,10);
   }
   rasm=(char *)OSMboxAccept(yx);
    if(rasm!=(void *)0)
        dat=*rasm;

   }
   }
//任务2
//按键控制
void Taskkeycontrol(void *pdata)
{  char rasm;
 for(; ;)
  {  OLED_ShowString(0,0,"huanshu :");
   OLED_Refresh_Gram();
  while(1)
     {if(KEY_Scan()==1)
     {rasm=0;
  OSTaskResume (huanshu_TASK_Prio);   
    OSMboxPostOpt(yx,(void *)&rasm,OS_POST_OPT_BROADCAST);
  }           
  else if(KEY_Scan()==2)
   {       OSTaskResume (huanshu_TASK_Prio);
   rasm=1;
      OSMboxPostOpt(yx,(void *)&rasm,OS_POST_OPT_BROADCAST);}
  else if(KEY_Scan()==3)  
   {       OSTaskResume (huanshu_TASK_Prio);
   rasm=2;
    OSMboxPostOpt(yx,(void *)&rasm,OS_POST_OPT_BROADCAST); } }

 }
}  

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-6-7 22:51:24 | 显示全部楼层
我们的按键扫描函数做了防止一次按下多次触发的处理,看看是不是这里的问题。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2012-5-14
在线时间
2 小时
 楼主| 发表于 2012-6-12 22:34:27 | 显示全部楼层
我感觉好像是邮箱通信出问题了,每次执行程序只能发一次邮件。再次按下按键以后,对应的邮件内容就不往邮箱里发,这是为什么。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-6-13 00:28:59 | 显示全部楼层
有软件仿真过没有?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-26 05:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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