微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 第十三篇?在ucosiii下,给触摸屏和转速添加消息队列支持

第十三篇?在ucosiii下,给触摸屏和转速添加消息队列支持

时间:10-02 整理:3721RD 点击:
这次主要记录消息队列的使用方法:1.把触摸屏的键值放到消息队列中去,这样可以在多个任务中读取键值,进行相应的操作,提高了效率.
2.把转速的值也放到消息队列中去
关键的代码:
初始化两个消息队列

  1. void  MessQueue_Init (void)
  2. {
  3.         OS_ERR p_err;
  4.         OSQCreate (&KEY_Q,
  5.                          "Touch key messgae queue",
  6.                          5,
  7.                          &p_err);
  8.         if(p_err!=OS_ERR_NONE)
  9.                 APP_TRACE_INFO(("Create KEY_Q failed.\r\n"));
  10.         OSQCreate (&RPM_Q,
  11.                          "Round per minnet messgae queue",
  12.                          5,
  13.                          &p_err);
  14.         if(p_err!=OS_ERR_NONE)
  15.                 APP_TRACE_INFO(("Create RPM_Q failed.\r\n"));
  16. }

复制代码

发送键值的消息队列

  1. OSQPost (&KEY_Q,
  2.                                                                (void *)(&(tp_dev.x[0])),
  3.                                                                1,
  4.                                                                            OS_OPT_POST_FIFO + OS_OPT_POST_ALL,
  5.                                                                &os_err);//发送消息队列

复制代码

读取键值

  1. key_value=(uint16_t  *)OSQPend (&KEY_Q,
  2.                                         1000,
  3.                                                         OS_OPT_PEND_BLOCKING,
  4.                                         &msg_size,
  5.                                         NULL,
  6.                                         &os_err);

复制代码

转速也是类似的,获取转速

  1. rpm_value=(uint32_t  *)OSQPend (&RPM_Q,
  2.                                 1000,
  3.                                                 OS_OPT_PEND_BLOCKING,
  4.                                 &msg_size,
  5.                                 NULL,
  6.                                 &os_err);

复制代码

发送消息队列

  1. OSQPost (&RPM_Q,
  2.                            (void *)&ic_value[0],
  3.                            1,
  4.                                            OS_OPT_POST_FIFO + OS_OPT_POST_ALL,
  5.                            &err);

复制代码

主要就是OSQPost 和OSQPend 函数的使用,操作系统的作用就是提供了很多API接口函数,我们可以使用并实现替换一些传统的裸机编成实现的效果.
放一些效果图片看看吧:


没有触摸


一点触摸


两点触摸
完整的代码在github上
https://github.com/iysheng/chicken

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top