当了12年大学教师,跟大家聊聊嵌入式工程师,硬核单片机编程思想

当了12年大学教师,跟大家聊聊嵌入式工程师,硬核单片机编程思想

摘要:没有思想的裸程序就如一副人体骨架,有个人形,但没有人样,骨骼之间的关节都是靠胶水或拉线连接起来的,生硬而呆板。假如给骨架包上皮肉,加上灵魂,我们就会惊叹:啊!这是帅哥,这是美女!由于骨架活了。

186741ea3be67310a237cc36c7749bfe.png

///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了免費的,私信我就可以哦~点我头像黑色字体加我地球呺也能领取哦。最近比较闲,带做毕设,带学生参加省级或以上比赛///正文开始:

一、裸编程是什么?

先声明一个概念,裸编程,指的是在裸机上编写程序,裸机,在单片机领域就是指带着硬件的单片机控制系统,不要想歪咯。

在裸机上编程,就犹如在一片荒地上开垦,任何一锄头下去,都会碰到硬生生的石头,要说做这有什么味?拓荒者追求的是来年的绿洲。而我们这些开垦裸机的所谓的工程师们追求的是什么?我们当然追求的是完成一个任务。

我们一般都自称是高级知识分子,那么我们在拓荒的过程中应该想些什么?当然不是想着如何把任务完成,而应该首先想着我们在想些什么。绕了是不?绕了就对了,这一绕就绕出了思想。思想是一个简略的人在一个复杂的环境里做任何事情的统帅,它影响着一个拓荒者人生的每一个细节,当然也包括裸编程自身。

当一个人拿着锄头,一锄又一锄,汗滴脚下土的时候,我们能知道他们在想什么吗?当然这不好说,假如自己去锄就知道了。但是大抵也差不多,随便举几个吧:这太阳他娘的怎么这么毒?这石头他娘的咋这么多?这地种什么最好?这还有多少天能搞完?这样干太慢了,要是有台机械搞多好。当然这只是一局部,任何人能够想出很多想法来。

那么当我们在裸机上拓荒的时候,我们该想些什么?兴许我们一般的想法是:先把一个简略的功能做了,先把一个重要的功能做了,今天终于把这个功能调试好了明天能够做下一个功能了,这个为什么不是我想象的那样的结果?真是莫名其妙!也等等一下吧。

假如拿来一个任务,搭好测试平台就初始做程序,想着一个功能一个功能的凑完,然后就自我陶醉着成功的喜悦,那这样做程序,根本就叫做没思想。有思想的做程序,是不能一下去就堆积源码的,由于那样只会让一堆生硬的数字怯生生的挤在一起,不管他们有没有多余,有没有矛盾。所以写源码之前,是要想想如何写的。兴许很多人在写之前都想过类似的问题,假如把任务模块化后再组织程序。但是这样的想法只是任务上的事情,而并不是裸编程时的思想,裸编程的思想,应该是在组织任务模块过程中及编写裸程序时影响源码组织的指教思想,它直接决定着源码的质量。

一个数据构造,一个模块构成,一个单片机的指令,一个硬指令的运行机制,一个口线的驱动方式,一个中断的顺序,一个跳变的延迟,一个代码的位置,一个逻辑的组织,一个模块与模块之间的生(运行时的状态)死(不运行时的状态)关系等等,都是裸程序思想的组成局部。

这似乎很琐碎,但裸程序原本就如此,它不同于上位机程序,有一个强大完善的操作系统支持。单片机里不可能植入操作系统,那样做就变味了,可不要有人跳出来说,某某某单片机就有操作系统了。裸程序就应该是建设在赤裸裸的硬件根底上的程序,独有有用的功能才有代码,裸程序的质量兴许经常在应用中感觉不出来,兴许你做和他做都能实现功能,但是好的裸程序有良好的可扩充性、可维护性,系统具有高稳定性和高性能。

74ec6c6da17b3cfea46fa24768cbcdcf.png

而追求这种高品位的技术境界,就必需要有好的思想来指教。是不是看着有些迷糊?别说看得迷糊,我说都说迷糊了,总的来说,就是把一个优秀的灵魂,植入你的源码中,让你的源码具有一个良好的思想。

二、裸编程详细做法

前文说到裸编程要有思想,兴许还不够详细,接下来就是要详细说裸编程的思想的详细做法。

没有思想的裸程序就如一副人体骨架,有个人形,但没有人样,骨骼之间的关节都是靠胶水或拉线连接起来的,生硬而呆板。假如给骨架包上皮肉,加上灵魂,我们就会惊叹:啊!这是帅哥,这是美女!由于骨架活了。

裸程序也一样,假如按传统的思维方式说这样就足够了,那么裸程序就形如骨架,通常只是一些功能的粗糙堆砌,也只会叫后人看了说这程序垃圾,而后人再做也未必能跳出这个圈子,那么后后人看了又叫这程序垃圾,如此下去,代代相传,传了什么?传了一个总被叫垃圾的东西:没思想的裸程序。

我做了程序好多年,也思考了编程好多年,不断的经历积攒告诉我:写好的程序不是如何去完成代码,而是如何去组织代码。上位机中面向对象的编程思想,就是一个非常可取的思想。

面向对象的编程思想在上位机中是有一个非常丰盛的开发包和功能强大的操作系统支持的,裸编程如何引入这样的思想呢?兴许很多人会觉得不可能。

其实,没有什么是不可能的。再复杂的思想,最终都会归结到汇编,归结到裸程序,我们的单片机程序,正是一种裸程序。只是在单片机编程时和微机编程时我们站在开发平台上的高度不一样,罢了!

对这个高度的了解,兴许很多人很困惑,由于我们平时很少注意它们,那么这里我就举个其他的例子来说明,只管和裸编程好象不很相关,但是这个例子里的高度概念十分清晰。

我们知道网络传输规范层次有七层:应用层、表示层、会话层、传输层、网络层、链路层、物理层,这么多层做什么用?兴许了解这样分层的概念也十分辛苦,但是了解这样分层的思想,就容易多了,而且这也是我们硬件工程师们最应该借鉴的思想,让我们的硬件设计更具有规范性和前瞻性。

这个七层的思想从根本上讲就是将一个网络传输产品细化,让不同的制造商选择一个合适自己的层次开发自己的产品,层次不一样,他们所选择的开发根底和开发内容就不一样,高一层开发者继承低层开发者的成果,从而节省社会资源,提高社会出产力。对这个指教思想我就不赘述了,各位自己去了解,这里要说的是,微机

  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值