找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 407|回复: 8
打印 上一主题 下一主题
收起左侧

全局变量满天飞怎么优化程序

[复制链接]
跳转到指定楼层
楼主
ID:734017 发表于 2024-2-29 12:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
bit HIM_page_Waterlight_flag =0;

bit Ion_A_flow_clean_start = 0;                                        //清洗
u8 xdata Ion_A_flow_continued_temp = 0;        //清洗计数

u8         Ion_A_flow =0;                                                                             //流量
bit Ion_A_flow_start = 0;                                                                //流量开关
u16 xdata Ion_A_flow_continued = 0;
u8 Ion_A_RF_EMS_mode =0;                                                               
bit Ion_A_RF_EMS_mode0 =0;                                                //自动模式切换
        
u8 Ion_A_Energy=0;                                                                                //电A强度
u8 Ion_A_Energy_temp=38;                                                        //电A强度

u8 Ion_A_mode =0;                                                                                        //电mode
bit start_Ion =0;                                                                                        //电独立开关
bit overturn_Ion_A=0;                                                                        //翻转
        
bit switch_delayed =0;        

u16         Ion_PWM_Counter =0;
u16 Ion_mode_PWM_Counter =0;
u16        RF_ion_autoIon_Counter =0;

随着功能模块增加,变量堆爆了,以上是其中一个模块的变量。程序经过一年增大到10个模块。有时候跑单个,或者同时跑多个。数据处理头大了。
请教前辈这方面的经验,方法。谢谢

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:883242 发表于 2024-2-29 13:22 | 只看该作者
如果是主程序和中断共享的变量,那就不能优化。如果不共享那就封装到函数的局部变量好了。
回复

使用道具 举报

板凳
ID:458247 发表于 2024-2-29 14:08 | 只看该作者
分模块写代码,模块之间不应该有耦合变量,模块内部的变量定义成static类型,若两个模块真的有需要共用的变量,提取到rte.c里面,并且一样定义成static类型,在rte.c文件中增加该变量的接口,模块使用这个接口进行访问。
回复

使用道具 举报

地板
ID:41656 发表于 2024-2-29 14:41 | 只看该作者
对于相关的变量或者针对某个任务的可以做个结构体,这样方便管理。不必要的变量可以用局部变量
回复

使用道具 举报

5#
ID:401564 发表于 2024-2-29 15:49 | 只看该作者
二三十个变量并不算多
大程序尽量用局部变量
某个类型需要用到变量多的,就用结构体
宏定义也要合理的用上,调试程序的时候会方便修改
回复

使用道具 举报

6#
ID:1107043 发表于 2024-2-29 16:58 | 只看该作者
3楼和4楼的方法很好的。你可以在每个模块都建立一个结构体的变量。当这个模块需要增加变量时,直接在结构体增加就行。至于通用的变量,你可以单独写一个.c文件。这样子查询和修改都方便
回复

使用道具 举报

7#
ID:883242 发表于 2024-2-29 19:42 | 只看该作者
static局部变量是按全局变量分配空间的。虽然不能被其他函数访问,按软件工程的概念安全了,但没有真正的局部变量复用内存节约空间的能力,没事儿瞎加static是很浪费资源的。

软件工程是针对大型软件来说的,对于单片机这种螺蛳壳里面做道场的应用,很多情况下都是错误的。
回复

使用道具 举报

8#
ID:420836 发表于 2024-3-1 08:55 | 只看该作者
首先要做的是确定所有可以优化的变量。 对于超过数千行的程序来说,这可能非常耗时。
回复

使用道具 举报

9#
ID:491577 发表于 2024-3-1 19:26 | 只看该作者
单个的全局变量怎么可能多?除非是上千的数组才叫多,楼主是低估了现在的单片机,51单片机内存有8K,STM32的内存几十K,一千以下的变量小意思。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表