任务间通信的一点疑问
刚开始学FreeRTOS,对任务间的通信有一些疑问,请大家指教一下:三个个任务,分别是:
任务1:定时采集传感器数据。
任务2:串口接收命令,发送传感器数据。
任务3:显示传感器数据。
串口通过中断接收数据,发送信号量。任务2中接收到信号量后发送传感器数据。
目前的疑问是,任务1应该通过什么方式将传感器数据发送给任务2和任务3? 任务2是接收到信号量再去发送传感器数据,要保证每次发送都是最新的,应该怎么获取传感器数据?
没有RTOS时,定义个全局变量就可以,用RTOS的话,用全局变量是不是不太合适。
三个任务都跟传感器有关,为了降低复杂度,干脆都整到一个任务即可,这种应用无需分配到多个任务里面。
接收命令,读取传感器数据,显示屏显示。 eric2013 发表于 2021-1-20 07:56
三个任务都跟传感器有关,为了降低复杂度,干脆都整到一个任务即可,这种应用无需分配到多个任务里面。
...
感谢指教~ 全局变量没有啥不合适,没做 MPU 保护设置线程之间的内存就是共享的,只要注意读写数据时,保证数据读写的原子性就行。
比如多个字节数据,一个线程1正在写,另外一线程2优先级高的话,就会抢占去读写数据,这个时候会出现线程1写入数据不完整,所以需要使用 RTOS 互斥信号量来做访问保护。
在多线程操作同一个外设时也同理。
页:
[1]