1.Abstract

    想了许多,不知道怎么开始,这算是学习和应用MCU的第四个年头了;过程虽然坎坎坷坷,但仍然还是坚持到了今天,也总算是折腾入行了。为了写的还是能够读下去,还特意写了一个小提纲,将这一路走来的经验沉淀一下,以便以后某段时间回来看看,那么,就这样开始吧。

2.Content

    先讲述一个过程吧,以时间轴的拉开序幕。我接触MCU是在读大学学专业课的时候。在学它之前,略微对它有些了解(毕竟CPU这个名字实在是太热门了),但究竟是个什么,就没有什么概念了。好在是修它之前学过电路技术基础,所以由它构成基本的电路部分还是能看得懂,能进行一定分析的,这给学习带来了不少的好处。学习MCU的时候,这东西运行起来还得靠编写指令代码,于是乎就去学它的指令系统。给我最初的印象是这东西功能非常强大,任何一个较为复杂的数字电路功能都可以由它实现,只要写好指令代码,烧录到芯片中,就可以实现了,再也不需要用很多片数字芯片去堆,省去了很多的引线;而且设计的方法也变了,用编写指令代码的方式只需要逻辑上转换转换就可以了,用数字芯片去堆,则要画各种各样的图和表,最后整合才能实现;实在是方便了不少!紧接着的一段时间,就是将它当一个无限资源的黑盒子,买了一块实验板进行编各种有意思的小程序。

    重要的一个转折点是逢上全国大学生电子竞赛,相对比赛结果来说,对我的历练显得更重要些,很多问题暴露出来了,电路技术基础学得不够牢固、编写程序逻辑不甚清晰、分析能力还是比较薄弱、实践能力不是很强等等,其中最能撼动我的,就是为什么要写程序?这个问题困惑了我很久,以前做的都是一些小程序,点点灯、花样灯、动态点阵、实时时钟……还有很多都是借用别人的程序,自己根本就没看明白,然后就直接用进来了。然而,应用到真正的要使用的场合,这些都不再需要了,还有很多组就根本不使用MCU!后来就重拾起书本,准备从书本中找找答案。

    暂时把时间轴拉到现在,因为现在我对这个问题的理解比较深刻,所以做起总结也会更贴切一些。解释它之前,先引进一个射击的例子。首先考虑下 子弹是用来做什么的?训练营里有各种各样的枪支,真枪也好,玩具枪也好,它只是一个楔子;我们大多使用的是将它瞄准各种各样的靶子,打中后就觉得不错了,水平很高超;不知不觉的,就养成了子弹就是用来打靶子的观点。而真正的意义果真是这么?不是的,子弹的真正意义是用来杀人的!当子弹穿过敌人的胸膛,让敌人根本无力回击,这才是一颗子弹的真正意义!或许之前有用过无数颗子弹,但只有这一颗,才算是真正有意义的,它用在了它应该被用到的地方,起到了强而有力的效果!那么,一个不熟悉子弹的人,不熟悉枪械、不熟悉风速、弹道、射程的人算得上是了解射击么?答案自然明显。回到问题上来了,一个不熟悉MCU内部结构,不熟悉它的功能、不熟悉它的用途的人算得上是了解MCU么?道理是一样的,编写的程序犹如例子中的子弹,它可以是无数个,但用到了它该用到的地方——工业现场、实际项目等中才算得上是真正有意义!

    把时间轴拉回去,所找的答案也明晰起来,即写程序是为了应用在实际项目中,为需要而写程序。在写出精巧的程序出来之前,必须得十分了解MCU的内部结构,资源,功能等等,要知道它是如何工作的——即打开这个黑匣子,深入到里边学习。于是乎,往后看得书就比较多了,多花时间努力去了解和掌握MCU的结构。写的程序虽然没以前多,但是与硬件连接比较紧密,预期的跟起初设计的相差不了多少。在这个层次上,许多东西都通了,比如,从一个MCU到另外一个型号的MCU,差别其实不大,只是结构稍有不同,功能有些不同罢了,整体的学习方法都是一样,特别有种触类旁通的感觉。这段时间内,邂逅了数字逻辑设计,我也被深深迷住了,MCU更贴近人的思维,可以做的事情稍微复杂点,但是使用数字逻辑设计出来的电路就非常精准,误差小,非常适合应用于复杂度不高的高速应用场合,比如调制解调,数据压缩等等。这些是MCU所不具备的,实际应用中可以结合各自的优点,各自发挥所长,构成一个完整的系统。

    而后毕业前的时间就是专心学习MCU的内部结构,数字系统逻辑设计。也有幸第二次参加了电子设计竞赛,这次是在电子技术基础上能力上有所锻炼,还是那句话,相对于比赛结果,对我的历练显得更为重要。常用的电路模型和分析方法都深深地印在脑子里,大学时的课本经常留在身边,密密麻麻做了许多笔记,每次翻书的时候,总能从中学到点什么。

    毕业以后,幸运的是,我还可以继续念书(硕士),还可以带一部分本科生,这已经是第二年了。给别人一碗水,自己就得有一桶水的基础,我也在不停地在学习。每每他们看到我能很完整的分析一个系统的功能,实现出预期的效果,都会心生佩服,纷纷讨教经验和方法。时常我都想静下心来整理一下,用文字的方式记录和积淀下来,写随笔可能是一件非常好表达方式。

  基础最为重要——基础并不是一天两天就能打起来的,它是一个反复的过程,需要长时间的积累,常用的书都应该专用的备一本,对里边的东西应该能了如指掌,特别是对理论的分析,要能在用到的时候准确找到位置。也要去不断的琢磨,好的书本通常都是比较耐看的,看一遍或许收获不大,多看几遍,就会顿悟许多。

  勤动手——对于一些感兴趣的,可以动手去试试,搭搭电路,写写程序是必要的。画板子、调电路、写程序、调程序等基本技能需要掌握,这些都是辅助设计的一些技能,以后不一定每一样都用到,但前期还是多动动手,学习和了解一下。

  多和前辈交流——虚心学习别人的经验是非常重要的,交流主要有两大途径,有声的和无声的,有声的是指前辈们就在你面前给你评析,无声的是指别人设计好的图纸或者源码,可以拿过来进行参考和学习。有很多时候都是原地在画圈,在不明朗的时候,前辈的一丝指点可能让人很容易跳出这个圈子,获得进步。

  培养点业余的兴趣爱好——培养一点业余的兴趣爱好对生活情调有很大帮助,除了学习、工作、家庭,还应该有自己的空间,这些兴趣爱好可以转移注意力,交到更多的朋友。隔行如隔山,毕竟从事一个行业的人是有限的,圈子是有限的,有一些共同的兴趣爱好,就相当于自己多了一份潜在的魅力,可以多感受一下其他的思想,陶冶情操。

3.Conclusion

    写了这么多,感觉还没有写完,就当先写了一个草稿,每当再回头看时,往上再充实一些。

(原创)学习MCU的感悟_初级(MCU,经验)的更多相关文章

  1. 深度学习与计算机视觉(11)_基于deep learning的快速图像检索系统

    深度学习与计算机视觉(11)_基于deep learning的快速图像检索系统 作者:寒小阳 时间:2016年3月. 出处:http://blog.csdn.net/han_xiaoyang/arti ...

  2. 用了这么多年的MCU,你知道哪些MCU原厂最牛?

    单片机诞生于1971年,经历了SCM.MCU.SoC三大阶段.单片机由以前的1位.4位.8位.16位,发展到现在的32位甚至64位. 90年代后随着消费电子产品大发展,单片机技术得到了巨大提高,相继诞 ...

  3. ML学习分享系列(2)_计算广告小窥[中]

    原作:面包包包包包包 改动:寒小阳 && 龙心尘 时间:2016年2月 出处:http://blog.csdn.net/Breada/article/details/50697030 ...

  4. python学习两月总结_汇总大牛们的思想_值得收藏

    下面是我汇总的我学习两个月python(version:3.3.2)的所有笔记 你可以访问:http://www.python.org获取更多信息 你也可以访问:http://www.cnblogs. ...

  5. Oracle学习总结_day05_集合_连接查询

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! day05_集合_连接查询 集合操作符 UNION ( ...

  6. 学习C语言感悟

     还记得刚上第一节C语言课的时候,基本上一节课只有最后10分钟的内容听懂了.在此之前从没接触过C语言,想说看看书预习一下吧,可是完全找不到条理,发现老师也不是按书上的顺序讲的.当时就特别着急,想说难道 ...

  7. [原创] Win7全自动精简批处理_绝对原创,绝对给力_感谢无忧给了我一年的潜水

    2011htpcfans发表于 2012-5-5 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=210043 @echo 全自动/手动精简 ...

  8. python学习的一些感悟

    首先声明,这里用到的库是在coursera上学习时,老师建立的一个库 #timer import simplegui import random # global state message = &q ...

  9. 手把手教你学习FPGA系列视频教程_救护车鸣笛声

    本套教程主要面对FPGA初学者,本次DIY活动不仅让初学者掌握FPGA硬件电路设计以及焊接方面的知识,更重要的是让初学者学习硬件描述语言 (VerilogHDL)描述数字电路,以及Quartus II ...

随机推荐

  1. lua 基础库

    数学库: 三角函数:math.sin, math.cos, math.tan, math.asin, math.acos 都以弧度为单位: 指数和对数函数:exp, log, log10: 取整函数: ...

  2. 数据结构中很常见的各种树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树)

    数据结构中常见的树(BST二叉搜索树.AVL平衡二叉树.RBT红黑树.B-树.B+树.B*树) 二叉排序树.平衡树.红黑树 红黑树----第四篇:一步一图一代码,一定要让你真正彻底明白红黑树 --- ...

  3. Android RadioGroup设置默认选中项

    今天有人问.Android 里面 RadioGroup里面有两个RadioButton怎么设置默认值? 第一个RadioButton设置 android:checked="true" ...

  4. 双击vbs时,默认cscript运行脚本

    Dim obj_shellset obj_shell = createobject("wscript.shell")host = WScript.FullNameIf LCase( ...

  5. Visual Studio 2013 编译CEF步骤

    If you'd like to build the Chromium Embedded Framework (a wrapper for Chromium, for creating browser ...

  6. tcp协议-http协议-time-wait-close-wait必知

     前言:  tcp四次挥手过程中,谁主动断开,谁有time_wait,被动断开一方会有close_wait time_wait:保持端口占用2mls~4min,避免对方还有一些tcp片发往这个端口,新 ...

  7. (1)as_view() (2)在urls.py里面出现的pk是怎么回事 (3)RetrieveAPIView表示什么

    下面的代码都是我从github上下载的源码中摘取的django: https://github.com/django/django 下载命令: git clone https://github.com ...

  8. 5.Firedac错误信息

    主要错误信息属性: 1.EFDDBEngineException Errors -- TFDDBError对象集合. ErrorCount --错误的记录数 Kind -- DBMS的错误集合. Me ...

  9. java实验2实验报告(20135131)

    一.实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计模式 二.实验要求 1.没有L ...

  10. windows2008r2环境双实例安装mysql5.6

    windows2008r2环境双实例安装mysql5.6 环境:windows2008 r2 标准版 1.默认安装了一个mysql5.6端口为3306 2.使用msi文件安装需要.net4.0支持,安 ...