关于使用rtos时的实现思路
本帖最后由 djz1992 于 2020-10-23 11:55 编辑一直用的裸机,rtos看了有段时间了,信号量、队列、邮箱也看了,也操作了。
但是还是不明白怎么来把旧项目改写成RTOS项目。有起码一百个全局变量。
比如,就把项目分为以下几个线程:
1.温度采集
2.段码显示屏
3.按键检测
4.PTC控制
段码显示当前温度、当前运行剩余时间,在按键进入设置模式的时候,显示设置温度、设置运行时间。
按键,可以开关机,进入设置,加减值。
问题:那么当前温度、设置温度、当前时间、设置时间,这些参数,需要多个不同线程使用。该如何传递?
思路1:每个变量都创建一个队列,写的线程发出,使用的线程读取。这个好像比较简单,就当他是全局变量用。可以阻塞等待。
思路2:创建一个队列,把所有参数按设想的顺序排列好(像通信协议),每次传递都把所有值都传递。各线程定时获取所有数据,但仅解析自己用得到的那部分。
思路3:。。。。。
感觉做之前得把所有状态量都列出来,然后好好规划一下怎么传递。。。。@ufbycd 大佬,指点下。其实上述功能,用不到rtos,主要是用在联网设备上。
“一百个全局变量”还跨不同源文件访问,这么拙劣的代码就没什么模块化可言了,基本上是重构不了的。
良好的编程习惯是每个全局变量都加static修饰,即只允许本源文件直接访问。其它源文件要访问就加get、set或类似接口。这样才能保证模块间的隔离,方便后期维护或重构。 你的问题在于搞不清楚 业务逻辑和驱动,没有做好层次区分,去查查QP状态机,你这些东西都可以分解的清清楚楚。 ufbycd 发表于 2020-11-12 16:30
“一百个全局变量”还跨不同源文件访问,这么拙劣的代码就没什么模块化可言了,基本上是重构不了的。
良好 ...
学习了。 ufbycd 发表于 2020-11-12 16:30
“一百个全局变量”还跨不同源文件访问,这么拙劣的代码就没什么模块化可言了,基本上是重构不了的。
良好 ...
这次新项目,我用了rtthread,尽量不用全局变量,都用指针作为形参在函数间传递,外加函数的返回值。 菜鸟同学 发表于 2020-11-13 11:02
你的问题在于搞不清楚 业务逻辑和驱动,没有做好层次区分,去查查QP状态机,你这些东西都可以分解的清清楚 ...
学习。
页:
[1]