打印
[uCOS/RTOS]

关于使用rtos时的实现思路

[复制链接]
896|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
djz1992|  楼主 | 2020-10-23 11:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 djz1992 于 2020-10-23 11:55 编辑

一直用的裸机,rtos看了有段时间了,信号量、队列、邮箱也看了,也操作了。
但是还是不明白怎么来把旧项目改写成RTOS项目。有起码一百个全局变量。
比如,就把项目分为以下几个线程:
1.温度采集
2.段码显示屏
3.按键检测
4.PTC控制

段码显示当前温度、当前运行剩余时间,在按键进入设置模式的时候,显示设置温度、设置运行时间。
按键,可以开关机,进入设置,加减值。

问题:那么当前温度、设置温度、当前时间、设置时间,这些参数,需要多个不同线程使用。该如何传递?

思路1:每个变量都创建一个队列,写的线程发出,使用的线程读取。这个好像比较简单,就当他是全局变量用。可以阻塞等待。
思路2:创建一个队列,把所有参数按设想的顺序排列好(像通信协议),每次传递都把所有值都传递。各线程定时获取所有数据,但仅解析自己用得到的那部分。
思路3:。。。。。

感觉做之前得把所有状态量都列出来,然后好好规划一下怎么传递。。。。@ufbycd 大佬,指点下。其实上述功能,用不到rtos,主要是用在联网设备上。

使用特权

评论回复

相关帖子

沙发
ufbycd| | 2020-11-12 16:30 | 只看该作者
“一百个全局变量”还跨不同源文件访问,这么拙劣的代码就没什么模块化可言了,基本上是重构不了的。

良好的编程习惯是每个全局变量都加static修饰,即只允许本源文件直接访问。其它源文件要访问就加get、set或类似接口。这样才能保证模块间的隔离,方便后期维护或重构。

使用特权

评论回复
板凳
菜鸟同学| | 2020-11-13 11:02 | 只看该作者
你的问题在于搞不清楚 业务逻辑和驱动,没有做好层次区分,去查查QP状态机,你这些东西都可以分解的清清楚楚。

使用特权

评论回复
地板
djz1992|  楼主 | 2020-11-25 08:10 | 只看该作者
ufbycd 发表于 2020-11-12 16:30
“一百个全局变量”还跨不同源文件访问,这么拙劣的代码就没什么模块化可言了,基本上是重构不了的。

良好 ...

学习了。

使用特权

评论回复
5
djz1992|  楼主 | 2020-11-25 08:24 | 只看该作者
ufbycd 发表于 2020-11-12 16:30
“一百个全局变量”还跨不同源文件访问,这么拙劣的代码就没什么模块化可言了,基本上是重构不了的。

良好 ...

这次新项目,我用了rtthread,尽量不用全局变量,都用指针作为形参在函数间传递,外加函数的返回值。

使用特权

评论回复
6
djz1992|  楼主 | 2020-11-25 08:25 | 只看该作者
菜鸟同学 发表于 2020-11-13 11:02
你的问题在于搞不清楚 业务逻辑和驱动,没有做好层次区分,去查查QP状态机,你这些东西都可以分解的清清楚 ...

学习。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:人生苦短,冬日苦长,正是青葱,却无骄阳

115

主题

620

帖子

5

粉丝