初学者如何快速上手单片机
(此处已添加圈子卡片,请到今日头条客户端查看)单片机的学习者有初入职场的菜鸟工程师,有渴求知识的在校大学生,也有迫于项目需求的电子工程师。迫于项目需求转换开发平台的电子工程师往往具备其他类型单片机的使用经验,学习新类型的单片机并不会有太大的障碍,但是菜鸟工程师和在校大学生就是真正的“初学者”。初学者在开始学习单片机的时候都有一个相同的问题那就是“怎么才能尽快地学会使用单片机?”
菜鸟工程师由于身边有“老兵”的指导,加之有目的明确的工程项目的驱动,在单片机学习上并不会走太多的弯路。在校大学生在学习之初,首先要面对的就是“迷茫”,空有一腔热情,却不知如何下手。
在学习单片机之初应当有一些基础知识准备。单片机是电子技术发展到一定程度才出现的产物,本身就是众多电子技术的结晶,对其中一些知识的了解是学习单片机所必需的,所以网络上经常出现的“零基础”学习单片机是不客观的说法。在学习单片机之初,应该具备基础的电路知识,主要包括基本的数字电路和模拟电路知识。比如,在学习单片机的I/O口时,就会涉及数字电路知识中I/O口电平、施密特触发器等内容;在学习单片机的ADC通道时肯定会涉及信号带宽等模拟电路方面的内容。在学习单片机之前不苛求必须有深厚的电路功底,但是常识性的电路知识是不可或缺的。
学习单片机的很大一部分工作是学习单片机的编程,简单地讲就是编写代码控制单片机的工作流程。目前,绝大部分的单片机开发工具都能够支持C语言,并作为单片机的开发语言,也有人推崇使用汇编语言作为单片机的开发语言。不可否认使用汇编语言可以获得更高的执行效率和代码密度,但是汇编语言在开发效率和代码的可读性上比C语言要差。事实上,C语言编译器效率已经提高到了相当高的水平了,C语言编写的代码编译后在执行效率和代码密度上跟汇编语言相比并没有太大的差距,C语言早就成为单片机开发的绝对主力。所以初学者掌握基本的C语言知识即可,无须在开发语言的抉择上花费太多的时间。
准备的最后一点就是学会使用最基本的实验设备,这里列举一般的实验室都能提供的4种设备:万用表、稳压电源、示波器和信号发生器。这些设备的熟练使用将对学习中遇到的调试(bebug)有非常大的帮助。
有了以上的准备,就可以正式开始单片机的学习了。初学者最好选用一款性能稳定,范例丰富并且推广较好的单片机作为学习目标。性能稳定,避免在学习过程中遇到由于芯片本身的设计失当导致的一些无法解决的问题;范例丰富,大量的示例供用户阅读和借鉴,更容易理解单片机的操作机理;推广较好,意味着学习的受众面较广,有很好的学习氛围和学习资料,并且有容易获得的学习开发板。从这3点出发,MSP430系列单片机就是一个很好的选择。
首先,该单片机目前在电子行业已经使用多年,一直都作为低功耗单片机的标杆产品;其次,该单片机所有的型号都具备官方范例代码,而且有较多的参考案例;最后,MSP430单片机在中国通过大学计划推广了多年,大量的大学生使用这款单片机完成实验、参加竞赛,积累了很多的书籍教材和网络资料,开发板类型也很丰富,TI提供售价约为几十元人民币的LaunchPad开发板。单片机都有相似性,学会使用一款单片机,再过渡到另一款就不太困难了。
学习单片机可以从学习单片机的开发环境开始,当前的单片机都有自己对应的集成开发环境(IDE,Integrated Development Environment),并有免费版本供初学者下载使用。集成开发环境可以完成代码的编辑、编译和调试过程,使用起来比较方便。TI推出的CCS5还可以完成MSP430单片机的图形化配置。对于初学者,集成开发环境的基本使用没有障碍,但是特别要注意的是开发环境中对应的开发工程的属性配置。
熟悉开发环境的开发流程后,就可按照引导教材或者用户手册,逐一了解单片机的各功能模块的特性并完成对应的功能模块的实验操作。逐个模块熟悉下来,基本上一款单片机即可学会使用。这样一个流程下来,能够掌握单片机的基本操作。希望熟练掌握则需要进一步通过完成更为复杂的实验或者项目来锻炼。
前面的介绍中也强调了实验的重要性,实际上大多数学习单片机的初学者都会陷入一个误区,过度的重视实验,把绝大部分精力放在调试上,却忽视了单片机使用原理的学习。这种情况在大学生身上非常明显,很多情况下还没有能够理解单片机功能模块或者外设的使用原理和方法,就急切的展开实验。大多数情况下,编写的代码还存在缺陷甚至错误,无法达到预期的效果,就进入到了无尽的盲目修改和调试中。最典型的情况就是刚开始接触一个外设,连工作方式和寄存器的功能还没有弄清楚,就开始粘贴示例代码,并编译下载。反复调试不能成功,心态就开始变的浮躁,进而厌恶单片机。
如果一直调试未果,学习热情被消耗殆尽,对单片机的使用产生恐惧感,最终就会放弃单片机的学习。细究这种情况的原因,其实就是急功近利的心态在作祟。初学者都急切的希望自己的代码可以跑起来,所以重心就从“学”偏移到了单纯的“做”上。这种心态我要特别提出来,希望能够告诫初学者必须保持平稳的心态,先仔细地浏览教材或者用户手册,理解工作原理,之后再调试代码完成实验。
单片机学习过程中每个人都会遇到各种各样的难题并且遭遇长时间的调试过程。遭遇到这样的情况,就需要冷静下来查找问题成因。一方面,可以借助于网络,查找是否有相似的问题并借鉴其他人的分析及解决方案,这是一个比较直接高效的方法;另一方面,反复地查阅单片机的数据手册或者用户手册,逐个分析列举可能的原理,并设置对应的测试来解决,一些“莫名其妙”的问题,往往需要通过这样的手段来解决。
当然,能够获得有使用经验的老师或工程师的指导则是最直接、最有效的方法。随着单片机学习以及使用的深入,遇到的问题将越来越复杂化,这时候外界因为缺乏对此项目的深入了解,所能起到的协助作用就会减弱,这个时候独立的定位问题以及解决问题的能力就必须具备。所以在学习的整个过程中,都应该有意识地培养这种能力。
当熟悉单片机的使用之后,就应该完成一个视野转换的过程。这个时候关注范围则应该由单片机扩展到整个单片机系统上,不仅仅关心单片机上代码的实现,还需要考虑如何构建以单片机为核心的电子系统。单片机工程师一般会对一个或者若干个类型的单片机非常熟悉。
在得到工程项目需求时,能够快速地评估系统所需要的单片机控制核心,在满足需求的前提下一般会尽量采用最熟悉的单片机,合理设计划分系统电路功能模块,尽可能高效利用单片机片上的外设,以达到最优化的设计。如果评估发现使用的单片机不合适,则还需要更换单片机平台。在工业应用上,还必须考虑单片机系统所需要面对的严苛工作环境,保证系统能够顺利通过相应工业标准的测试。最终完成由点到面的扩展,逐步朝单片机工程师方向迈进。
(此处已添加圈子卡片,请到今日头条客户端查看)STM32单片机怎么学最快?我当初是怎么一周搞定的?
最近看到很多小伙伴学STM32学的一脸茫然,有些甚至学1年都不会,有些虽然学会了外设使用,一做起项目来无从下手。
那今天通过自己的经历来告诉大家STM32怎么学最快,领悟到了1周学会绝对没问题!
一、入门
我刚开始学完51就出去找工作了,那时是2011年,企业对这个职位的要求还不高,会51会改程序基本就能找到工作。
工作中我接触最多的就是STC单片机,做MF卡的权限控制板。
后面又接触到了TFT屏幕的产品,用到了NXP,那是我人生中第一次接触32位ARM7的芯片,使用起来跟比51复杂很多,但是原理都一样,需要自己配置寄存器来使用外设。
后面在一个老工程师的推荐下,听说STM32单片机开发用起来很舒服,开发周期也快。
然后一个新产品就换成了STM32,等搭建好开发环境以后准备看芯片外设怎么用起来的时候,发现一脸懵逼,怎么跟51单片机的程序架构完全不一样?
为了不在老大面前暴露自己的技术水平,我偷偷在某宝上买了一个STM32的开发板。
那个时候还不带视频教程,只是带了每个外设的使用例程。
我性格也比较浮躁,那些数据手册都看不下去,我直接复制例程里面的程序到我的工程里面先看看效果。
中间也踩了很多坑,比如说直接复制过来编译总是会报错,多半都是头文件没整好。
一番倒腾之后,例程终于能跑起来了,那么接下来我的学习技巧 是:
1. 举一反三
就是看到例程效果以后,我会尝试着去改这个例程的外设配置。
比如说例程是控制PA1引脚的灯闪烁,那我会改成PB2,PC2或者其他测试下。
比如说例程定时器1中断是10ms,那我换一个定时器2中断20ms,这样去尝试。
2. 会用就行
当你有系统学习stm32想法的时候,注定就要走很多弯路。
单片机只是一个工具而已,我们只要学会使用它就可以了。
我们学习必须有明确目的,我们目的就是通过单片机做产品产生价值。
把产品用到的外设都能够跑起来,并且知道改哪里是修改什么参数的时候就够了。
后续你随着你经验的增加,你对stm32的理解也会越来越深,很多曾经的问题也会迎刃而解。
如果你照着例程都不会用的话,那大概率是你没学习过51直接跳到STM32,或者没用51做过一些小项目。
这个时候与其死磕,还不如花点时间回去把51单片机系统学一遍 更快。
二、进阶
学会外设使用以后啊,接下来就是进阶阶段,大多数人在这个阶段提升是最慢的,主要有几点原因:
1. 新手接触不到实际产品开发,即使接触也是打杂,参与不到核心的开发。
2. 没有人带,经验和产品思维局限在自己的认知里。
3. 市面上教程都是开发板多,真正接近实际产品的学习板非常少。
所以很多新手,特别是应届生容易陷入了一个死循环,接触不到实际产品开发,找工作就没优势,找不到工作就更接触不到实际产品开发。
对于进阶这块,我在19年随便录制了一套视频,计划只是录出来玩一下的。
内容主要手把手教你写一个轻量级的时间片轮训操作系统,也可以理解成是一个程序架构。
在这个架构的基础上,我提供了在产品开发当中,经常会碰到的一些痛点解决方法,比如说。
1.如果一个产品有10个甚至更多按键需要同时检测短按、短按释放、长按、长按释放动作的时候,代码怎么写可扩展性更强?
2. 如果有10个甚至100个LED灯,要怎么实现每个灯独立的效果,比如说慢闪、快闪、隔3快闪2次,隔5秒快闪1次等等。
3.做物联网网关时会实时跟服务器进行心跳监测,在如此高频和数据量大的情况下,怎么保证数据不丢包。
那解决这些问题所涉及到的技术点有回调函数、任务调度、队列算法等等,如果全部吃透并且加以优化,足以写出可移植性和可扩展性非常强的程序。
这个程序架构是开源提供给大家的,包括视频教程+源码+工具。
需要的大家可以找无际单片机编程获取,大佬就别来了,帮不了你。
这套架构算是我半个职业生涯的精华总结,如果没一定产品开发经验或许看不懂,但是值得你收藏吃灰,当你真正碰到那些问题后,再回过头来看,你会开心的像个小孩!
相关问答
51 单片机 时钟频率 最快 的时间?1.是12倍频,即12MHz。2.这是因为51单片机内部时钟频率为1/12分频,所以最快的时钟频率就是12倍频。3.如果需要更高的时钟频率,可以考虑使用外部晶体振荡器或...
如何快速学习和掌握 单片机 知识及应用?单片机的学习只要掌握相应的方法,而且你又一点点相应的基础是完全能够快速掌握的,你需要从下面几个方面进行切入。1.学会读单片机的数据手册,了解他的外设功...
51 单片机 如何延迟到250纳秒?对于那些老型号51单片机,无论如何也搞不出来250nS程序延迟,因为它们最快的指令也需要1微秒。现在的主流51单片机都提高了主频,并且采用了流水线结构,所以,...
c语言 最快 多久能学会?短时间能否C语言速成这个不太可能成功,用将近一个月的时间来速成C语言,无异于大海捞针,难度很大。一个月的时间能够使用C语言做一些简单的小例子还是能够写得...
如何快速的学会 单片机 C语言编程?多看,多写,多练,多思考!单片机有很多种,每种的侧重都有不同,在自己想深入的单片机方向选择一本经典教材,然后将心沉入教材,开始用功学习。切记不要只看...多...
如何快速将两个 单片机 的程序合并,我是用ATmega16 单片机 ,程序是用c编的?你是指把两个单片机的程序合起来,最后烧录到一块单片机上么?如果是的话,C语言只要改下程序开始的引脚定义就好了。把重复的I/O口再重新定义一下就好了。你...
单片机 中ttl是啥意思?单片机中TTL是什么意思?TTL代表Transistor-TransistorLogic,即晶体管晶体管逻辑。它是一种数字电平标准,用于描述数字信号在电子电路中的传输和处理方式。TTL...
单片机 的uchar和uint怎么取选?uchar等价于unsignedchar,无符号字符整数,占用一个字节8位,等于51单片机字长,因此处理最快。uint等价于unsignedint,无符号整数,占用两个字节16位,处理...u....
单片机 用C语言编程很好学,为什么还要用汇编呢?现在一般单片机都支持C语言和晦涩难懂的汇编语言,在许多介绍单片机应用技术的教材中有相当一部分是用汇编语言编写的这说明汇编语言在学习单片机和编写单片机程...
谈谈你对 单片机 的认识?从大一的时候在大学图书馆看到关于AVR单片机的书籍,到参加竞赛、工作,我和单片机已经打了六七年的交道了吧。其间我都是在做产品的软件开发,与硬件工程师合作...