问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

谁能教教我怎么学单片机,先学什么,怎么入门?

发布网友 发布时间:2023-09-15 08:59

我来回答

1个回答

热心网友 时间:2023-12-02 06:09

先学基础课程,从这一方面入门。

嵌入式学习路径是一个漫长而又有趣的过程,有趣是随着知识的积累感受的成就感,漫长是相对于软件来说,入门还是有一定门槛的。

但一定不要一个人学习,因为上述学习路径长,难度渐渐加深,一个人总有不理解,晦涩难懂的地方,你需要有人来探讨。注意是探讨,不是一味的请教别人,遇到问题自己先通过网络查询资料,先学习和思考,再请教他人。因此强烈建议现实生活中找一两个同样方向的人一起学习,在学校就比较方便了,加个单片机社团就有学习氛围了。

1、基础课程

1.1C语言

具体细节的知识点我这里就不详细的展开描述了,毕竟C语言的书和视频教程网上一大堆,学习资源充分。

但这里建议,C语言的基础还是要打扎实的,最简单的方法就是高中对付高考的方法:题海战术。其实就是将C语言书籍后面的C习题,每一题的做一遍,自己动手敲一遍,想一遍,调试一遍。这样将会极大的锻炼到你的基础编码能力。觉得C语言课本后面的习题太简单没有难度的,可以转战LeetCode。

1.2数字电路

具体的细节说实话我也不记得了,但是最基本你要知道与或非门如何实现组合逻辑;组合逻辑的输出反馈到输入作为下一次逻辑的输入就构成了时序电路,掌握时序逻辑的分析方法;另外还需掌握数据锁存器类的掉电数据不丢失的电路是什么样的原理。

个人觉得,学习数电主要是要理解到下面这几个点:人类文明的进步,探索发现了PN结这种东西具有单向导电性,由此制作做了二极管。

由于二极管的单向导电性,由此又制作出了与或非门电路。(理解二极管如何构成与或非逻辑门)人们做出了与或非逻辑后,发现世界上逻辑就是在此基础上复杂化而已。可用通过与或非门实现加法器,移位器,编码器,译码器等各种想要实现的组合逻辑(掌握通过门电路设计组合逻辑的方法)。

但现实生活中的逻辑往往不像组合逻辑这么单纯,输入转化为输出就结束了。往往上一次的输出会影响到下一次处理。时序逻辑的出现就这么引入了,同时也带来了时钟的概念。(掌握组合逻辑输出反馈为下一个时钟的输入得到时序电路的分析方法)。

上面这些都是实时输出的,即输入的同时才能得到对应的输出,一旦输入没有,输出也就丢了。数据没有办法保存。于是人们又通过门电路制作出了可以锁存数据的RS触发器,PROM存储器。(掌握存储器的电路原理,如何通过总线时序访问)。

准确理解了上述内容后,在后续学习微机原理的课程中,你会发现CPU的核心单元就是一个复杂点的时序逻辑,而外设资源的话,都是些组合逻辑或时序逻辑包起来的黑盒子。

1.3代码托管

Git工具和GitHub使用。将代码保留一份到Github上,方便以后复用。慢慢你会发现,自己整理的代码就是最好的笔记。git教程推荐廖雪峰的git教程,简单易懂。国内的话,可以考虑gitee。

给点小建议,对于复杂的逻辑,代码笔记中要有必要的注释。代码风格最好做到统一规范,写代码要像雷军一样自信,"我写的代码像诗一样优雅"。代码风格格式化工具,很多编辑器自带代码格式化功能,如VSCode。也可以使用CoolFormat手动进行格式化。

2、入门课程

2.1单片机

讲道理,目前Proteus仿真软件确实很强大,使用它学习51的书籍,教程,示例十分的多,非常适合学习。但我还是建议真心学习的话,去淘宝上淘个实物开发板和模块,学生党经济能力一般的就上闲鱼,买个二手板子,包邮不超过50。

为什么建议买实物呢?因为Proteus仿真毕竟是仿真,对于很多硬件上的电压、信号时序等要求不像实际电路严谨,或者说不够严苛。就好比i2c时序不是很符合从机的要求也能正常通信,但同样的程序放到实物单片机上就很有可能i2c通信不上。

这里再顺带手的介绍下51主要学习些什么?以及简单的学习步骤:

创建工程,学会如何编译,如何下载,理解sbit,sfr等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.3STM32

接下来可以安安心心的学习STM32了,这个就比51要复杂了。但是不慌,本质和51是一样的东西,只是功能模块变复杂了,模块数量变多了。但是万变不离其宗,本质上模块无非就是组合逻辑或者是时序逻辑电路,而模块寄存器就是该逻辑电路的输入。

2.4数据结构&RTOS

裸机程序做完了就可以学学rtos小型的嵌入式操作系统了,野火和正点原子都有出书籍和视频教程的。学习RTOS之前,有需要的同学可以自行考虑下要不要学一下数据结构,不一定要学的很深,最起码队列和栈结构要了解,最好的话自己用c实现一遍。

2.5PCB绘制&DIY小作品

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

STM32功能模块比较多,如果全部都学的话自然是最好的,但是怕单单是学习慢慢的会觉得无趣(看视频教程、分析源码、自己实现一遍、接着开始下一个知识点也是上述三个步骤),久了怕人会坚持不下来,渐渐的消磨了学习的*。因此,学习STM32我建议以项目为导向,当然一些基本的GPIO、中断、i2c、LCD、Touch、ADC、TIMER等外设还是要先熟悉的。

既然以作品为导向,那自然也就需要自己打板了。打板子的,最近嘉立创在搞活动,真的好便宜呀,5元5片,全国包邮。打板的话,需要学习下AltiumDesigner软件,从此开始制作属于自己的小玩意。AD的资料网上也很多。我是看的郭天祥的AD6.9视频入门的。目前国产的立创EDA出了专业版,画画简单的电路板还是没有什么问题的。

3、提高课程(Linux)

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

3.1Ubuntu入门

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

Linux基本操作,常用命令。

LinuxC编程,能够使用gcc进行编译。

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

Shell脚本。

感兴趣入门下Python脚本。

3.2Linux驱动

有了Linux使用基础,开始学习处理器,s3c2440处理器,购买开发板学习,推荐韦东山视频,跟着韦东山走,一期,二期,三期,毕业班视频。

主要的学习内容有:

裸机驱动,就理解为单片机就好了,性质是一样的,只不过这里不像51和STM32使用IDE进行编译和链接,而是自己使用交叉编译工具配合Makefile手动的编译链接。uboot入门,学习通用的引导流程,熟悉ubootcmd,bootcmd,环境变量,flash烧写等。

kernel驱动,这里的kernel驱动和裸机驱动还是很大区别的,单片机驱动相对来说说仅仅只是看懂SOC手册,配置寄存器,但是内核驱动往往为了兼容大量的SOC主控,大量的外设厂商,存在一层软件抽象。在内核中,我们称之为子系统。子系统有很多内容,选自己工作相关的仔细研究即可,切勿贪多嚼不烂。

3.3Linux驱动移植

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

uboot移植,kernel移植。

4、提高课程(软件)

有了一定的嵌入式基础后,后面在实际工作中,你会发现,很多硬件强相关的驱动代码都是由物料供应商提供。举个例子,我之前在上海做手机开发,高通SOC方案驱动子系统非常的完整,有高通的一套标准在里面,而对应的手机物料供应商,比如LCD(屏幕)、TP(触摸)、Sensor(摄像头)、指纹、各类传感器。

4.1数据结构

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

4.2设计模式

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

5、积累与思考

5.1知识体系库

慢慢的,当我进入一个细分的领域,音视频开发领域,就会发现,很多时候,不仅仅是熟练通用开发能力,即我上面提到的驱动开发、软件业务开发这些技能。很多业务依赖于你要懂专业知识可能得心应手,不然连代码中的数据结构为什么要如此设计都搞不明白。

因此但进入专业领域,可以尝试慢慢的将平时积累的知识组织起来,慢慢的积累,最开始可能自己也是一知半解,博客抄一抄,官方协议文档翻译翻译。但是知识就是这样的,最开始没有成体系之前,一知半解很正常,一旦到了一定的量,熟悉后,一旦知识串起来后,那种的融汇贯通的感觉是极其美妙的。

因此,建议平时学习的过程中,养成做笔记的好习惯。想要深入研究那一方面后,可以不断的积累学习,进行系统的整理,慢慢的等待融会贯通的那一日到来就可。我目前使用的语雀知识库,私人服务器搭建的是showdoc文档库。

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

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

再参考我之前提到的,自己曾今写过的代码就是最好的笔记,我们可以不断的完善自己曾今写过的代码,慢慢的将独立功能的代码模块单独出来。方便自己以后在不同的项目复用。

复用的话,毕竟好记性不如烂笔头,代码核心思想,一个月两个月还能记得,时间久点别说核心思想了,可能连使用都不太记得怎么用了。这个时候就意识到了,代码配套文档介绍的重要性。毕竟在代码刚开发完成的时候,趁着思路清晰的时候,把文档写掉,注意事项记录的清清楚楚,明明白白后,后面复用将会方便很多。

谁能教教我怎么学单片机,先学什么,怎么入门?

先学基础课程,从这一方面入门。 嵌入式学习路径是一个漫长而又有趣的过程,有趣是随着知识的积累感受的成就感,漫长是相对于软件来说,入门还是有一定门槛的。 但一定不要一个人学习,因为上述学习路径长,难度渐渐加深,一个人总有不理解,晦涩难懂的地方,你需要有人来探讨。注意是探讨,不是一味的请教别人,遇到问题自...

刚开始学单片机的第一步要干嘛?或者谈谈初学单片机应该怎么做。

学单片机要有数电模电、计算机原理、汇编或者C等编程语言,等等这些基础学科的知识。如果您不是做硬件电路的话,重点在编程语言,其它学科可以弱化但一定要知道一些基础的东西。初学单片机要选择一些广泛使用的单片机,如51,avr,stm32等等,冷门单片机对初学者来说完全没得搞。真正上手的第一步,要写一个...

如何自学单片机编程

首先要选好兵器。找一款功能多,教程详细,技术支持好的单片机开发板,吴鉴鹰单片机开发板是主流,适合学习。软件建议用Keil c51,硬件要有pc机和开发板,开发板要求有流水灯、数码管、独立按键、矩阵键盘、ad转换、液晶屏、蜂鸣器,这就差不多了。软件网上有的是,下一个,还是免费的。pc机没有可以先用...

大家好,我是一个单片机知识方面的爱好者,想问大家学习单片机难吗...

首先,熟悉基本元器件的应用和特性,比如:电阻、电容、电感、二极管、三极管。然后是单片机应用,这就包括单片机的硬件知识和软件编程,相信你都了解一些。刚开始可以做一些仿真,比如protues仿真,但是如果有条件,建议自己做一些电路板,练一练焊接技术,学一学制板过程,这样能够学习解决问题的方法,而且当...

如何学习单片机

学习单片机最终要的是当然是练,我所说的学习跟课堂上的单片机学习不同,我以前也看过一些单片机教材,有些教材讲的是单片机的工作原理和内部结构,这些东西对于我们暂时并不需要,等以后开课的时候在学习好了。现在要学习的是暂时抛开内部结构原理不谈,如何能用单片机写一些简单的小程序,是从实用性的角度出发,网上有一...

零基础学单片机怎么学?零基础能学单片机吗?

尽量多抽出一些时间来练习,首先应该学会怎么用调试软件,然后从最简单的流水灯实验做,经过一段时间的联系,你一定会会发现单片机是多么迷人,当你编写的程序按你的意愿实现时你比做什么事都开心,你会上瘾的,真的。做电子类的人真的会上瘾。然后让数码管亮起来,这两项会了后,你已经不能自拔了,...

没C语言基础怎么学51单片机?

先学简单的C语言基础,再学51单片机会比较容易入门,因为现在所有8/16/32位(51系列,MSP430系列,ARM系列)都是使用C语言。一、51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8...

单片机入门,急求高手大虾指教!!!

先说说单片机,我们现在用的比较多的是8051单片机,它的资料比较多,用的人也较多,市场也很大,51单片机内部结构比较简单,非常适合初学者学习,建议初学者将51单片机做为入门级芯片。单片机属于硬件,我强烈不推荐大家使用单片机仿真软件来学习单片机,也可以肯定的告诉大家,使用仿真软件是学不会单片机的,硬件只有把它摆在你的...

拿到单片机开发板后,该如何开始学习?

不过郭天祥《十天学会单片机》教程到时可以学习学习。建议入门的时候用C语言来编程,或者16位的AVR,然后学PIC,真正要学的:电脑一台。对于初学者,如学号51单片机,而且不占用多少内存空间,看资料,DSP,非常好用、如果愿意下功夫、软件,就去学汇编,还可以装一个 mutism仿真软件。此外。 Keil C51 3版本的编译环境,最后...

单片机的学习方法

通过视频让我知道了该怎样学习单片机,学习单片机,要从实验入手,先熟悉单片机再说,开发语言开始使用的是C语言比汇编更好理解。第二步(进阶的过程):有了第一步的基础之后,接下来的便是进阶的过程,买了一款51单片机开发板,然后就开始了我的学习之旅,每次听课的时候,按照上面的实验,以及课堂上面...

单片机初学者看什么书 单片机编程入门教程 单片机能实现什么 单片机能做什么 单片机能控制什么 单片机使能是什么意思 单片机怎么用 单片机自学教程 单片机入门基础知识
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电脑开机时怎么进入安全模式 广东医学院大一新生宿舍怎么样,是不是都是学校分配,不能自己选择_百度... 2012高考理科 考到545 想知道怎么填志愿 我的分数545可以报广东医学院边d专业?我系广东考生 高考排名。高考报志愿。广东医学院。 今年545分补录广东医学院还有机会吗? 徒步穿什么鞋 夫妻之间感情再不好都不要去互相伤害 平时可以穿登山鞋吗 大学生都爱去哪些网站? 王者荣耀S28猴子身法怎么玩? 我的苹果5s在爱思助手上下的东西都平空消失 包头约会去哪里好 江苏医保如何异地就医 电池片激光切片边缘会发黑么 《烈酒煮青梅》完整版免费小说资源,哪位老哥给一下 我想去香港买一台ThinkPad T500 有一些问题 为什么点关闭ssid了,人手机还是能连到我WLAN 人鱼的旋律全集 日语版.. 闪击9td值得买吗 从瑞德摩尔到兰州交通大学站怎么坐公交车,最快需要 从安宁科教城到徐家山公园怎么坐公交车,最快需要多久 城关区去兰州东方中学座18路车在哪站下车 从西关十字到安宁西路173号市政工程管理所坐几路车 圆弧周长怎么算,弧高0.679,弦长2.66,圆心角107.2°,公式用什么, 晚安心语短句 淡定是人生涵养,纯真是性格使然 过了疯狂的年纪,但有颗悸动的心怎么来形容贴切表达说说 饭前饭后外文缩写是什么? 弧高的计算公式 弦长5.006米,半径50米,求弧高? 悸动的心 Restless剧情介绍 《从士兵突击开始的人生》txt下载在线阅读全文,求好心人帮忙找找呀... 孩子一样的熊人物介绍 韩语woo li ne qing gu什么意思 ...半按快门合焦后,出现一下红色框,之后不出现绿色框呢?但是依然能照相... 卡西欧Z70按下快门一半后取景框不变绿,所取景很模糊,以前用都好好的... ...以前半按快门,会有对焦框加绿色的点,现在突然没有了,拍出来的照片都... 因和且可以一起使用吗 扫地机器人适用哪些地板 实木地板适合扫地机吗? 木地板适合用吸尘器还是扫地机? 如何查询苹果序列号是否正常呢 牧区网络用的人多会影响网速吗 WOW救人带心形状的那个宏怎么做? 守婚如玉 赵明齐判刑是哪一集 母羊的羊水破了一晚上的羊一夜掉了就是不开子宫 羊下羔先下羊羔还是先下水泡 步步高航星店生意怎么样 金闪闪在fate里是怎么死哒 将1至7的7个数分别填入图中的○中,使每个正方形上的5个圆圈内所填的数... 将1、2、3、4、5、6、7、8、9九个数填在下面的圆圈里,使每条线上五个...