zhang062061 发表于 2021-1-19 23:49:44

任务间通信的一点疑问

刚开始学FreeRTOS,对任务间的通信有一些疑问,请大家指教一下:
三个个任务,分别是:
任务1:定时采集传感器数据。
任务2:串口接收命令,发送传感器数据。
任务3:显示传感器数据。

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

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

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

eric2013 发表于 2021-1-20 07:56:14

三个任务都跟传感器有关,为了降低复杂度,干脆都整到一个任务即可,这种应用无需分配到多个任务里面。

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

zhang062061 发表于 2021-1-20 10:05:29

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

...

感谢指教~                  

xiaowei061 发表于 2021-2-5 14:45:59

全局变量没有啥不合适,没做 MPU 保护设置线程之间的内存就是共享的,只要注意读写数据时,保证数据读写的原子性就行。
比如多个字节数据,一个线程1正在写,另外一线程2优先级高的话,就会抢占去读写数据,这个时候会出现线程1写入数据不完整,所以需要使用 RTOS 互斥信号量来做访问保护。
在多线程操作同一个外设时也同理。
页: [1]
查看完整版本: 任务间通信的一点疑问