*这文章是微信公众号“无际单片机”的文章《单片机从入门到月入25K成长路线》的摘要。
一、新手级
先学基础电路、再学C语言,最后学51单片机。
1.基础电路学习要点
电阻、电容、电感、二极管、BJT晶体管(三极管)、MOS管、集成运放就是我们产品开发的时候最常用到的,别的暂时不用学了,作为单片机软件开发来说基本够用了。
三极管和MOS管大多用于开关作用,只要理解开关原理即可。
2.C语言学习要点
初学只要学会基本语法就可以了。
3.51单片机学习要点
熟悉单片机外设使用的原理,其实就是看数据手册正确地配置寄存器,把外设用起来,懂得这个就够了。
每个单片机串口使用方法不同,串口只是传输数据,核心的重点还是数据帧协议解析的方法。单片机所有外设例程都可以跟原厂或代理商获取。
4. 51单片机项目实战学习要点
上网找一些单片机项目练习一下。
这个阶段你应该会碰到一个瓶颈,实现功能没有思路,有思路后不知道代码怎么写。但也是有方法的。
-
方法1:如果第一次做这个功能,最好参考专业人员的思路和代码。
-
方法2: 要明白正确的功能实现流程。
第一步:一定要非常熟悉你要做什么功能,从以下两方面着手。
- 用到单片机那些外设?
- 硬件驱动的原理是什么?
下面举例:
功能需求1:通过IO口发送EV1527协议格式的无线数据。
用到哪些单片机外设:
ASK_SentData 我们接到了单片机IO口,从原理图分析得出只用到了单片机一个IO口ASK_SentData,,哪怕你看不懂中间电路图也无所谓,大不了你到时候问下和你设计这个图纸的硬件工程师。
硬件驱动的原理:
通过这个电路,可以把IO(ASK_SentData)输出的高低电平转换成433M的电磁波发射出去。
一定要先搞懂上面两个
第二步:分析逻辑功能
比如说EV1527协议格式的数据,就是建立在硬件基础上的逻辑功能。我们可以直接上网搜ev1527,慢慢去熟悉。
最后你会发现,原来就是一种时序标准,然后用单片机IO去模拟这个时序,比如说先发同步头,然后再发数据位,类似于红外码。
最后你再用代码去实现这种协议,这一步才是真正的难点。
所以,如果你做不出来,首先要定位好自己的问题在哪里,是硬件原理不会分析,还是EV1527协议没搞懂,还是代码不会实现。
找到问题就针对性去解决就好了,大多数人是代码不会实现,可以上网搜例程代码。
不管功能多复杂,都需要这样一步步拆解。
多抄代码,再理解作者解决的思路,再自己用这种思路不看例程独立写出来。
二、中级
1.通讯协议
这个不需要单独去学习,而是贯穿中级整个环节,一边学单片机一边学协议,最后用在项目中。
IIC、SPI、串口、CAN是标准的通信协议,最常用的是IIC、SPI、串口。
标准协议就是不管你用来和什么芯片传输数据,时序都是相同的。所以掌握常用的这几种标准通信协议,就基本掌握大多数功能芯片了。
2.单片机
- stm8外设使用:
stm8和51单片机使用起来不太一样,51需要自己配置寄存器使用外设,stm8则st官方有现成的库,直接调用库函数就能把外设开起来。我们要做的不是去记寄存器,而是去熟悉每个外设对应的一些库函数和参数。
开发项目的时候都是拿别人现成的例程熟悉后改改参数就行了。
- stm8项目实战
lora对面试是加分项。
3. 瓶颈期
主要体现在单片机外设都能用起来,整体项目代码一整合就不知道怎么下手了。
解决办法:
-
第一步:把项目需要用到的外设都先用起来
这一步很简单,常用的单片机芯片的外设例程,网上能轻易搜到,直接拿来用。如果是冷门的单片机,那可以跟原厂和代理商获取例程和技术支持。 -
第二步:实现各功能模块代码
举个例子:
-
第三步:整合各功能模块代码。
最后把这些代码整合起来,完成整个项目功能。
这个有两个很重要的技巧。
第一个是不要站在整个项目功能的角度去思考代码怎么写,一定要拆分功能,都需要用到哪些外设,每个外设分别实现什么功能模块。
第二个就是不要想好功能全部实现思路以后才开始动手写,正确的是一有点想法就动手去写去调试,然后根据调试结果去改程序,一个功能需要多次修改优化才能正确。
4. C语言进阶
- 枚举、 2.结构体、 3.指针、 4.回调函数
5. STM32单片机
STM32只需要学习常用外设就行了,以下这几个外设最常用。
学习的重点,只需要调用库函数把外设用起来,会修改相关参数就够了。每个外设的例程直接抄各种开发板。
6. STM32项目实战
7. 瓶颈期
问题1.单片机外设都能用起来,各功能模块代码不知道怎么实现。
解决方法:跟前面的一样。
- 第一步:一定要熟悉你要做什么功能。
1.用到单片机哪些外设?
2.硬件驱动的原理是什么?
功能案例1:按键检测功能
S1按键接到单片机的PB3引脚,所以需要把PB3设置成输入上拉模式。按键按下的时候,PB3就是一个低电平。这就是硬件工作原理。
物理按键按下的瞬间会有抖动,瞬间电平不稳定,可能在5ms以内。
最终按键按下,PB3引脚的电平应该就跟上图一样。
-
第二步:分析逻辑功能
检测按键有没有按下,就是读取PB3IO口的电平来分析波形电平变化,高电平代表没有按下,低电平代表按下了。 -
第三步:代码实现
分析好硬件原理和逻辑功能,最后就是实现代码了。刚开始可以学习模仿别人的代码。
8. 物联网无线通讯
三、 高级
1.数据结构及算法
例如队列、链表
2.编程思维
做一个有参考价值的项目成长最快。
- 模块化编程思维
- 面向对象编程思维
3.项目程序架构优化
4.觉悟期
单片机在产品上主要的作用就是数据采集,经过逻辑处理后,再输出控制信号。最常用的外设就是上图这些。
- 难点1:数据输入以后有些是需要去分析,比如说ADC采集电量,从单片机寄存器读到的是2个字节ADC值,需要经过数学计算才能得到电压值。
- 难点2:比如说输出频率可变、占空比可变的PWM去控制电机T型加速,S型加速。
要把大多数的时间学习完成产品的逻辑功能代码,逻辑功能代码考验的都是你编程思维和水平。
- RTOS
经历了上面1,2,3个阶段再去学习。