锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

怎么学单片机,怎么入门

时间:2023-11-14 05:37:04 二极管后面带tp

大家好,我是520.

文章比较长,建议先收藏再慢慢品尝,肯定会有收货!

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等1单片机独特的寄存器数据结构

假设使用的STC一系列单片,要学会去STC官网(stcmcu.com)下载官网信息,数据手册文档。官方下载工具、电路参考设计等资料。(从芯片厂商官网获取学习资源也很重要 力),也许像51这样的单片机信息太多了,基本上你想做的事情,其他人已经做了,官方网站信息已经成为数百万人的博客文章,但在未来学习一些不受欢迎的处理器,官方网站信息非常权威和重要。

学习51单片机IO模块,使用IO点灯(流水灯)控制数码管,控制8*8点阵模块,按键输入。

学习51单片机的中断模块,首先从最简单的外部中断,使用中断来识别关键事件。

学习51单片机定时器模块,实现1s定时,实现简单的数字秒表,实现IO口输出PWM波。

学习51单片机串口模块,掌握串口电平标准,TTL、RS232、USB掌握串口波形成、波特率、多主机通信等概念的电平标准。

51基础模块学习后,可以学习扩展模块。IO口模拟各种低速总线协议, 如i2c协议、spi还有一些具体模块自定义的协议,如DS18B温度传感器单总线协议,加深对协议的理解。

学习过程可以通过购买协议对应的模块来学习,并尝试选择更多的在线教程模块 买,如i2c就买eeprom和mpu6050,spi就买flash。

如果你在这里学习,你可以做一些小事,比如旋转LED,跟踪车,遥控车。一开始就跟着网上。 学习教程的第一步总是从模仿开始。先模仿,再理解,再改进,最后吸收转化为自己的能力。

建议上述过程多花点时间,让大部分地方都能理解和理解。毕竟是基础,以后的学习是 扩展,基础学好,后面有触类旁通的效果。

2.2微机原理(可选)

这个时候普通的朋友会开始上手STM32,但我建议开始STM32前,先看8086处理 我认为有必要学习微机原理。

可以大致了解微机原理,CPU如何执行指令,如何通过地址总线、数据总线、控制总线访问内部寄存器、外部存储器, 如何响应中断,以及中断的具体内部处理过程。

2.3 STM32

接下来,你可以安心学习STM32.这比51更复杂。但不要惊慌,本质和51是一样的东西 西方,只是功能模块变得复杂,模块数量变得更多。然而,所有的变化都离不开它的家族。本质上,模块只不过是组合逻辑 或时序逻辑电路,模块寄存器是该逻辑电路的输入。

我们只需要理解模块框图和框图 学习与相应的寄存器配置相同。

stm32单片机,建议购买野火或点原子开发板学习,不是广告,而是教程真的很好。这可以通过视频一个接一个地学习。或者以工作为导向,做一辆平衡的汽车,OLED小玩意小玩意。

2.4 数据结构 & RTOS

裸机程序完成后,就可以学习了rtos小型嵌入式操作系统,野火和正点原子都有书籍和视频教程。

学习RTOS以前,有需要的同学可以自己考虑是否要学习数据结构,不一定要学得很深, 至少要了解队列和栈结构,最好用c来实现。

2.5 PCB 绘制 & DIY 小作品

推荐国产单片机这种简单的小板。 LCEDA。Altium Designer 但是收费软件更专业, 替代方案为 KiCAD。

STM32 有很多功能模块。如果你全部学习,那自然是最好的,但我担心学习会很无聊 (看视频教程、分析源码、自己实现一遍、接着开始下一个知识点也是上述三个步骤),久了怕人会坚持不下来,渐渐的消磨了学习的激情。

因此,学习STM32当然,我建议以项目为导向,一些基本的 GPIO、中断、i2c、LCD、Touch、ADC、TIMER要先熟悉外设。

STM32能做的就是 更多。你可以在知乎或者各大电子论坛上搜索有趣的电子小东西,选择自己感兴趣的。

比如我更感兴趣的是:

1. 可调电子表

2. 自平衡小车

3. 四旋翼飞机

4. 旋转LED

5. 红外遥控 复制器

6. 自制STM32仿真器

7. NES游戏机 等等等。

既然以作品为导向,自然需要自己打板。

最近嘉立创在搞活动,真的很便宜,5元5片,全国包邮。如果你打板,你需要学习 Altium Designer 从那时起,软件开始制作自己的小玩意。

AD网上也有很多资料。我看郭天祥AD6.9视频介绍。目前国产立创 EDA 出了专业版,画画简单的电路板还是没有什么问题的。

DIY 的话,Arduino 也可以考虑,有 C 基础就可以轻松上手。

3. 提高课程(Linux) 

单片机学的差不多,就可以开始嵌入式 Linux 学习了,仔细细分的话可以细分为嵌入式 Liunx 驱动 开发和嵌入式 Linux 应用开发。 

3.1 Ubuntu 入门 

安装Ubuntu,学习Linux基础使用,我是看慕课网的Linux达人养成计划系列视频入门的,重点学 习下以下内容:

Linux 基本操作,常用命令 

Linux C 编程,能够使用 gcc 进行编译 

Makefile,推荐陈浩 《跟我一起写 Makefile》 

Shell 脚本 

感兴趣入门下Python脚本 

3.2 Linux 驱动

主要的学习内容有:

裸机驱动,就理解为单片机就好了,性质是一样的,只不过这里不像 51 和 STM32 使用 IDE 进 行编译和链接,而是自己使用交叉编译工具配合 Makefile 手动的编译链接。 

uboot 入门,学习通用的引导流程,熟悉 uboot cmd,bootcmd,环境变量,flash 烧写等。

kernel 驱动,这里的 kernel 驱动和裸机驱动还是很大区别的,单片机驱动相对来说说仅仅只是 看懂 SOC 手册,配置寄存器,但是内核驱动往往为了兼容大量的 SOC 主控,大量的外设厂商, 存在一层软件抽象。

在内核中,我们称之为子系统。子系统有很多内容,选自己工作相关的仔细 研究即可,切勿贪多嚼不烂。

3.3 Linux 驱动移植 

rootfs 制作,基于 busybox 制作内核文件系统。 

uboot 移植,kernel 移植。 

4. 提高课程(软件) 

有了一定的嵌入式基础后,后面在实际工作中,你会发现,很多硬件强相关的驱动代码都是由物料 供应商提供。举个例子,我之前在上海做手机开发,高通 SOC 方案驱动子系统非常的完整,有高 通的一套标准在里面,而对应的手机物料供应商,比如LCD(屏幕)、TP(触摸)、Sensor(摄像头)、指 纹、各类传感器,在出售物料的同时,会根据你的 SOC 主控方案直接提供可用的驱动程序(按照高 通规则都匹配好了,MTK也是一样),很多硬件驱动代码,供应商全部帮你做好了。我们更多的是开 发业务代码。 

4.1 数据结构 

基本的队列、链表、环形缓冲区这些是基本功了,建议自己实现一遍。不要忘了我之前提到的,自 己曾今写过的代码就是最好的笔记。gitee 和 github 记得保留起来。这些代码会经常使用到,在不 断的使用中,慢慢的修复缺陷,完善代码的鲁棒性。 

4.2 设计模式 

推荐 《Head First》,我看的是 Java 语言的版本。可以初步学习下 Java 语法再看。代码设计思想 不受语言限制的,好书值得一看。

5. 积累与思考 

5.1 知识体系库

慢慢的,当我进入一个细分的领域,音视频开发领域,就会发现,很多时候,不仅仅是熟练通用开发能力,即我上面提到的驱动开发、软件业务开发这些技能。

很多业务依赖于你要懂专业知识可能得心应手,不然连代码中的数据结构为什么要如此设计都搞不明白。因此但进入专业领域,可以尝试慢慢的将平时积累的知识组织起来,慢慢的积累,最开始可能自己 也是一知半解,博客抄一抄,官方协议文档翻译翻译。

但是知识就是这样的,最开始没有成体系之 前,一知半解很正常,一旦到了一定的量,熟悉后,一旦知识串起来后,那种的融汇贯通的感觉是 极其美妙的。因此,建议平时学习的过程中,养成做笔记的好习惯。

想要深入研究那一方面后,可以不断的积累 学习,进行系统的整理,慢慢的等待融会贯通的那一日到来就可。

我目前使用的语雀知识库,私人服务器搭建的是 showdoc 文档库。

5.2 文档规范 & 代码模块化(组件化) 

不难发现,很多开源软件都配有详细的文档,从最简单的介绍这个软件是什么,有什么用,该怎么用,到注意事项,都写得一清二楚。甚至有的开源软件还会介绍内部的实现细节。

复用的话,毕竟好记性不如烂笔头,代码核心思想,一个月两个月还能记得,时间久点别说核心思 想了,可能连使用都不太记得怎么用了。这个时候就意识到了,代码配套文档介绍的重要性。

毕竟 在代码刚开发完成的时候,趁着思路清晰的时候,把文档写掉,注意事项记录的清清楚楚,明明白白后,后面复用将会方便很多。

【下方资料资料】:

(stm32 温湿度采集)

(stm32 USART串口应用)

(stm32直流电机驱动)

一节课带你彻底搞懂NB-IoT开发

STM32单片机之GPIO开发

一节课了解WiFi基本原理

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章