大家好,我是无际单片机编程的徐工,今天闲暇,抽点时间和大家聊聊关于嵌入式开发的学习。
因为爱迪生发明灯泡的故事,自小就在我的内心深处藏了一个自己长大后要成为像爱迪生一样的科学家。
一晃好多年过去了,梦想还是梦想,人生也去了一半,再过几年就四十岁了,科学家这辈子是没有希望了。
因为爱好电子,对电子产品有极大的兴趣,在大学的时候就学了单片机,毕业之后一直从事着单片机相关的工作,说起来也算是圆了自己儿时一点小梦想。
嵌入式开发是什么呢?嵌入式开发就是开发智能电子产品的,专业的名词叫“可编程设计”,主要针对的就是电子产品的软硬设计。
包括我们周边的很多电子产品,智能手机,电子手表,平板,蓝牙智能音箱,冰箱,洗衣机,空调,遥控风扇,共享单车,智能充电桩,儿童遥控器玩具等等。
其中智能手机,平板,等一些智能程度比较高的电子产品,是基于ARM + Linux/Android开发的。
冰箱,洗衣机,空调,遥控风扇,共享单车,智能充电桩,儿童遥控器玩具、智能穿戴等功能相对比较简单的是基于单片机开发的。
我们先简单的探讨一下ARM + Linux/Android类嵌入式电子产品的开发.
基于ARM开发的电子产品相对比较复杂,一般需要几十上百的研发团队相互配合才能完成,靠一两个人的努力很难实现。
所以ARM开发需要学习的东西相对也比较多,包括Linux,脚本开发,C语言,C++等,工作的职位也是分的比较细致。
其次,我们再看一下基于单片机的嵌入式开发
基于单片机的电子产品的开发相对ARM + Linux/Android就要简单很多,而且应用也是非常的广泛,我们周边无处不在。
类似的单片机嵌入式开发的公司很多,小的企业只有一两个工程师,大的有几十个。
接下来,我们在聊一下“嵌入式开发难吗?”
关于ARM+ Linux/Android的学习,之前尝试的学习过,有些产品开发中也有涉及。
个人感觉如果你是零基础直接去学习的话难度还是挺大的,如果你从事了几年单片机开发,再进阶相对就简单很多,也比直接学基础要扎实得多。
这么多年我一直从事单片机类电子产品开发,用到的单片机的型号也比较多:C51,STM32,PIC,AT,AVR,华大,灵动,合泰等品牌。
单片机开发学习相对比较容易,如果是零基础开始学习,大概需要2-5个月就可以达到独立做项目水平。
单片机嵌入式程序开发需要学习的基础:
- 单片机开发C语言基础
单片机程序开发的基础是C语言,汇编目前应用的已经非常少了,所以不建议大家入门阶段从汇编开始学习。
单片机C语言和上位机C语言,在实战开发中还是有点区别,上位机是基于电脑平台开发的,硬件资源非常丰富,而单片机的单片机资源相对比较匮乏,包括ROM和RAM的空间要小很多。
所以新手学习最好学习单片机c语言编程,这块的教程可以看无际单片机编程的。
当然C语言是通用的,知识在实际开发应用上细节上有点小区别。
2.掌握一定的硬件基础
单片机嵌入式程序开发,对硬件知识的要求不是很高,只要是理科毕业的就完全足够了,我们需要简单的了解电阻,电容,二极管,三极管的一些用法即可。
目前很多电路集成化程度很高了,很多应用我们只要寻找现成的芯片方案即可,而且也有代理商或原厂的技术支持。
所以对单片机开发工程师来说,对硬件基础要求也是越来越低
零基础如何入门学习嵌入式单片机程序开发?
第一步: 学习C语言基础(大概需要1-2周)
单片机C语言需要学习掌握哪些知识点:
在单片机学习的入门阶段,大家掌握以上的C语言知识点就可以满足单片机的学习了,也可以满足一些简单项目的程序开发。
随着单片机程序开发经验的积累,再后续我们还需要进一步的学习C语言的一些高级用法,如下图所示:
C语言的一些高级语法,包括指针,结构体,枚举等,在入门阶段不建议大家学习,因为这些知识在入门阶段基本上用不到,同时也会增加我们学习的难度,等我们真正需要使用这些知识点的时候,之前学习的已经忘得一干二净了。
第二步:学习掌握单片机的外设驱动:(大概需要2-3周)
关于单片机的外设知识的学习,建议大家买个开发板,在开发板上实操学习,一边看视频,一边敲代码,同时在开发学习板上测试验证功能。
类似的学习资料网络上相对比较丰富,我们在选择购买开发板的时候,大多数都有配套的开发教程,有视频教程,也有对应的PDF文档教程。
这部分知识的学习相对也是比较容易。
第三步:项目实战学习(2-5个月)
在开发板上学习单片机,就仅仅只能学会单片机而已。
单片片机每个外设学会以后,你会发现想做项目依然无从下手。
其实不管你学什么东西,都是这样的,就像刚学会写字肯定也不会写作文,刚学会英语单词还不会怎么写英语文章。
我的经验就是直接项目去学习是最快的,这也是为什么无际单片机编程要以实战项目让学员学习单片机开发的原因。
学习单片机最终渴望肯定是自己能独立做一些产品,而这些其实都是不断通过做项目磨练出来的。
刚开始入门的时候,大家要选择一些比较简单的项目去实战,就是电子时钟,交通红绿灯控制等。
有了一些简单的项目实战之后,再选择一些自己比较感兴趣的,较复杂的产品去积累经验。
最后,其实自学完全也是可以的,只是时间会比较长,有条件的话还是找个人带最快,别忘记时间也很宝贵!