ucos_III传递参数的注意事项
小弟最近写一个ucos小实验,实验的思路是通过ADC采样数据,然后将这个数据发送给TFT屏显示1>假设我采样的数据是ADC_Value,这个ADC_Value数据我从中断中就可以得到
2>显示任务为Show_Task
请问大神:我是应该使用全局变量将这个数据传递到Show_Task中去,还是应该使用消息队列(不知道为什么,ucos_III没有邮箱了~~~)???
2者各有什么优缺点呢?我觉得使用全局变量最直接,易懂,恳请大神指教~
如果 CPU 的一个寄存器能够完全容纳这个数据,那么建议用静态变量(全局等),通过一个信号量去同步。
如果不能容纳,建议使用邮箱或消息队列。 @john_lee 如果 CPU 的一个寄存器能够完全容纳这个数据是什么意思啊?
我使用的是stm32f103vet6,那我可以理解为我的数据只要小于等于32个bit就可以吗? 是的,如果这个数据的宽度大于CPU寄存器的宽度,那么任务一次访问这个数据就需要CPU分多次访问各部分,注意,这里说的“访问”就是单纯的读或者写,不是“读-修改-写”。如果多次访问的操作没有“原子操作”的机制保障,那么数据就可能错乱。
而当数据的宽度小于CPU寄存器的宽度,这个“原子操作”是由CPU保证了,不会发生错乱的情况。 john_lee 发表于 2015-9-8 11:02
是的,如果这个数据的宽度大于CPU寄存器的宽度,那么任务一次访问这个数据就需要CPU分多次访问各部分,注意 ...
一直蒙受大神指点,不胜感激~~~
页:
[1]