技术文档

单片机进阶 已经学过51单片机,如何进阶?我来教你

小编 2024-10-09 技术文档 23 0

已经学过51单片机,如何进阶?我来教你

大家好,我是小麦,最近有朋友问,已经学过51单片机了,如何进阶?

问题

事情是这样的,他在本科时期已经有相应的单片机开发经验,做过简单的项目,流水灯,倒计时,红绿灯,后面该如何提高呢?

首先我感觉得给进阶下一个定义,也就是明确也学习目标,怎么样才算进阶?我掌握哪些东西,可以独立完成哪些开发任务,才算达到了进阶的目的呢?

如果单纯是单片机开发的进阶?

我认为入门的阶段是这样的:

如果刚开始以51单片机起步,能基于开发板做简单的项目,比如搞个流水灯,再复杂点会做电子万年历(

DS1302+LCD1602 )就挺不错了;如果一开始就上STM32了,那么能在常用的STM32开发板上做一些功能,实现一些小的功能,或者能用CubeMX配置和初始化代码,然后做一些项目;

我认为的进阶是这样的,需要掌握这些;

首先我觉得硬件设计是必要的,能根据需求,进行硬件开发,进行原理图设计,PCB的Layout,绘制简单的双层PCB板;在进行硬件设计的过程中,可以试着抄一下已经开源的原理图,或者一般集成电路的DataSheet中都有相应的参考电路,根据这些参考电路进行原理图设计,后面可能会进行一些修改,在新的改版中进行修改即可。焊接技能,如果有最好了,没有的话,可以在PCB打样的时候找厂家进行贴片,配套服务还是很不错的,节省了时间成本;样板到了之后,就要动手对板子进行调试了,这时候会比较复杂,配套的技能包,比如示波器如何使用如何捕获波形如何使用万用表 ?有时候问题会比较玄乎,感觉可能在硬件上,又感觉在软件上,这里建议最好有一个方案验证板(至少保证硬件没问题);最后是编写安全可靠的代码,当然如果移植性好,代码框架好最好了;

之前也有朋友问我,自己想做一些DIY项目,软硬件都自己设计,该如何学习?他是搞互联网专业的,做嵌入式单纯是爱好,享受生命在于折腾的快乐而已;

硬件设计

新手建议使用Altium Designer,教程比较多,国产软件立创EDA也不错,开源的KiCad也可以使用,选一款就行,软件都大同小异,不要在纠结选择哪一款软件上而浪费时间,我个人建议使用Altium Designer,下面简称AD;

网上有很多免费的教程,可以去搜一下,看完教程一定要自己尝试着设计一个电路,可以简单一点,设计一个单片机的最小系统。

链接:https://pan.baidu.com/s/1yKfsttgIBeKKMK65m9H91g

提取码:pzsz

软件设计

单片机的编程开发是必须要掌握C语言的,汇编语言可以简单能读懂就行,调试的时候能简单看懂反汇编就行,所以要把主要精力放在C语言上,其实,初期C语言会常用的语法:

循环:for,while分支:if else,switch

就可以做很多事情了,但是后面还需要进阶,因为写出健壮高效,可复用,可移植的程序,只会这些还远远不够。

好了,我们学习了C语言是为了开发单片机的,是要直接对硬件进行操作,直接操作单片机上的外设寄存器,所以

这里以STM32举例,通常我们需要熟悉常用的接口和协议,和一些常用的外设,后面你会发现,不论是什么厂家的单片机,其实都大同小异;

比较常用的,我们会遇到GPIO,TIM定时器,systick,UART,I2C,SPI,CAN等;

一般来说,像STM32这种硬件平台,前期使用的人很多,网络资源非常丰富,很多时候会Ctrl+C和Ctrl+V就行了,另外ST提供了cubeMX这种工具,初始化根本不需要人为干预,但是有时候过于依赖工具,往往会被工具反噬,我就遇到过用cubeMX配置代码,遇到问题一脸懵逼,不知道如何下手的朋友。

当然我不是提倡大家穿着新鞋走老路,因为时代在发展,不能换一个寄存器一个寄存器去手撸,不过这时候,需要对底层有一个更全面的认识了,从单片机内核架构层面去理解,这需要学习其他的体系知识了,比如地址总线,数据总线,ARM的架构,外设是如何CPU进行数据交换的等等;

比如今年缺芯严重,不得不进行国产替代,不吹不黑,今年换了几款国产的MCU,资料不太完善,也没有太多参考的Demo,后来使用固件库的时候发现了几处BUG,最后还是得靠自己参考开发手册排查错误。

言归正传,我们要学会去官网找资料,有很多应用方案,芯片的开发手册UM( user manual),自己搭建开发环境,然后找到相应的芯片的固件库,这些都能自力更生,就非常不错了。

多提问,多交流

一个人,走得快,一群人,走得远;所以要多与人交流沟通,不耻下问,这里一定要注意提问的技巧;下面是我认为的几点;

尽量别问搜索引擎能解决的问题;尽量收集问题相关的信息;例如单片机而言,你不能问:为什么我的灯点不亮?或者你可以问:我的灯点不亮,测量了IO输出电平正常,但是没有亮?不要使用难懂、模糊化等词句,尽量简短,清晰,简明,扼要地描述你的问题;对的时间,问对的人,在别人全神贯注思考或搬砖的时候,就不要轻易打扰他人;明确你的提问目的是什么,如果你自己都不在自己要问什么,那还是先整理一下问题再问吧;

加入嵌入式技术交流群一起进步

最后

这篇文章里我简单地聊了一下如何进行单片机进阶,个人认为需要硬件设计和软件设计两部分;

硬件设计;软件设计;

如果详细展开,每个部分都有很多东西可以学习的,其实感觉最初能做简单的PCB,然后在这硬件基础上进行相应的软件开发,就已经达到了一个进阶的目的,后续需要的是不断在项目中进行提高,可以不断积累硬件方面的经验,另外还需要系统地学习基础知识,比如计算机系统(微机原理),C语言,数据结构等,软件部分可以多看一下开源的优秀项目,学习他们的设计思想,这样会提高得很快。

好了,这期先这样,时间比较赶,简单地说一下哈,我是小麦,我们下期再见。

单片机入门到高级进阶路径(附教程+工具)

一、先帮大家解答几个问题:

1. 单片机是什么?

答:单片机就是一个微型CPU,把程序烧录芯片里面,通过控制不同的外围电路实现不同产品的功能。

2. 学单片机编程对数学英语有要求吗?

答:数学会基本的加减乘除就行,英语会认单词a-z就行,很多外行人看到代码里一堆英文就头嗡嗡响,其实不然,只有少数语法是固定的,大多数英文都是工程师自己定义的,比如大神你也可以定义成DaShen(中文缩写)。

那很多人此时就开始质疑,当初这么辛苦学数学和英语到底是为毛?数学和英语不是单片机开发的门槛,但却决定你以后能达到的高度,如果你数学和英语不行,那么月薪20K可能就是你的巅峰了,如果很好,那么上限还有很大的空间。

3. 单片机好学吗?

答:看你怎么学,互联网的好处就是什么资源都能搜集到,相反的也容易迷惑世人,资料太多眼花缭乱让你无从下手,今天,我特意花了1周时间精心整理出一套让你快速学会达到月薪过万的视频教程资料,免费分享给大家。

4.学单片机编程对学历有要求吗?

看你学了编程要做什么了,如果只是爱好之类的目的,那没有太大要求的,但是随着学习的深入,会对你本身的学识能力有更高的要求的。学到后面会受到本身的学识和能力限制,可能就会非常吃力了,而学历低对这方面的理解就会产生很大的限制,甚至可能连基础代码都理解困难,所以,学到后面,提高自己还是必须的。

5. 从学完到月薪过万要多久?

答:我第一份工作是2011年,当时月薪只有1.8K,半年后5K,当时消费水平没现在这么高,房价也便宜,按目前的通货膨胀一线城市目前正常只要死磕1年就能月薪过万,如果能找个人带你会成长地更快,我去年带了12个学员,除了几个自己放弃的,上班的全部月入过万。

6.学到什么程度可以找到工作?

我看到网上很多老鸟说单片机C语言精通,能独立设计、调试、改进系统电路原理图,精通PCB绘制,常用二层、四层、六层PCB一定要熟练绘制。

然而并不是,单片机学到什么样可以找到工作,没有特定的标准。有一点可以明确,你把我的编程的项目学完,完全可以去找工作,这就是我以项目驱动学员学习的原因。

7.新手入门可以拿到多少工资,月薪过万需要多久呢

一般的从事2-3年月薪在15K以上在一线都很普遍,当然这个受挺多因素影响。足够努力的话,入门级一年左右能过万,如果是前期找人带,半年内也能过万的人,18年我带了一波学员,半年后有十几个过万的!因为很多人问我这个问题,为此我整理了一套让大家学会单片机达到月薪过万的视频教程干货,免费分享给大家

6. 我适合学单片机吗?

答:答:单片机很容易的,小白也可以学,C语言,电子电路基础,你只要找个培训的地方培训一下,一般一个月就能上手的。

抛开兴趣先不说,主要看你现在够不够穷。

7. 怎么学?

答:说了这么多终于到重点了,以前我就走了很多弯路,不知道该怎么入手去学习,后面慢慢研制出最骚学法,让你直接开始飙车。

首先,我们问问自己学这个来干嘛?当然是找工作赚钱!对,这个就是核心, 知道这个道理那我们马上开始实践,打开找工作的相关网站或APP,直接搜索职位:单片机工程师。

根据以上关键字给大家总结出一套系统学习流程和教程,达到一针见血的目的。

一.学习步骤

第1步: 教程资料整体架构

第2步:学基础电路

新手在学习数模电路的时候容易深挖知识,越学越懵逼,电路教程建议大家选择性学习,了解即可,千万别去细看!很少新手入门在学电路的时候就直接放弃单片机了!

实话告诉你,真正用于单片机开发的知识很少,要用产品思维去学习,产品用到啥你就学什么,切记!

至于要学什么,过来人告诉你只需要知道电阻电容、二极管、三极管相关的作用就行。如电阻串联分压功能、电阻并联分流功能,三极管的开关条件和基本电路。为后面学习单片机打下基础!

第3步:学习C51单片机和C语言

第4步:学习用AD软件

一般公司会配一个硬件工程师和软件工程师,对单片机软件开发来说前期只需要学到原理图设计即可。

第5步:学习STM8和STM32单片机(进阶)

对于STM8,很多人可能觉得没必要学,但其实实际产品开发用的还挺多的。特别是低功耗的产品,STM8L系列是真的香,我自己开发过好几款。

‎所以,要不要学自行选择,学也很简单

二.高级程序架构进阶

很多产品开发当中的问题并不能很好地解决,所以我在19年随便录了一套原创课程。

课程内容源于我研发的多款物联网网关设备程序精华总结, 这些产品都稳定运行在我编写的一个轻量级系统架构上, 这个轻量级系统架构课程基于 Keil5+STM32F103 系列,并且适用于51单片机。

‎课程前半部分讲解 C 语言高级语法枚举、结构体、指针, 通过这些语法手把手教大家编写一套轻量级系统的内核, 其中涉及到链表、队列算法、回调函数、任务管理等功能。

‎教程后半部分是项目实战部分,把产品典型应用如 LED、按键、串口通讯移植到该系统内核结合成一个产品功能。这里的移植不是简单的点亮一个灯或者检测一个按键,又或者是串口收发一个字节数据。

‎而是从实际产品的需求和痛点出发,考虑功能可扩展性和移植性为前提条件‎实现批量 LED 或者按键一些复杂的功能。

代码使用系统内核+应用层+硬件层模块化编程思维,不依赖于任何一款芯‎片,移植性好,代码复用性极强,产品开发只需要复制粘贴代码,大大缩短‎产品开发周期。

并且经过 5 年以上,数十款上市产品批量验证,稳定放心! 最重要的是免废!免废!免废!

三、常用工具

除了这些视频教程以外,我们华维导师整理了相应的开发工具和开发板,以上每个单片机都对应一个开发板,每个模块都对应一个参考程序。

终于码完了,十年纯经验原创总结,最后想说的,当你把我规划的学习路径都学一遍,你会感觉到单片机不再难学了,而且大多小伙伴越学越起劲。

当单片机完全依照你的逻辑思维和算法去执行指令,实现产品预期控制效果的时候,众多成就感会让你信心爆棚、夜以继日、废寝忘食的投入到单片机的世界里,扎根在行业,30k工资不是梦!

相关问答

电子信息工程大四,无基础自学ui设计会不会很难? 申请方

可以学,但是自学有点困难。所以个人建议你不要自学UI设计,原因是:本行就很好。你学的电子信息工程,为什么不搞单片机设计,学好了之后可以继续学习AR...

python主要用于什么开发?

为什么这么多人在学Python呢?很多小白都听说Python很火,简单易学,学起来很容易,学习周期短,可是为啥要学Python呢?,下面谈谈我对Python的感悟。在PC时代...应用...

学IT毕业后好找工作吗?

等2....比如1.可以学硬件:硬件可以分电源类,嵌入式硬件,RF射频类的硬件等,工作又可分为做开发设计,测试工程师,售后工程师等等2.做软件:可以分为嵌入式软件,P...

怎么才能练习编程的思想?

编程,是做控制类工程师都很头疼的事,尤其是一些刚刚入门的初学者,更是对程序无从下手,编出来的程序总是错误百出,易读性差。那么对于编程,怎么才能编出好的...编...

零基础该如何学习编程?

先自己定一个计划,然后找一套方案,计划自己定,方案可以参考别人怎么学的。用玩单片机(属于嵌入式,要与硬件接触)举个例子,学习怎么玩单片机一般都是要选择...关...

软件开发需要学哪些?

.移动应用开发。目前主流移动项目主要分为三类,即原生的iosapp,安卓原生app,和跨平台的h5项目。首先最基础的,ios开发你需要学习object-c或者swift使用xcod...

从教学角度讲清如何系统自学电子信息工程?谢谢?

作为一个学电子信息工程本科毕业的工科生,只能帮你到这了。改天把成绩单补发一个上来就知道课程情况了,先介绍一段。主干学科电子科学与技术,信息与通信工程...

如何成为一个嵌入式高手,嵌入式高手应该具备那些能力?

初级篇:必须具备的知识,c语言,汇编原理,计算机原理,51单片机原理,初级需要掌握c语言,熟悉c的语法,最基础的51单片机,能够写出一个定时器,能写出一些...初级...

有哪些比较基础的计算机书籍?

我就从一个算法初学者的角度来回答一下吧。推荐一下「算法与数据结构」从入门到进阶的书单。一.入门系列这些书籍通过图片、打比方等通俗易懂的方法来讲述,让...

自学计算机的话有哪些书单或者公开课可以推荐?

谢谢邀请,自学计算机首先要确定学习的目的,以及驱动力,这是本质俗话说没有驱动力的,一般来讲自学一门课程需要具备两种条件:1.强烈的兴趣,兴趣是第一老师...学...

猜你喜欢