打印
[应用方案]

C语言开发单片机为什么大多采用全局变量?

[复制链接]
1830|42
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
claretttt|  楼主 | 2023-9-20 16:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在嵌入式开发中,全局变量被广泛使用,其原因有以下几点:
首先,资源限制。在嵌入式系统中,占资源是有限的,函数调用和局部变量都占用占空间过深的函数调用或变量过多,容易导致占溢出,造成数据运行时被更改,这种报不易复现和调试。
其次,访问速度也是一个问题,不同数据放置的位置访问时间不同,因此程序员需要手动安排数据的位置。通常采用全局变量结构体的形式。
再次,全局变量可以减少参数传递,避免不必要的数据拷贝。可靠性考虑,在嵌入式软件设计中,静态内存分配是一种常用的方式,程序员会设计好每段数据的长度和在内存里的绝对地址,这样可以避免内存碎片化。长时间运行后,数据在内存里的位置仍然是可控的,保证程序不会跑。所以内存不会耗尽,这在控制自动化等可靠性要求高的领域是必须的。
此外,使用全局变量可以避免内存回收机制,不好用的问题,程序员需要自己管理内存。刚好我总结了一些嵌入式资料放在视频结尾汇编时的历史问题。在单片机资源有限的时期,汇编是主要的开发语言,将数据结构提前在内存里分配好是汇编的常规操作。
虽然现在大家普遍使用C语言开发嵌入式系统,但是这些汇编设计留下的遗迹还是存在的。中断服务函数的交互中断是单片机程序的重要组成部分,中断服务函数是不能传参的,因此,使用全局结构体变量可以方便中断服务函数与主函数线程任务进行交互。

使用特权

评论回复
沙发
jtracy3| | 2023-10-6 20:46 | 只看该作者
全局变量可以用于存储状态信息,这使得程序的实现更加简单。

使用特权

评论回复
板凳
macpherson| | 2023-10-6 22:03 | 只看该作者
通过使用全局变量,可以将代码分解为更小的部分,从而使程序更容易维护和调试。

使用特权

评论回复
地板
geraldbetty| | 2023-10-7 22:39 | 只看该作者
全局变量在程序的全局范围内访问,因此它们的访问速度更快

使用特权

评论回复
5
gygp| | 2023-10-8 17:24 | 只看该作者
全局变量在所有.c文件中都是可见的,可以方便地在不同的.c文件中共享数据。

使用特权

评论回复
6
qiufengsd| | 2023-10-8 18:50 | 只看该作者
全局变量在某些情况下具有上述优点,但并不意味着应该无限制地使用全局变量。

使用特权

评论回复
7
timfordlare| | 2023-10-8 19:08 | 只看该作者
过度使用全局变量可能会导致代码难以维护和理解,也可能导致内存泄漏和其他问题

使用特权

评论回复
8
bestwell| | 2023-10-8 19:48 | 只看该作者
单片机资源有限,全局变量可以减少内存的使用。通过使用全局变量,可以在程序的不同部分共享数据,这有助于减少内存的使用并提高程序的效率。

使用特权

评论回复
9
cashrwood| | 2023-10-8 20:30 | 只看该作者
全局变量可以减少函数之间的参数传递,降低函数的复杂性

使用特权

评论回复
10
updownq| | 2023-10-8 21:39 | 只看该作者
全局变量可以帮助调试程序。如果程序的行为与预期不符,可以通过检查全局变量的状态来确定问题所在。

使用特权

评论回复
11
hudi008| | 2023-10-8 22:48 | 只看该作者
全局变量可以在程序的任何地方被访问,这使得程序的设计和实现更加灵活。

使用特权

评论回复
12
单片小菜| | 2023-10-10 10:00 | 只看该作者
全局变量是单片机的灵魂。

使用特权

评论回复
13
earlmax| | 2023-10-10 20:39 | 只看该作者
全局变量可以减少代码量,提高程序的可读性和可维护性。

使用特权

评论回复
14
plsbackup| | 2023-10-10 20:55 | 只看该作者
全局变量在程序的任何地方都可以访问,非常方便

使用特权

评论回复
15
backlugin| | 2023-10-10 21:03 | 只看该作者
C语言开发单片机时,全局变量是一种常见的数据类型。全局变量在程序的任何地方都可以访问,因此可以方便地在整个程序中共享数据。

使用特权

评论回复
16
usysm| | 2023-10-10 21:59 | 只看该作者
使用全局变量可以简化程序结构,减少函数调用和参数传递的开销

使用特权

评论回复
17
bestwell| | 2023-10-10 22:07 | 只看该作者
全局变量的生命周期比局部变量长,可以减少内存的分配和释放,提高程序的执行效率。

使用特权

评论回复
18
abotomson| | 2023-10-10 22:16 | 只看该作者
:全局变量在程序开始执行时就被创建,在程序结束时才被销毁,它们存储在静态存储区,生命周期长,在函数被调用时依然存在,直到程序结束时才释放。这对于在单片机中长时间运行的程序非常有用。

使用特权

评论回复
19
jackcat| | 2023-10-11 21:32 | 只看该作者
在嵌入式系统中,占资源是有限的,而全局变量可以在整个程序中使用,避免了频繁地创建和删除变量所带来的开销

使用特权

评论回复
20
pmp| | 2023-10-11 21:52 | 只看该作者
全局变量只定义一次,可以在整个程序范围内共享,因此可以节约内存空间,提高程序的运行效率。

使用特权

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

本版积分规则

16

主题

1133

帖子

0

粉丝