硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4790|回复: 3
收起左侧

[μCOS-II] ucos应用设计问题

[复制链接]

4

主题

23

回帖

35

积分

新手上路

积分
35
发表于 2014-4-10 09:53:35 | 显示全部楼层 |阅读模式
举个例,假如有三个任务task1 ,task2,task3。
创建了2个互斥信号量 mutex_sem1,mutex_sem2.
想实现的目的:把两个任务的采样送到同一个显示任务显示,为了保证对资源访问的独占性,使用互斥信号量。(以下只是一种设计思路,是有问题的)
问题:以下这么写,采样2的显示会受到影响的,不知道该用什么思路更好,邮箱 队列?要保证采样1和采样2 的显示不受影响,即申请采样1信号量时,如果未申请到,任然需要执行采样2显示的程序。
void task1( )//显示
{
      u8 err;
      OSMutexPend(mutex_sem1,0,&err);
       //显示采样1
      OSMutexPost(mutex_sem1);





      OSMutexPend(mutex_sem2,0,&err);
       //显示采样2
      OSMutexPost(mutex_sem2);








}
void task2()//采样1
{
       OSMutexPend(mutex_sem1,0,&err);
       //采样1
      OSMutexPost(mutex_sem1);
      
}
void task3()//采样2
{
     OSMutexPend(mutex_sem2,0,&err);
       //采样2
      OSMutexPost(mutex_sem2);   
      
}      
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106974
QQ
发表于 2014-4-10 10:28:02 | 显示全部楼层
可以做一个消息队列,让多个采样数据的任务往这个消息队列里面发数据,用显示任务来接收,消息队列里面最好用一个标志来识别用的是那个任务发送的。
回复

使用道具 举报

4

主题

23

回帖

35

积分

新手上路

积分
35
 楼主| 发表于 2014-4-10 13:48:14 | 显示全部楼层

回 eric2013 的帖子

eric2013:
可以做一个消息队列,让多个采样数据的任务往这个消息队列里面发数据,用显示任务来接收,消息队列里面最好用一个标志来识别用的是那个任务发送的。
task2发送采样消息s2,task3发送采样消息s3。OSQPend一次性将消息队列所有的消息取出来了,怎么提取出对应的消息出来。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106974
QQ
发表于 2014-4-10 21:30:48 | 显示全部楼层
比如你的AD是12位的,而你传递的都是以16位数据,就可以用前四位作为标志位。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-12 12:28 , Processed in 0.202541 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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