(原创)学习MCU的感悟_初级(MCU,经验)
1.Abstract
想了许多,不知道怎么开始,这算是学习和应用MCU的第四个年头了;过程虽然坎坎坷坷,但仍然还是坚持到了今天,也总算是折腾入行了。为了写的还是能够读下去,还特意写了一个小提纲,将这一路走来的经验沉淀一下,以便以后某段时间回来看看,那么,就这样开始吧。
2.Content
先讲述一个过程吧,以时间轴的拉开序幕。我接触MCU是在读大学学专业课的时候。在学它之前,略微对它有些了解(毕竟CPU这个名字实在是太热门了),但究竟是个什么,就没有什么概念了。好在是修它之前学过电路技术基础,所以由它构成基本的电路部分还是能看得懂,能进行一定分析的,这给学习带来了不少的好处。学习MCU的时候,这东西运行起来还得靠编写指令代码,于是乎就去学它的指令系统。给我最初的印象是这东西功能非常强大,任何一个较为复杂的数字电路功能都可以由它实现,只要写好指令代码,烧录到芯片中,就可以实现了,再也不需要用很多片数字芯片去堆,省去了很多的引线;而且设计的方法也变了,用编写指令代码的方式只需要逻辑上转换转换就可以了,用数字芯片去堆,则要画各种各样的图和表,最后整合才能实现;实在是方便了不少!紧接着的一段时间,就是将它当一个无限资源的黑盒子,买了一块实验板进行编各种有意思的小程序。
重要的一个转折点是逢上全国大学生电子竞赛,相对比赛结果来说,对我的历练显得更重要些,很多问题暴露出来了,电路技术基础学得不够牢固、编写程序逻辑不甚清晰、分析能力还是比较薄弱、实践能力不是很强等等,其中最能撼动我的,就是为什么要写程序?这个问题困惑了我很久,以前做的都是一些小程序,点点灯、花样灯、动态点阵、实时时钟……还有很多都是借用别人的程序,自己根本就没看明白,然后就直接用进来了。然而,应用到真正的要使用的场合,这些都不再需要了,还有很多组就根本不使用MCU!后来就重拾起书本,准备从书本中找找答案。
暂时把时间轴拉到现在,因为现在我对这个问题的理解比较深刻,所以做起总结也会更贴切一些。解释它之前,先引进一个射击的例子。首先考虑下 子弹是用来做什么的?训练营里有各种各样的枪支,真枪也好,玩具枪也好,它只是一个楔子;我们大多使用的是将它瞄准各种各样的靶子,打中后就觉得不错了,水平很高超;不知不觉的,就养成了子弹就是用来打靶子的观点。而真正的意义果真是这么?不是的,子弹的真正意义是用来杀人的!当子弹穿过敌人的胸膛,让敌人根本无力回击,这才是一颗子弹的真正意义!或许之前有用过无数颗子弹,但只有这一颗,才算是真正有意义的,它用在了它应该被用到的地方,起到了强而有力的效果!那么,一个不熟悉子弹的人,不熟悉枪械、不熟悉风速、弹道、射程的人算得上是了解射击么?答案自然明显。回到问题上来了,一个不熟悉MCU内部结构,不熟悉它的功能、不熟悉它的用途的人算得上是了解MCU么?道理是一样的,编写的程序犹如例子中的子弹,它可以是无数个,但用到了它该用到的地方——工业现场、实际项目等中才算得上是真正有意义!
把时间轴拉回去,所找的答案也明晰起来,即写程序是为了应用在实际项目中,为需要而写程序。在写出精巧的程序出来之前,必须得十分了解MCU的内部结构,资源,功能等等,要知道它是如何工作的——即打开这个黑匣子,深入到里边学习。于是乎,往后看得书就比较多了,多花时间努力去了解和掌握MCU的结构。写的程序虽然没以前多,但是与硬件连接比较紧密,预期的跟起初设计的相差不了多少。在这个层次上,许多东西都通了,比如,从一个MCU到另外一个型号的MCU,差别其实不大,只是结构稍有不同,功能有些不同罢了,整体的学习方法都是一样,特别有种触类旁通的感觉。这段时间内,邂逅了数字逻辑设计,我也被深深迷住了,MCU更贴近人的思维,可以做的事情稍微复杂点,但是使用数字逻辑设计出来的电路就非常精准,误差小,非常适合应用于复杂度不高的高速应用场合,比如调制解调,数据压缩等等。这些是MCU所不具备的,实际应用中可以结合各自的优点,各自发挥所长,构成一个完整的系统。
而后毕业前的时间就是专心学习MCU的内部结构,数字系统逻辑设计。也有幸第二次参加了电子设计竞赛,这次是在电子技术基础上能力上有所锻炼,还是那句话,相对于比赛结果,对我的历练显得更为重要。常用的电路模型和分析方法都深深地印在脑子里,大学时的课本经常留在身边,密密麻麻做了许多笔记,每次翻书的时候,总能从中学到点什么。
毕业以后,幸运的是,我还可以继续念书(硕士),还可以带一部分本科生,这已经是第二年了。给别人一碗水,自己就得有一桶水的基础,我也在不停地在学习。每每他们看到我能很完整的分析一个系统的功能,实现出预期的效果,都会心生佩服,纷纷讨教经验和方法。时常我都想静下心来整理一下,用文字的方式记录和积淀下来,写随笔可能是一件非常好表达方式。
基础最为重要——基础并不是一天两天就能打起来的,它是一个反复的过程,需要长时间的积累,常用的书都应该专用的备一本,对里边的东西应该能了如指掌,特别是对理论的分析,要能在用到的时候准确找到位置。也要去不断的琢磨,好的书本通常都是比较耐看的,看一遍或许收获不大,多看几遍,就会顿悟许多。
勤动手——对于一些感兴趣的,可以动手去试试,搭搭电路,写写程序是必要的。画板子、调电路、写程序、调程序等基本技能需要掌握,这些都是辅助设计的一些技能,以后不一定每一样都用到,但前期还是多动动手,学习和了解一下。
多和前辈交流——虚心学习别人的经验是非常重要的,交流主要有两大途径,有声的和无声的,有声的是指前辈们就在你面前给你评析,无声的是指别人设计好的图纸或者源码,可以拿过来进行参考和学习。有很多时候都是原地在画圈,在不明朗的时候,前辈的一丝指点可能让人很容易跳出这个圈子,获得进步。
培养点业余的兴趣爱好——培养一点业余的兴趣爱好对生活情调有很大帮助,除了学习、工作、家庭,还应该有自己的空间,这些兴趣爱好可以转移注意力,交到更多的朋友。隔行如隔山,毕竟从事一个行业的人是有限的,圈子是有限的,有一些共同的兴趣爱好,就相当于自己多了一份潜在的魅力,可以多感受一下其他的思想,陶冶情操。
3.Conclusion
写了这么多,感觉还没有写完,就当先写了一个草稿,每当再回头看时,往上再充实一些。
(原创)学习MCU的感悟_初级(MCU,经验)的更多相关文章
- 深度学习与计算机视觉(11)_基于deep learning的快速图像检索系统
深度学习与计算机视觉(11)_基于deep learning的快速图像检索系统 作者:寒小阳 时间:2016年3月. 出处:http://blog.csdn.net/han_xiaoyang/arti ...
- 用了这么多年的MCU,你知道哪些MCU原厂最牛?
单片机诞生于1971年,经历了SCM.MCU.SoC三大阶段.单片机由以前的1位.4位.8位.16位,发展到现在的32位甚至64位. 90年代后随着消费电子产品大发展,单片机技术得到了巨大提高,相继诞 ...
- ML学习分享系列(2)_计算广告小窥[中]
原作:面包包包包包包 改动:寒小阳 && 龙心尘 时间:2016年2月 出处:http://blog.csdn.net/Breada/article/details/50697030 ...
- python学习两月总结_汇总大牛们的思想_值得收藏
下面是我汇总的我学习两个月python(version:3.3.2)的所有笔记 你可以访问:http://www.python.org获取更多信息 你也可以访问:http://www.cnblogs. ...
- Oracle学习总结_day05_集合_连接查询
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! day05_集合_连接查询 集合操作符 UNION ( ...
- 学习C语言感悟
还记得刚上第一节C语言课的时候,基本上一节课只有最后10分钟的内容听懂了.在此之前从没接触过C语言,想说看看书预习一下吧,可是完全找不到条理,发现老师也不是按书上的顺序讲的.当时就特别着急,想说难道 ...
- [原创] Win7全自动精简批处理_绝对原创,绝对给力_感谢无忧给了我一年的潜水
2011htpcfans发表于 2012-5-5 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=210043 @echo 全自动/手动精简 ...
- python学习的一些感悟
首先声明,这里用到的库是在coursera上学习时,老师建立的一个库 #timer import simplegui import random # global state message = &q ...
- 手把手教你学习FPGA系列视频教程_救护车鸣笛声
本套教程主要面对FPGA初学者,本次DIY活动不仅让初学者掌握FPGA硬件电路设计以及焊接方面的知识,更重要的是让初学者学习硬件描述语言 (VerilogHDL)描述数字电路,以及Quartus II ...
随机推荐
- 'telnet' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
在telnet与ftp服务器相连时出现的问题: 原因:windows自带telnet,只是没有安装 解决如下: 然后关机重启
- 【转载】shell编程——if语句 if -z -n -f -eq -ne -lt
shell编程中条件表达式的使用 if 条件then Commandelse Commandfi 别忘了这个结尾 If语句忘了结尾fites ...
- PHP基于SOAP实现webservice
简单对象访问协议(SOAP)是一种轻量的.简单的.基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息. SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议( H ...
- VC++ 将资源位图画到窗口上去的方法
第一种方法最简单:直接看代码 CImage img; img.LoadFromResource(AfxGetInstanceHandle(), IDB_BITMAP1); img.Draw(*pDc, ...
- PHP调试总结
PHP调试总结一,环境方面,比如查看安装扩展是否生效,是总支持某扩展.可以在web目录中建一个phpinfo.php在里面输入<?phpphpinfo();?>在浏览器上访问一下,会输出P ...
- 深入理解js——prototype原型
之前(深入理解js--一切皆是对象)中说道,函数也是一种对象.它也是属性的集合,你也可以对函数进行自定义属性.而JavaScript默认的给了函数一个属性--prototype(原型).每个函数都有一 ...
- JQuery Checkbox的change事件
JQuery Checkbox的change事件 参考 http://blog.csdn.net/hbhgjiangkun/article/details/8126981 $(functio ...
- python-flask 框架使用 flask_mongoengine
开发环境配置 再使用 mongodb 之前,需要先安装 pymongo ,以及flask_mongoengine 1. 切换到 virtualenv 环境 . /pyenv/bin/activate ...
- textfield设置左边距
CGRect frame = f;//f表示你的textField的frame frame.size.width = ;//设置左边距的大小 UIView *leftview = [[UIView a ...
- POJ 1742 Coins DP 01背包
dp[i][j]表示前i种硬币中取总价值为j时第i种硬币最多剩下多少个,-1表示无法到达该状态. a.当dp[i-1][j]>=0时,dp[i][j]=ci; b.当j-ai>=0& ...