大家好,我是良许。
十年前我特么真是瞎了眼,机械专业毕业后居然接了个嵌入式的offer。第一天上班,我的领导扔给我一本STM32的数据手册,厚得能砸死人,然后丢下一句"下周之前把GPIO的例程写出来"就走了...
当时我就傻了,GPIO是个啥玩意?C语言也就课上混了60分的水平,连指针都整不明白。那段日子真是度日如年,晚上做噩梦都是寄存器地址和时钟配置。
好在功夫不负有心人,这些年摸爬滚打下来,我从一个连LED都点不亮的菜鸟,变成能独当一面的嵌入式工程师。去年我把多年踩坑经验整理成了《STM32实战快速入门》(点击直达)课程,也算是给走投无路的后浪们提供条生路了。
啰嗦这么多,进入正题,这里我把自学嵌入式的套路和坑都给你交底。
先说说入门硬件,别被割韭菜
刚上手别急着买开发板,市面上那些动辄上百的"豪华套装",大多是智商税。我最开始就被坑了,买了个所谓的"嵌入式学习套件",结果里面一堆用不上的传感器模块,接口还不通用,现在还在柜子里吃灰。
其实一块STM32F103C8T6的"蓝色药丸"开发板真的就够了,20多块钱,麻雀虽小五脏俱全。小破站里很多课程里的所有例程都是基于这个板子设计的。
除了开发板,你还需要:
- USB转TTL模块(十来块钱)
- 杜邦线若干(几块钱)
- 面包板一个(很便宜)
这套配置总共50块左右,能满足入门一年内的全部需求了。别问我为啥知道,因为我第一份工资对半砍用来买书和开发板,结果大部分都用不上,老板还纳闷为啥我总是月底蹭同事泡面吃。
关于学习路径,我踩过的坑
很多培训机构画的路线图又臭又长,搞得好像不把整个计算机科学学一遍就不能写嵌入式似的。扯淡!
我的建议是先搞定这几样:
1. C语言,但不是科班那种学法
大学里教的C语言跟嵌入式用的C语言简直是两回事。你需要特别关注:
- 位操作(那些&、|、<<、>>)
- 内存管理(嵌入式RAM紧张,用不好直接死机)
- volatile关键字(这玩意在普通C教程里基本不提,但嵌入式里超重要)
说个笑话,我刚入职时有次代码审查,主管问我:"你这个变量为啥不用volatile修饰?" 我一脸懵逼:"volatile是啥?能吃吗?" 然后全会议室都笑了...
2. 单片机,直接上手STM32
别浪费时间在51单片机上了,那玩意是上个世纪的产物。虽然有人说"先学51打基础",但我觉得那跟说"学开车先学马车"一样扯。
STM32用HAL库开发其实挺简单的,我之前带过一个实习生,没啥基础,一周就能点灯控制按键了。在我的《STM32实战快速入门》(点击直达)课程里,我就是直接从STM32教起的,省了不少弯路。
3. 别急着上RTOS,先把裸机吃透
很多人急功近利,基础不牢就想学RTOS、学Linux。结果啥都学不明白,代码全是从网上抄的,出了问题一脸茫然。
我建议至少把这些搞明白再考虑RTOS:
- GPIO控制(LED、按键)
- 定时器(精确延时、PWM控制)
- 通信协议(UART、I2C、SPI)
- 中断处理(这个必须吃透)
我自己当年脑子一热,看了两天FreeRTOS就想做多任务项目,结果搞出来的东西莫名其妙死机,排查了一周才发现是中断优先级设置错了。那会没人指导,走了不少弯路。
实战学习法:别光看书,动手才是王道
说实话,嵌入式这行真不是靠看书能学会的。我书架上十几本嵌入式"宝典",大部分只翻了前三章。
真正有用的学习方法是:
- 找个简单项目(比如温度显示器)
- 列出需要的知识点(ADC采集、LCD显示)
- 有针对性地查资料解决问题
- 遇到bug死磕到底
我记得刚学ADC时,书上写得云里雾里,看了三天还是不明白。后来我直接找了个例程,改了改参数,再去数据手册上找对应解释,一下子就通了。先上手实操,遇到问题再补充理论知识。
分享个真实故事:我第一次做UART通信的时候,死活收不到数据。检查了一晚上代码,结果第二天同事瞄了一眼说:"你TX/RX接反了...",当时就想找个地缝钻进去。这种教训,书上学不到啊!
常见陷阱,我全踩过
1. 调试靠printf
初学者都喜欢用printf调试,我也不例外。但嵌入式里printf很费资源,而且有时候会掩盖真正的问题。
更科学的方法是:
- 用逻辑分析仪(软件模拟的也行)
- 学会用断点调试
- 关键变量用LED指示
我在《STM32实战快速入门》里专门有一节讲调试技巧,因为这真的太重要了,比写代码本身还重要。
2. 代码全靠抄
网上的代码质量参差不齐,有些看起来能用,实际上漏洞百出。我刚入行时就犯过这种错,复制了一段"高手"写的I2C驱动,结果在高温环境下莫名其妙出错,折腾了好久才发现是没做超时处理。
正确的学习方式是:理解官方例程,然后自己写。慢一点,但起码知道每行代码是干啥的。
3. 眼高手低
这可能是最普遍的问题了。看了几本书,以为自己啥都懂,但一写代码就傻眼。
解决办法只有一个:多做项目,从小项目做起。先点个灯,再控制个电机,然后做个温控系统...循序渐进。
我当年脑袋一热,想一口气做个"智能家居系统",结果连最基础的传感器都读不好数据,白白浪费了两个月。后来我在课程设计中特意避开这个坑,设计了由浅入深的项目序列,让学员有成就感的同时,也能稳步提升。
学习资源,良莠不齐
说到学习资源,网上一搜一大把,但大部分质量堪忧。我给你推荐几个我亲测有效的:
1. 官方资料必看
ST官网的参考手册和HAL库说明文档虽然枯燥,但是最准确的。别嫌它们难懂,迟早要啃下来。我每天睡前都会翻一小节参考手册,久而久之也就熟悉了。
2. 好书只需几本
- 《C和指针》:把指针搞明白
- 《ARM Cortex-M3权威指南》:理解单片机内核
- 《STM32实战指南》:实用的工程开发参考
别被培训机构的"必读书单"吓到,精读这几本就够了。其他的等用到了再查。
3. 视频课程要筛选
B站上的免费教程质量参差不齐,有些讲得挺好,有些纯属误导。选课程有个简单法则:看评论区老司机的反馈。
我自己录制《STM32实战快速入门》(点击直达)课程时,特别注重把理论和实践结合起来,毕竟我就是被那些纯理论的课程坑过的人。每个知识点都有对应的实战项目,从点灯开始,到最后的MQTT物联网应用,循序渐进。
编外话:嵌入式到底难不难学?
老实说,嵌入式没有传说中那么难,但也绝对不是几个月就能精通的。
最难的部分是:软硬结合、调试困难、问题隐蔽。比如我曾经遇到一个bug,程序偶尔死机,排查了两周才发现是电源纹波导致的。这种问题,单纯学软件是解决不了的。
最爽的部分是:做出来的东西是实实在在能看能摸的。记得我第一次做的智能小车,演示给同事看时,大家都惊叹不已,那种成就感是写网页或APP所不能比的。
从零自学的话,踏踏实实一年,能达到就业水平;三年,能独当一面;五年,能做技术专家。当然,前提是你真的热爱这个行业,不是为了跟风或者高薪。
我自己是从机械转行过来的,啥基础都没有,不知道加班多少个晚上才算入门。现在回想起来,那段苦逼日子反而是最有动力的时候。所以,只要你真的喜欢,肯定能学好。
最后的唠叨
自学嵌入式最大的敌人不是难度,而是坚持。很多人看几天书就放弃了,觉得太难、太枯燥。
但只要你能度过最初的迷茫期(大约1-2个月),后面就会越来越有意思。等你第一次看到自己写的代码控制电路时,那种成就感会让你上瘾的。
另外,找个学习伙伴真的很重要。我当年就是和一个同事相互监督,每周交流进度,才没有半途而废。我的《STM32实战快速入门》(点击直达)课程的学员群也是这个目的,大家互相帮助,一起成长。
最后送你一句我常挂嘴边的话:嵌入式没捷径,但有弯路;少走弯路,就是最大的捷径。
希望你能在这条路上少走弯路,早日实现自己的目标!
另外,想进大厂的同学,一定要好好学算法,这是面试必备的。这里准备了一份 BAT 大佬总结的 LeetCode 刷题宝典,很多人靠它们进了大厂。

刷题 | LeetCode算法刷题神器,看完 BAT 随你挑!
有收获?希望老铁们来个三连击,给更多的人看到这篇文章
推荐阅读:
欢迎关注我的博客:良许嵌入式教程网,满满都是干货!