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

2019-08-19 17:24发布

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

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

有没有人能讲讲怎样减少使用全局变量?我一写程序就马上想到用全局变量了,除了上面的例子,还有:串口接收数据包、DMA发送数组(见http://www.openedv.com/posts/list/44829.htm)、DMA采集ADC值。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
stm32wwxf
1楼-- · 2019-08-21 10:17
mack13013 发表于 2017-5-12 14:06
全局变量不是老虎,不要害怕使用全局变量,只要能让程序更加合理,使用全局变量也无妨。

了解全局变量的 ...

做项目你要综合考虑程序的可移植性,还有维护。你全局变量多了,牵一发动全身,改的你发慌
Ecrhon
2楼-- · 2019-08-21 10:28
 精彩回答 2  元偷偷看……
mill
3楼-- · 2019-08-21 16:09
Ecrhon 发表于 2017-5-12 20:30
这个确实,拿到过几个前辈写的程序,想要移植过来其中的某项功能,那真的是牵一发而动全身,搞到最后移植 ...

那可能他逻辑没组织好或者你程序还没看太懂吧
mack13013
4楼-- · 2019-08-21 16:22
本帖最后由 mack13013 于 2017-5-12 23:45 编辑
stm32wwxf 发表于 2017-5-12 15:29
做项目你要综合考虑程序的可移植性,还有维护。你全局变量多了,牵一发动全身,改的你发慌

你说的并不针对我要表达的意思。

我是说,你要了解全局变量的优缺点,针对具体问题比较一下使用全局变量和其他方法的优缺点,如果使用全局变量比其他方式有优势,那就用(这是废话,基本是要表达的意思就是:哪种方法优秀就用哪种方法)。

使用全局变量只是方法的一种,肯定要在众多方法中选择一种最优秀(这个基本上是主观感觉了)的方法。

你说的,连可移植性都不考虑,很明显是个菜鸟的行为,或者后期项目需求改变。

我要说的基本意思就是,选择最优秀的方法,即使这个方法是使用全局变量。再有一点就是,不要因为需要使用全局变量就要“强行”去回避,只需要针对全局变量的弊端,平时使用时注意避免就好。

一周热门 更多>