打印

我的嵌入式软件学习总结

[复制链接]
367|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lindoug|  楼主 | 2020-4-23 10:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
其实自己在嵌入式软件学习上并没有啥特别的心得,只是从事过几年的嵌入式的学习和工作,写下来,供需要的人参考,也整理一下自己的思路。
这篇**也参考了之前写的一个答案(链接)。
我是从51开始学的,然后是STM32,然后开始接触Linux和C#、Qt等上位机开发。所以比较常用的编程语言是C,C++和C#。对于嵌入式来说,C是首选,工作了这几年,也都是靠C吃饭的。对于嵌入式编程来说,不在于我们掌握几款芯片,重要的在于精,精通一款就好,然后重要的是嵌入式编程的思想。比如如何处理中断,如何保证系统的实时性,如何高效的处理日志,如何通过串口解析协议,如何自己设计一个命令行解析程序...等等。
如何学习嵌入式软件开发呢?这个问题好从自己大学说起。记得大二的时候接触51单片机,感觉这个东西使用起来好费劲,还设置各种寄存器,配置各种参数。当有一本书出现的时候,我豁然开朗了。这本书的名字叫《嵌入式软件程序设计,使用MCS-51》。这本书上介绍了很多我们常用到的一些单片机的功能和外设的控制。我需要使用单片机实现一个什么样子的功能,只需要找出相关代码,组合一下就OK了。so easy! 貌似这本书已经买不到了,其他的书,应该也是可以的。
单片机的路,就这么慢慢走着。比如控制步进电机、直流电机、舵机等。如何控制超声波测距、温度传感器等。这种设备的代码都是烂大街的,一抓一大把。 我们在知道模块的控制原理的基础上,参考例程代码,从读懂,到慢慢开始自己写。慢慢熟练,这些知识、这些代码就都变成自己的了。
顺便说一下,玩转嵌入式之前,C语言还是必须要搞定的。通过了计算机二级考试,可并不能证明你C语言合格。小平同志说过,实践是检验真理的唯一标准。多练手吧。《杜拉拉升职记》中也有一句话说的很正确,你能从书本上获得10%的经验,能够从前辈身上获得20%的经验,剩下的70%的经验都是从实践中得来的。
后面开始接触STM32和Atmel的一款ARM7芯片,一对比才发现,STM32的例程好丰富,各种都给你写好了,又和学51单片机一样,找到了诀窍了。瞬间就可以搞定各种功能,实现各种小玩意。大四的时候也参加了《CCTV机器人大赛》。
上了研究生之后,开始学习Linux,也不是自己想学,单纯是为了实验室项目的需要才不得不接触Linux,后面研究生也主要是在用Linux。期间也使用STM32做过一些项目。在这期间才学会了使用循环缓冲区的方式处理串口数据。此时,才真正静下心来思考,如何才能设计一个比较好的嵌入式软件架构。在代码编写中,也逐渐开始使用队列等结构。
有一次找工作面试,被面试官问到函数指针的用法,才把注意力放在函数的指针上。PS:函数指针和指针函数有啥区别呢。
--
后续会有干货!

使用特权

评论回复

相关帖子

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

本版积分规则

468

主题

472

帖子

20

粉丝