[资源共享] 关于减少全局变量使用的方法

[复制链接]
 楼主| match007 发表于 2022-9-15 20:43 | 显示全部楼层 |阅读模式
本帖最后由 芯圣电子官方QQ 于 2023-7-20 10:34 编辑

比如上位机向单片机A发送一个数32,A收到这个32后每隔2秒闪烁灯一次,闪烁的同时将32减1,然后将减一后的值再发给上位机,直到32减为0.
如果还没有减为0又收到上位机的数字比如100,立即从新计时,每隔2秒闪烁灯一次,闪烁的同时将100减1,然后将减一后的值再发给上位机,直到100减为0.

我想了很久,感觉使用全局变量是少不了的:一个放从上位机接收的数值,2s时间到的标志(没有在定时中断里做其他事情,因为我这里只是以闪烁灯为例)。
这里如果使用全局变量数量还是比较少的,假如A里面要做几百个类似但又不重样的事情呢?

有没有人能讲讲怎样减少使用全局变量?我一写程序就马上想到用全局变量了,除了上面的例子,还有:串口接收数据包、DMA发送数组、DMA采集ADC值。
Undshing 发表于 2022-10-4 22:48 | 显示全部楼层
用static
chenjun89 发表于 2022-10-5 14:26 来自手机 | 显示全部楼层
可以看看C语言的几本老外写的教程
fengm 发表于 2022-10-5 19:07 | 显示全部楼层
如果只是要减少全局变量的使用,不用全局变量就是了  
sanfuzi 发表于 2022-10-5 19:30 | 显示全部楼层
全局变量的优点:可以减少变量的个数
i1mcu 发表于 2022-10-5 19:50 | 显示全部楼层
较于全局变量,用户可以使用单例来替代,并且保证单例的初始化只在本类方法中实现
Pretext 发表于 2022-10-7 09:16 | 显示全部楼层
代码优化不了,就升级硬件。
Pretext 发表于 2022-10-7 09:17 | 显示全部楼层
而且你这变量200个也不多,单片机基本都能存下。
芯路例程 发表于 2022-10-7 09:19 | 显示全部楼层
可以使用动态内存分配,不用的释放掉。
芯路例程 发表于 2022-10-7 09:20 | 显示全部楼层
或者配合Flash,将一些不经常改变的数据存Flash去得了。
macpherson 发表于 2022-10-9 20:04 | 显示全部楼层
要么用指针传参数,要么隐含使用全局变量  
albertaabbot 发表于 2022-10-9 21:02 | 显示全部楼层
局部变量与全局变量对于函数来说,访问非常方便
1988020566 发表于 2022-10-9 21:46 | 显示全部楼层
直接对变量进行赋予常量数值进行初始化  
backlugin 发表于 2022-10-9 22:40 | 显示全部楼层
用全局变量有时候编译产生的代码效率更高
您需要登录后才可以回帖 登录 | 注册

本版积分规则

97

主题

607

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部