这次主要记录消息队列的使用方法:1.把触摸屏的键值放到消息队列中去,这样可以在多个任务中读取键值,进行相应的操作,提高了效率.
2.把转速的值也放到消息队列中去
关键的代码:
初始化两个消息队列
- void MessQueue_Init (void)
- {
- OS_ERR p_err;
- OSQCreate (&KEY_Q,
- "Touch key messgae queue",
- 5,
- &p_err);
- if(p_err!=OS_ERR_NONE)
- APP_TRACE_INFO(("Create KEY_Q failed.rn"));
- OSQCreate (&RPM_Q,
- "Round per minnet messgae queue",
- 5,
- &p_err);
- if(p_err!=OS_ERR_NONE)
- APP_TRACE_INFO(("Create RPM_Q failed.rn"));
- }
复制代码
发送键值的消息队列
- OSQPost (&KEY_Q,
- (void *)(&(tp_dev.x[0])),
- 1,
- OS_OPT_POST_FIFO + OS_OPT_POST_ALL,
- &os_err);//发送消息队列
复制代码
读取键值
- key_value=(uint16_t *)OSQPend (&KEY_Q,
- 1000,
- OS_OPT_PEND_BLOCKING,
- &msg_size,
- NULL,
- &os_err);
复制代码
转速也是类似的,获取转速
- rpm_value=(uint32_t *)OSQPend (&RPM_Q,
- 1000,
- OS_OPT_PEND_BLOCKING,
- &msg_size,
- NULL,
- &os_err);
复制代码
发送消息队列
- OSQPost (&RPM_Q,
- (void *)&ic_value[0],
- 1,
- OS_OPT_POST_FIFO + OS_OPT_POST_ALL,
- &err);
复制代码
主要就是OSQPost 和OSQPend 函数的使用,操作系统的作用就是提供了很多API接口函数,我们可以使用并实现替换一些传统的裸机编成实现的效果.
放一些效果图片看看吧:
没有触摸
一点触摸
|