一、先帮大家解答几个问题:
温馨提醒:文章所有资料在【无际单片机编程】公众号获取。
或者点击以下链接
/doc/DWFJRS05jeEhDbXpI
1. 单片机是什么?
答:单片机就是一个微型CPU,把程序烧录芯片里面,通过控制不同的外围电路实现不同产品的功能。
2. 学单片机编程对数学英语有要求吗?
答:数学会基本的加减乘除就行,英语会认单词a-z就行,很多外行人看到代码里一堆英文就头嗡嗡响,其实不然,只有少数语法是固定的,大多数英文都是工程师自己定义的,比如大神你也可以定义成DaShen(中文缩写)。
那很多人此时就开始质疑,当初这么辛苦学数学和英语到底是为毛?数学和英语不是单片机开发的门槛,但却决定你以后能达到的高度,如果你数学和英语不行,那么月薪20K可能就是你的巅峰了,如果很好,那么上限还有很大的空间。
3. 单片机好学吗?
答:看你怎么学,互联网的好处就是什么资源都能搜集到,相反的也容易迷惑世人,资料太多眼花缭乱让你无从下手,今天,我特意花了1周时间精心整理出一套让你快速学会达到月薪过万的视频教程资料,免费分享给大家。
4. 没有基础可以自学吗?大概多久能学会?
答:我曾经是自学入行的,什么C语言,什么单片机,什么二极管、三极管、电阻电容等等一窍不通,2011年毕业通过2个月时间自学然后直接从事开发工作。
5. 从学完到月薪过万要多久?
答:我第一份工作是2011年,当时月薪只有1.8K,半年后5K,当时消费水平没现在这么高,房价也便宜,按目前的通货膨胀一线城市目前正常只要死磕1年就能月薪过万,如果能找个人带你会成长地更快,我去年带了12个学员,除了几个自己放弃的,上班的全部月入过万。
6.单片机真的像劝退帖子说的工资这么低吗?
答:我看了某乎,某吧,有很多劝退学单片机的,说既要懂硬件,又要会编程,屁事多工资还低。
我从事单片机开发近10年,来说句公道话,在之前确实跟纯软件有比较大的差距,但是现在差距越来越小的。
我有几个做Java App开发的朋友,同样码龄,但是工资却没单片机开发的高,我身边做单片机开发20K以上的也很多。
所以只要有能力,其实薪资并不会低。
6. 我适合学单片机吗?
答:如果你没钱、没资源、没技术、每天还从事机械化没前途的工作中浪费青春,又想找一个能够养活自己和家人,可持续发展,能不断为你提供现金流的工作那就合适,抛开兴趣先不说,主要看你现在够不够穷。
7. 怎么学?
答:说了这么多终于到重点了,以前我就走了很多弯路,不知道该怎么入手去学习,后面慢慢研制出最骚学法,让你直接开始飙车。
首先,我们问问自己学这个来干嘛?当然是找工作赚钱!对,这个就是核心, 知道这个道理那我们马上开始实践,打开找工作的相关网站或APP,直接搜索职位:单片机工程师。
然后看我勾选出来公司对该职位的需求,我们只要找出共同点针对这些需求去学就行了,结合我的经验直接给大家总结从事单片机开发最重要的几个关键字:
- C51单片机/STM32单片机
- C语言
- 能看懂原理图
- 基本焊接能力
根据以上关键字给大家总结出一套系统学习流程和教程,达到一针见血的目的。
二、学习准备
- 一台电脑
- 一套STC51开发板
- 教程资料包
后期如果想进阶则需要一套STM32开发板。
三、学习步骤
第一步: 教程资料整体架构
第二步:学基础电路
学电路的时候注意不要全部教程看完!不要全部教程看完!不要全部教程看完!
因为模电你让我现在看也看不懂(太TM难了,单片机开发实际用的很少,很少。。),很多人从入门到放弃就是在这一步!!!
只需要知道电阻电容、二极管、三极管相关的作用就行。
如电阻串联分压功能、电阻并联分流功能,三极管的开关条件和基本电路。为后面学单片机做好铺垫。
第三步:学习C51单片机和C语言
C语言和51我基本是看郭老师的视频入门的,当然如果你觉得他的C讲的还差那么点意思,我还有更详细的。
第四步:学习用AD软件
一般公司会配一个硬件工程师和软件工程师,对单片机软件开发来说前期只需要学到原理图设计即可。
第四步:用C51做一个电子闹钟
闹钟功能:用数码管显示当前时间,系统掉电重启后从断电时时间开始计时,可以通过按键设置时间和1组闹钟时间,时间到蜂鸣器报警提醒。
这一步也非常重要,其重要性不亚于高考,一个项目能考验你思维,怎么将各个模块代码整合起来成为一个产品,完成后对你进步非常大。
第五步:学习STM8和STM32单片机(进阶)
对于STM8,很多人可能觉得没必要学,但其实实际产品开发用的还挺多的。特别是低功耗的产品,STM8L系列是真的香,我自己开发过好几款。
所以,要不要学自行选择,学也很简单。
STM32的还有几个截图,就不发了。。。
那STM32因为功能比较多,当你有把这个芯片吃透这个想法的时候,其实你已经掉坑了。很多学了其实到工作根本用不到,比如说CAN,USB这些,现在学就是浪费时间,等你用的时候又忘了。
我们前期只需要学必备的GPIO、时钟、中断、Timer、Usart、IIC(只用模拟)、SPI、DMA这些常用的就可以了。学到什么程度呢?我个人认为只要懂原理,能用起来就够了。是不是觉得瞬间轻松很多(嘤嘤嘤)!
毕竟行业变化太快,说不定明年ST的就被干了,所以对于单片机我一直提倡会用就行。
真正的核心是编程以及你程序的架构,和最新的领域,比如说物联网,然后再学设计硬件,做个全栈工程师,逼格和薪资都蹭蹭蹭往上涨。
四、高级程序架构进阶
前面这些都是网上收集的教程,因为已经讲的非常完善了,没必要重复去讲,而且自己去讲未必有他们讲的好,缺点就是都是入门或者中级的教程。
很多产品开发当中的问题并不能很好地解决,所以我在19年随便录了一套原创课程。
本课程内容源于我研发的多款物联网网关设备程序精华总结, 这些产品都稳定运行在我编写的一个轻量级系统架构上, 这个轻量级系统架构课程基于 Keil5+STM32F103 系列,并且适用于51单片机。
课程前半部分讲解 C 语言高级语法枚举、结构体、指针, 通过这些语法手把手教大家编写一套轻量级系统的内核, 其中涉及到链表、队列算法、回调函数、任务管理等功能。
教程后半部分是项目实战部分,把产品典型应用如 LED、按键、串口通讯移植到该系统内核结合成一个产品功能。这里的移植不是简单的点亮一个灯或者检测一个按键,又或者是串口收发一个字节数据。
而是从实际产品的需求和痛点出发,考虑功能可扩展性和移植性为前提条件
实现批量 LED 或者按键一些复杂的功能。
比如每个 LED 可以实现每隔 3 秒快闪 2 次代表信号正常,或者闪 2 次以后熄灭代表探测器学习成功指示。
比如每个按键可以检测短按、短按释放、长按、长按释放等。
比如串口收发使用独家队列算法处理,能够满足物联网大数据流传输情况不
丢一个字节的需求。
代码使用系统内核+应用层+硬件层模块化编程思维,不依赖于任何一款片,移植性好,代码复用性极强,产品开发只需要复制粘贴代码,大大缩短
产品开发周期。
并且经过 5 年以上,数十款上市产品批量验证,稳定放心! 最重要的是免废!免废!免废!
五、常用工具
除了这些视频教程以外,我还整理了相应的开发工具和开发板,以上每个单片机都对应一个开发板,每个模块都对应一个参考程序。