打印
[资源共享]

关于减少全局变量使用的方法

[复制链接]
1130|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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 | 只看该作者
如果只是要减少全局变量的使用,不用全局变量就是了  

使用特权

评论回复
5
sanfuzi| | 2022-10-5 19:30 | 只看该作者
全局变量的优点:可以减少变量的个数

使用特权

评论回复
6
i1mcu| | 2022-10-5 19:50 | 只看该作者
较于全局变量,用户可以使用单例来替代,并且保证单例的初始化只在本类方法中实现

使用特权

评论回复
7
Pretext| | 2022-10-7 09:16 | 只看该作者
代码优化不了,就升级硬件。

使用特权

评论回复
8
Pretext| | 2022-10-7 09:17 | 只看该作者
而且你这变量200个也不多,单片机基本都能存下。

使用特权

评论回复
9
芯路例程| | 2022-10-7 09:19 | 只看该作者
可以使用动态内存分配,不用的释放掉。

使用特权

评论回复
10
芯路例程| | 2022-10-7 09:20 | 只看该作者
或者配合Flash,将一些不经常改变的数据存Flash去得了。

使用特权

评论回复
11
macpherson| | 2022-10-9 20:04 | 只看该作者
要么用指针传参数,要么隐含使用全局变量  

使用特权

评论回复
12
albertaabbot| | 2022-10-9 21:02 | 只看该作者
局部变量与全局变量对于函数来说,访问非常方便

使用特权

评论回复
13
1988020566| | 2022-10-9 21:46 | 只看该作者
直接对变量进行赋予常量数值进行初始化  

使用特权

评论回复
14
backlugin| | 2022-10-9 22:40 | 只看该作者
用全局变量有时候编译产生的代码效率更高

使用特权

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

本版积分规则

97

主题

607

帖子

1

粉丝