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. listed

    http://sebastianruder.com/optimizing-gradient-descent/ http://www.nag.co.uk/pss/nag-and-algorithmic- ...

  2. python序列化: json & pickle & shelve 模块

    一.json & pickle & shelve 模块 json,用于字符串 和 python数据类型间进行转换pickle,用于python特有的类型 和 python的数据类型间进 ...

  3. 给日志添加“复制”效果

    给日志添加如上效果的实现方法: 在日志编辑页面,源代码中,添加如下代码,包裹住 目标内容style1: <div class="cnblogs_code"><di ...

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

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

  5. 使用虚幻引擎中的C++导论(三-反射系统与迭代器)

    使用虚幻引擎中的C++导论(三) 第一,这篇是我翻译的虚幻4官网的新手编程教程,原文传送门,有的翻译不太好,但大体意思差不多,请支持我O(∩_∩)O谢谢. 第二,某些细节操作,这篇文章省略了,如果有不 ...

  6. jQuery鼠标事件汇总

    鼠标事件是在用户移动鼠标光标或者使用任意鼠标键点击时触发的. 1.click事件:点击鼠标左键时触发 $('p').click(function(){}); 示例: $('p').click(func ...

  7. avalon2学习教程14动画使用

    avalon2实际上没有实现完整的动画模块,它只是对现有的CSS3动画或jquery animate再包装一层. 我们先说如何用CSS3为avalon实现动画效果.首先要使用avalon.effect ...

  8. Linux内核分析第三周学习总结:构造一个简单的Linux系统MenuOS

    韩玉琪 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.Linux内 ...

  9. 【Python全栈笔记】00 12-14 Oct Linux 和 Python 基础

    Linux 基础认识 更加稳定,安全,开源 设置好ssh协议后可以通过windows系统连接Linux,基于ssh协议进行通信 '/' 为根目录 cd / -> 切换到根目录 ls -lh 列出 ...

  10. a==null和a.equals("null")的区别

    equals 是值比较,==是比较内存 A==B,比较句柄,就是比较变量A,B的地址存放的东西,比如int A=0;String B="bbbb";那么变量A的地址方的就是0,B的 ...