C语言开发单片机为什么大多数都采用全局变量的形式?_c语言开发单片机为什么大多数都采用全局变量的形式

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

如果你需要这些资料,可以戳这里获取

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

转载于:https://blog.csdn.net/weixin_43982452/article/details/119651790?spm=1001.2014.3001.5502

一个代码狗,成长经历都是莫名相似的。

你应该和我有类似的经历,虽然功能都能做出来,但是总觉得自己代码缺了点什么。

就是怎么写都觉得不够完美,感觉代码的水平介于专业和不专业之间。

自己的认知水平也非常有限,也不知道那些大佬写的程序是怎么样的。

曾经自以为,把某些功能独立写一个函数,然后多用指针程序就显得比较牛逼了。

其实有时候自己都觉得有点牵强,有种强行装逼的感觉,明明可以写的更简单更好理解。

我在这个阶段徘徊了3年左右,一直没有提升,主要当时主要用51单片机在做项目。

相对比较简单,基本上在一个mian.c文件就能做完整个产品功能,一些数据也是通过全局变量的方式去存储,虽然使用方面,但是程序如果大了变量不注释有时候就忘记是干嘛用的了。

img

那几年一直接触不到大神写的代码,自己的代码也一直处于这种水平无法提升。

所以,一个人代码水平怎么样,其实跟去你有多少年经验没有必然的联系,贵人和环境决定你的成长速度。

如果你一辈子都接触不到大佬写的代码,那你一辈子的水平可能都处于中级水平。

虽然我在这个行业做了10年,但是真正代码水平有质的飞越也就在那2,3年,还是自己摸索的情况下,如果当初有人带,成为现在的水平其实只需要1年。

现在想想走弯路付出的时间代价真的是太大了。

很多人可能好奇,C语言开发单片机为什么大多数都采用全局变量的形式。

其实这个说法不完全正确,还是那句话,可能是你接触的代码都是这样子,而更好的代码结构你或许没接触到。

你的思维可能还是处于c语言是面向过程编程的误区,其实在做一些中大型项目的时候,为了保证程序可移植性和可扩展性,都会采用面向对象的编程思维。

最典型的例子就是STM32的固件库。

img

如果大家研究过固件库那些外设的.c文件,你会发现基本没有全局变量,为什么?

我的理解是这样的:

1.对于一个资深工程师来说,全局变量绝对不允许用来被多个不同的.c文件调用,否则移植性极差,而且程序大了,文件多了,如果全局变量都声明在.h文件里,你怎么保证变量名不会重复?

2.如果我用全局变量,那变量的应用范围仅限该.c文件内,也就是相当于static的作用域。

除了没有全局变量以外,不知道你发现没有,它们的.h文件定义了很多结构体,枚举。

img

然后,在.c文件里面的那些函数呢,基本上就是对这些结构体进行操作。

img

可能你现在一脸懵逼,这是什么神操作????

其实啊这就是所谓的面向对象的编程思维,难怪stm32的固件库移植性和可扩展性超强!

我们拿GPIO来举例:

img

STM32固件库把每个外设可以配置的参数都通过结构体封装起来,比如说GPIO有具体引脚(GPIO_Pin),频率(GPIO_Speed),工作模式(GPIO_Mode)。

不同的参数对应不同的设置值,比如说上图的GPIO工作模式,通过枚举来给值重命名,这样可以增强可读性。

而这些值其实就是最终去配置单片机寄存器的。

大家在使用固件库的时候,都是先定义好结构体,然后初始化,再把这个结构体的地址作为形参传输相关初始化函数完成配置。

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

、电子书籍、讲解视频,并且后续会持续更新**

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值