硬汉嵌入式论坛

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

[FreeRTOS] 任务间通信的一点疑问

[复制链接]

11

主题

38

回帖

71

积分

初级会员

积分
71
发表于 2021-1-19 23:49:44 | 显示全部楼层 |阅读模式
刚开始学FreeRTOS,对任务间的通信有一些疑问,请大家指教一下:
三个个任务,分别是:
任务1:定时采集传感器数据。
任务2:串口接收命令,发送传感器数据。
任务3:显示传感器数据。

串口通过中断接收数据,发送信号量。任务2中接收到信号量后发送传感器数据。

目前的疑问是,任务1应该通过什么方式将传感器数据发送给任务2和任务3? 任务2是接收到信号量再去发送传感器数据,要保证每次发送都是最新的,应该怎么获取传感器数据?

没有RTOS时,定义个全局变量就可以,用RTOS的话,用全局变量是不是不太合适。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2021-1-20 07:56:14 | 显示全部楼层
三个任务都跟传感器有关,为了降低复杂度,干脆都整到一个任务即可,这种应用无需分配到多个任务里面。

接收命令,读取传感器数据,显示屏显示。
回复

使用道具 举报

11

主题

38

回帖

71

积分

初级会员

积分
71
 楼主| 发表于 2021-1-20 10:05:29 | 显示全部楼层
eric2013 发表于 2021-1-20 07:56
三个任务都跟传感器有关,为了降低复杂度,干脆都整到一个任务即可,这种应用无需分配到多个任务里面。

...

感谢指教~                  
回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
发表于 2021-2-5 14:45:59 | 显示全部楼层
全局变量没有啥不合适,没做 MPU 保护设置线程之间的内存就是共享的,只要注意读写数据时,保证数据读写的原子性就行。
比如多个字节数据,一个线程1正在写,另外一线程2优先级高的话,就会抢占去读写数据,这个时候会出现线程1写入数据不完整,所以需要使用 RTOS 互斥信号量来做访问保护。
在多线程操作同一个外设时也同理。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-1 19:47 , Processed in 0.211112 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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