谁能教教我怎么学单片机,怎么入门?
扫描二维码
随时随地手机看文章
文章较长,建议先收藏后再慢慢品尝,肯定会有收货的!
0. 写在最前
嵌入式学习路径是一个漫长而又有趣的过程,有趣是随着知识的积累感受的成就感,漫长是相对于 软件来说,入门还是有一定门槛的。
但一定不要一个人学习,因为上述学习路径长,难度渐渐加深,一个人总有不理解,晦涩难懂的地 方,你需要有人来探讨。注意是探讨,不是一味的请教别人,遇到问题自己先通过网络查询资料, 先学习和思考,再请教他人。因此强烈建议现实生活中找一两个同样方向的人一起学习,在学校就 比较方便了,加个单片机社团就有学习氛围了。
不要一个人学习,学习需要探讨,一个人学习容易放弃,一伙人则会相互激励。 不要一个人学习,学习需要探讨,一个人学习容易放弃,一伙人则会相互激励。 不要一个人学习,学习需要探讨,一个人学习容易放弃,一伙人则会相互激励。
大部分人的主要疑问:哪里可以找到一伙人?
学生党:问问学校电气, 机电学院里面有没有类似的工作室. 可以利用实验室资源最大化学习。
工程师:通过自己买开发板或者打样。交流的途径有:各类技术论坛,stm32这块,可以去正点原 子论坛, 野火论坛,也有对应微信公众号,可以找找有没有衍生出的微信群或者QQ群。linux这块, 100ask论坛,ZLG开发交流群. 各种交流群, 论坛, 只要用心去找, 一定能找到。
1. 基础课程
1.1 C语言
具体细节的知识点我这里就不详细的展开描述了,毕竟C语言的书和视频教程网上一大堆,学习资 源充分。但这里建议,C语言的基础还是要打扎实的,最简单的方法就是高中对付高考的方法:题海战术。 其实就是将C语言书籍后面的C习题,每一题的做一遍,自己动手敲一遍,想一遍,调试一遍。这样 将会极大的锻炼到你的基础编码能力。觉得C语言课本后面的习题太简单没有难度的,可以转战LeetCode。
1.2 数字电路
具体的细节说实话我也不记得了,但是最基本你要知道与或非门如何实现组合逻辑;组合逻辑的输 出反馈到输入作为下一次逻辑的输入就构成了时序电路,掌握时序逻辑的分析方法;
另外还需掌握 数据锁存器类的掉电数据不丢失的电路是什么样的原理。掌握这些概念,或许最开始仅仅是一知半 解,没有能将知识串起来,但是等到某一天你的知识体系成熟的时刻,你就豁然开朗了。
(1) 人类文明的进步,探索发现了PN结这种东西具有单向导电性,由此制作做了二极管。(理解PN结 单向导电原理)
(2) 由于二极管的单向导电性,由此又制作出了与或非门电路。(理解二极管如何构成与或非逻辑门) 人们做出了与或非逻辑后,发现世界上逻辑就是在此基础上复杂化而已。可用通过与或非门实现 加法器,移位器,编码器,译码器等各种想要实现的组合逻辑(掌握通过门电路设计组合逻辑的方法)
(3) 但现实生活中的逻辑往往不像组合逻辑这么单纯,输入转化为输出就结束了。往往上一次的输出 会影响到下一次处理。时序逻辑的出现就这么引入了,同时也带来了时钟的概念。(掌握组合逻辑 输出反馈为下一个时钟的输入得到时序电路的分析方法)
(4) 上面这些都是实时输出的,即输入的同时才能得到对应的输出,一旦输入没有,输出也就丢了。数据没有办法保存。于是人们又通过门电路制作出了可以锁存数据的RS触发器,PROM存储器。(掌握存储器的电路原理,如何通过总线时序访问)
准确理解了上述内容后,在后续学习微机原理的课程中,你会发现CPU的核心单元就是一个复杂点 的时序逻辑,而外设资源的话,都是些组合逻辑或时序逻辑包起来的黑盒子。
2. 入门课程
2.1 51单片机
讲道理,目前Proteus仿真软件确实很强大,使用它学习51的书籍,教程,示例十分的多,非常适 合学习。
但我还是建议真心学习的的话,去淘宝上淘个实物开发板和模块,学生党经济能力一般的 就上闲鱼,买个二手板子,包邮不超过50。
为什么建议买实物呢?
因为Proteus仿真毕竟是仿真, 对于很多硬件上的电压、信号时序等要求不像实际电路严谨,或者说不够严苛。就好比i2c时序不是 很符合从机的要求也能正常通信,但同样的程序放到实物单片机上就很有可能i2c通信不上。
这里再顺带手的介绍下51主要学习些什么?以及简单的学习步骤:
创建工程,学会如何编译,如何下载,理解sbit,sfr等51单片机特有的寄存器数据结构
假设使用的STC系列的单片,要学会去STC官网(stcmcu.com)下载官网资料,数据手册文档。官方下载工具、电路参考设计等资料。(从芯片厂商官网上获取学习的资源也是一项很重要的能 力),或许51这样的单片机资料太多,基本你想要做的东西,别人早就做过了,官网的资料早就变成千万的人的博客文章,但以后学习一些不是热门的处理器,官网的资料就显得很权威也很重要了。
学习51单片机的IO模块,使用IO点灯(流水灯)、控制数码管、控制8*8点阵模块、按键输入。
学习51单片机的中断模块,先从最简单的外部中断,使用中断的方式识别按键事件。
学习51单片机的定时器模块,实现1s定时,实现简单的数字秒表,实现IO口输出PWM波。
学习51单片机的串口模块,掌握串口电平标准,TTL、RS232、USB电平标准,掌握串口波形组成,掌握波特率,多主机通信等概念。
51基础模块学习完了后,就可以学习扩展模块了。可以使用IO口模拟各种各样的低速总线协议, 如i2c协议、spi协议还有一些特定模块自定义的协议,如DS18B20温度传感器的单总线协议,加深对协议的理解。
学习的过程可以通过买该协议对应的模块进行学习,尽量挑网上教程多的模块 买,如i2c就买eeprom和mpu6050,spi就买flash。
学到这里,就可以做点小东西了,比如说旋转LED,循迹小车,遥控小车。最开始就跟着网上的 教程学习,学习的第一步总是从模仿开始的。先模仿,再理解,再改进,最后吸收转化为自己的能力。
建议上述过程多花点时间,做到绝大部分地方都能搞懂,都能够理解。毕竟是基础,后面的学习是 在其上进行扩展,基础学的好,后面有着触类旁通的功效。
2.2 微机原理(可选)
一般的小伙伴这个时候就会开始上手STM32了,但是我建议在上手STM32之前,先看看8086处理 器的设计,即学习下《微机原理》这门课,我觉得还是很有必要的。
微机原理,可以大概的了解的,CPU如何执行指令,如何通过地址总线、数据总线、控制总线访问内部寄存器,外部存储器, 中断如何被响应,以及中断的具体内部处理过程。
2.3 STM32
接下来可以安安心心的学习STM32了,这个就比51要复杂了。但是不慌,本质和51是一样的东 西,只是功能模块变复杂了,模块数量变多了。但是万变不离其宗,本质上模块无非就是组合逻辑 或者是时序逻辑电路,而模块寄存器就是该逻辑电路的输入。
我们只要看懂模块框图,将框图中的 配置和相应的寄存器对应上,学习就是一样的。
stm32单片机,推荐购买野火或者正点原子的开发板学习,并非打广告,而是教程确实讲的好。这个跟着视频一个一个模块学习就可以了。或者以作品为导向,做个平衡小车,OLED时钟等小玩意。
2.4 数据结构