一.什么是单片机?什么是嵌入式?它们之间的区别与联系。
关于这个问题我在网上寻找到了相关文章解释得很详细,不了解的同学可以参考一下这篇文章:https://zhuanlan.zhihu.com/p/81930213
二.学习路线
一个人学习是孤独的,如果你是一名学生,建议加入学校的电子社团或者实验室,有老师的帮助和同学的互助能更好去提升自己,多与同学组队参加项目比赛,能收获更多的知识经验。
1.C语言! C语言! C语言!
C语言可以说是贯穿整个嵌入式的核心程序语言,想要学好嵌入式,C语言必须学会:
推荐:小甲鱼—带你学C带我飞:
https://www.bilibili.com/video/BV1ti4y1K7rA?spm_id_from=333.999.0.0
郝斌C语言:
https://www.bilibili.com/video/BV1vh411S7LV?spm_id_from=333.999.0.0
初学者可以根据视频边学边敲代码,初学阶段要学会掌握基本的函数,数组,语法关键词if,for,while的使用即可,指针与结构体部分可以在后期再进行补充学习。
2.基础电路与工具的学习
推荐:
模拟电子技术—郑益慧
https://www.bilibili.com/video/BV1Vf4y1e7ti?spm_id_from=333.999.0.0
数字电路—王红
https://www.bilibili.com/video/BV1a54y1x7AS?spm_id_from=333.999.0.0
学习嵌入式,避免不了跟硬件打交道,最好能具备一定的模电数电的基础,作为初学者,只需要学会电阻,电容,二极管,三级管,mos管等常用器件的工作原理,及常见基础电路的原理图就可以了,如果你不打算从事硬件开发工作,不需要花太多精力将这两门课完全弄懂,遇到不懂的电路,器件原理直接进行百度,单点突破即可。工具方面要学会示波器,万用表等基本硬件测试工具以及电烙铁焊接技术就可以了。
3.学习单片机
有了C语言基础与电路知识基础后,就可以正式开始学习单片机了,当然,也可以跨越不学单片机直接去学习linux,但学习难度会比较大,有单片机基础再去学习linux能使自己对底层基础知识更了解,同时,学会单片机还能做一些有趣创意的小发明。
学习单片机建议从51单片机开始学起,可能会有人觉得51单片机性能弱,比较落后,已经没必要去学,这种思想是错误的,首先,单片机只是一个工具,本质上我们是学习C编程及其电路的设计,即使我们以后不使用51单片机,但从中学到的编程水平和电路相关的知识是在所有嵌入式产品上是通用的,另外,在我们现实生活中,包括不限于冰箱,空调,洗衣机,烤箱,电饭锅等绝大多数家用电器的MCU都是51内核的单片机,其优势就在于操作简单,价格便宜,就像如今汽车与飞机发展得再好,考虑成本与便捷上,最后的1公里路还是小电驴最占优势,但最重要的是对于初学者来说,51单片机学习资料较多,底层相对较简单,可以很好地让初学者学习入门单片机,理解寄存器底层工作原理。
推荐:
郭天祥—10天学会51单片机
https://www.bilibili.com/video/BV1tT4y1M7uR?spm_id_from=333.999.0.0
普中科技51单片机学习
https://www.bilibili.com/video/BV1qt4y1Y7FP?spm_id_from=333.999.0.0
金沙滩手把手教学51单片机
https://www.bilibili.com/video/BV1mi4y15745?spm_id_from=333.999.0.0
可以根据教程去淘宝购买相对应的开发板进行学习51单片机,跟着视频例程去逐步调试开发板上的模块进行学习。
在学习完视频例程后,就可以使用51单片机做一些实战小项目了,比如心形流水灯,小蛮腰,循迹小车等等。
这个过程会涉及到仿真,绘制电路PCB的知识:
电路PCB绘制软件学习推荐:
Altium Designer 17 绘制51单片机开发板PCB全程实战视频0基础入门
https://www.bilibili.com/video/BV1eK4y1L7BS?spm_id_from=333.999.0.0
0基础入门Altium designer( AD)5小时教学
https://www.bilibili.com/video/BV1XK411377a?spm_id_from=333.999.0.0
Altium Designer 17绘制51单片机开发板PCB全程实战视频0基础入门
https://www.bilibili.com/video/BV1eK4y1L7BS?spm_id_from=333.999.0.0
Altium Designer16 绘制STM32 pcb开发板0基础入门
https://www.bilibili.com/video/BV1hV411h7Pk?spm_id_from=333.999.0.0
书籍推荐:
电路设计与制作实用教程(Altium Designer版):
这本书对新手学习操作Altium designer比较容易上手。除了Altium designer,还有立创EDA,PADS,Allegro等PCB设计软件
仿真软件学习视频推荐:
电路仿真proteus从0基础入门到精通完整版:
https://www.bilibili.com/video/BV1kv411b7SS?spm_id_from=333.999.0.0
10分钟学会PROTEUS绘制51单片机最小系统:
https://www.bilibili.com/video/BV1WZ4y1g7qA?spm_id_from=333.999.0.0
在51单片机掌握熟练后,可以去学习性能更强的STM32单片机了,在学习前,可以巩固复习一下C语言指针,结构体,链表方面的知识,
推荐进阶书籍:
(1)C专家编程
(2)C陷阱与缺陷
(3)C和指针
STM32单片机学习视频推荐:
(野火)stm32 零基础入门 霸道/指南者/MINI 入门篇 中级篇
https://www.bilibili.com/video/BV1mT4y1T7ad?spm_id_from=333.999.0.0
(野火)stm32 零基础入门 霸道/指南者/MINI 提高篇 大师篇
https://www.bilibili.com/video/BV1Ut4y1673t?spm_id_from=333.999.0.0
STM32入门 正点原子mini板精英板教学视频完整版
https://www.bilibili.com/video/BV1at4y1Y7bv?spm_id_from=333.999.0.0
开发小技巧:
在你真正的熟悉了51和STM32两款单片机,再遇到其他单片机其实也是大同小异。当你拿到一块从未使用过的单片机,并且需要快速开发一个项目时,你需要网上搜索这块单片机的官网,获取它的开发手册与例程,然后项目开发上需要哪些部分例程就搬运哪些,最后套进自己一套软件编写框架(如状态机),就可以开始写软件逻辑,遇到单片机例程与寄存器配置问题时,就在开发手册搜索关键词进行学习配置。
在你拿到一块陌生的电子模块时,可以选择去淘宝获取资料,比如搜索这个温湿度模块,在商品栏下拉,就能获取这个模块的资料。
如果你是一名在校大学生,在学习完以上知识内容后,可以去参加全国大学生电子设计大赛,飞思卡尔智能车比赛,物联网比赛等嵌入式相关的比赛来提高自己的项目经验,或者自己做一些创意有趣的小项目。
比赛的过程你可能会接触其他单片机,比如arduino,msp430,esp32等单片机
推荐:
零基础入门学习arduino单片机
https://www.bilibili.com/video/BV1Ni4y157p9?spm_id_from=333.999.0.0
10天学会MSP430单片机完整版
https://www.bilibili.com/video/BV1cT4y1M7cp?spm_id_from=333.999.0.0
4.学习RTOS(实时操作系统)
掌握了C语言与单片机,接下来可以去学习RTOS(实时操作系统),RTOS 即Real-time operating system,实时操作系统,这种操作系统比分时操作系统实时性强,线程切换速度快,线程切换时间可控,为了保证实时性,实时操作系统一般都是抢占型内核,允许高优先级的线程抢占CPU,优先级低的排队执行。普通的单片机程序只有一个while循环,功能比较多的时候这个循环代码很复杂,阅读性差,不好维护。而RTOS可以创建线程,每个线程有自己的while循环,功能可以模块化设计。
推荐:
[野火]《FreeRTOS内核实现与应用开发实战指南》
https://www.bilibili.com/video/BV16K4y157Tp?spm_id_from=333.999.0.0
【野火】《uCOS-III内核实现与应用开发实战指南》视频教程
https://www.bilibili.com/video/BV1FA411W7UE?spm_id_from=333.999.0.0
RTOS其实也是同理,在学会使用一种后,其他的RTOS也基本能掌握,RTOS是入门操作系统的一个难点,在掌握一定基础后,可以尝试着在以前做过的项目上跑RTOS进行实践学习。
5.学习linux
嵌入式的大宝贝linux,职业上主要分为嵌入式linux应用工程师和linux驱动工程师,linux学习主要偏软件,对于电子专业学生来说跨度会比较大,涉及到较多计算机方面的知识。
视频推荐:
正点原子】Linux入门学习
https://www.bilibili.com/video/BV12V411b71w?spm_id_from=333.999.0.0
野火Linux入门学习
https://www.bilibili.com/video/BV1g54y1x7d8?spm_id_from=333.999.0.0
另外,还有韦东山,朱有鹏大佬的视频也很不错
QT是一种人机交互界面,说简单点就是一个运行界面!Liunx不像Windows有自己的界面,它的操作主要是命令行模式,就像早期的DOS,Qt就是一个程序,用来写界面,上位机,可以更好的实现人机交互控制!
视频推荐:
零基础入门六天学会QT完整版
https://www.bilibili.com/video/BV1t64y1f7d1?spm_id_from=333.999.0.0
ARM+linux也是像学单片机一样,买板子看视频多做项目练习,真正的大佬都是从工作项目中历练出来的。
以上的嵌入式学习路线覆盖较广,真正工作会被细分成硬件工程师,软件工程师,单片机rtos,嵌入式linux应用,嵌入式linux驱动等各个职业,需要看自己对哪方面比较感兴趣,然后精学那个方面的知识。
一个人学习是孤独的,如果你是一名学生,建议加入学校的电子社团或者实验室,有老师的帮助和同学的互助能更好去提升自己,多与同学组队参加项目比赛,能收获更多的知识经验。