大学的电子创新班之路,玩mcu,dsp,arm嵌入式

来源:互联网 发布:穆斯林女性地位知乎 编辑:程序博客网 时间:2024/05/16 01:46

来到创新班快一年了,记得是大一下学期的一次c语言考试之后挂名创新的,当时只知道有个51单片机,现在一晃一年快要过去了,再不一会就退出创新了,自己学了好了东西,因为感觉自己水平还不行,也没有很多时间整理,所以学习的过程也没有记入到博客中,只有好多的txt的笔记,现在还是写一下我的心得吧。

大一下学期虽然挂名创新,但当时宿舍在崂山东校区,实验室在市南中心,所以没去过一次实验室,只花了200金买了一块51开发板,看了郭天祥的51单片机入门视频,刚学单片机时候真不知道她是个什么东东,只知道玩这个的目标是通过编程来点亮led灯,看着51的几十个历程,也就能知道led是什么了,哈哈,所以大一下学期也就没怎么学习,将天祥哥的视频看了一下就不玩了。

大二刚开始,杨老师要求我们要通过考试正式进入创新班,考试内容就是那本MSP430的某某章节的所有代码,要求全都默写出来,一时兴起,我又买了一块MSP430的开发板,200多金又没了,正是这时候发现我对单片机编程还是有很大兴趣的。看着那本很好的书,我开始在开发板上编写程序。通过对那本书的研究,知道了还有更有效的编程思想,非阻塞和状态机的应用让我感到单片机这玩儿意儿真不简单!他能完成好多好多复杂的控制~想起当时真有点意思,工数课啊物理课啊这些无聊的课程我都带着那本书去看,最后索性不去上了,现在想想不去也好,没什么用!

先是将独立的四个按键用非阻塞方式将程序写了出来,测试了一下通过了,挺兴奋的,理论终于应用于实践了。后来又学会了矩阵键盘的编程。又看了数码管显示,想着这个当时花了一两天时间去调试各种显示形式。之后又看了定时器模块,最初使用定时器控制led的闪烁,当然这些都是建立在非阻塞下的,看定时器必然用到中断,学习了定时器中断后才知道,原来用好了定时器和中断后,单片机就掌握一半了。

蜂鸣器很简单一个高地电平就ok了。之后买了12864和1602,其实我不必买的,实验室都有,但老觉得不是自己的东西,咳咳。太年轻了啊。调12864调了两三天吧,调完了12864之后我才有了用单片机控制外围设备这个概念。

实验室有个无线遥控小车的练习项目,以当时的水平,还真是难以在几天之内搞定,还记得当时是均达师哥调的,我插手都插不上,水平太低了,咳咳。这个项目结束后,看着大家的小车跑来跑去的,自己就想自己也要调出来,于是自己又到淘宝上去买了小车,nrf24l01无线模块,下决心把这个小车调出来。也就是从这个时候我知道了网络对学习,工作的重要性,百度的厉害。所有的资料:芯片资料,程序等等都是从网上一点点找的,这个无线模块真是很复杂,主要是时序很复杂。当时一下课就去调,在实验室调,在宿舍调,花了两个星期时间最后终于把它调出来了,很兴奋哦,还记得晚上拿给媳妇看了,嘿嘿~~测试了一下最远遥控距离是不是和淘宝上说的一样,10m左右,还好,但还有个bug,有时候程序会跑飞,现在想一下,程序跑飞的原因有很多,那时候的应该是供电问题吧。

之后参加了校赛,编了一个小风扇的程序,很坑,一整天在实验室里,貌似没吃午饭,编了一天的程序,因为没有用超级终端,我用了12864液晶作为显示模块,显示做的真的很好,有时候的比赛我老感觉能急中生智,编出很奇葩的程序,这在考单片机初级工程师证书的时候得到了验证,咳咳。我还加了键盘控制,用了很强大的状态机来控制,风扇的摇头控制做的也很好啊,啊啊,但是测速模块我真的不会啊,就没有做,最后的最后老师看了一下,就给了个三等奖,无语了,其实这个也无所谓了,学到了知识就好,谁让我没好好准备,把测速的调出来捏。比赛之后哥恼了,看着430的那本书,死啃定时器的捕获模块,终于把捕获搞明白了,真的很有用,先后用这个做了好多项目了,这也是基础的基础了。

校赛结束后我继续学习外围设备,有了12864的调试经验,用了3个小时就把1602调出来了,这时候我才发现,原来这些技术是越积累越有经验,有很多设备的控制都是类似的,这成了我继续学习的动力,艺多不压身嘛!

之后又开始调超声波模块,看了一下超声波的芯片手册,就几张纸,很兴奋,哈哈,想这不很简单了嘛,但是实际调试的时候才发现,测量的精度很容易受到外界因素的干扰,找了一天的资料才知道原来是430的时钟容易受到温度等因素的干扰而使得定时不准确,开启高频时钟才可以的,用外部晶振才可以的,这些经验就是在调试中一点点积累的,虽然很耗时,但是记忆很深刻!从超声波的调试中我知道了设置时钟的重要性,要想精确的控制某些因子,必须考虑时钟的准确性。

调完了超声波后我学习了舵机的调试,当天不知道怎么了,舵机原理很简单了,几乎就是个数码管水平的,我硬是调不出来,调了一下午,从12点半到下午5点,找错误找了好长时间啊,但从来没遇到过这种错误,乱七八糟的错误,程序也跑,但是不能正常跑,现在想一下,都怪我的调试方法不对,没有用软件仿真一下,当时水平还是太低了。就在绝望的时候,我又看了一遍程序,原来是看门狗没关掉,无语了,搞了一下午的错误就是这个语句忘加了,傻笑了半天,所以说调试的时候自己看不出错误,可以找个人来帮你看一下,当局者迷,旁观者清啊!!低级错误时常犯,都是基础知识没学好,switch语句忘了加break了,不能正确理解for循环了,还有break的用法没有搞明白了,这些错误花了我至少7个小时时间。

接了学校的一个创新项目,功率因数监控及其测量系统,自己和金明就做开了,因为我兴趣比较大,感觉天天在想这个项目,有任务就去做,我就是这样想的,从这个项目开始编写了430的AD模块,测量频率,测量相位差,都用的是捕获模块,连续做了一个多星期,每天的课余时间都泡在实验室,程序框架编好了,杨老师竟然给我们换了项目,改为了光伏并网的项目,很难,最后都没做完,但是学到了好多知识,光伏并网这个项目做了有一个月,

最后卡在了LC滤波上,本想学完模电再看看会不会做的,学完了才知道这教科书不是叫你做项目的,是教你基础的基础的。光伏并网几乎把430的内部资源都用上了,两路捕获,好几路AD,两路DA……键盘,液晶,采集,比较,MPPT跟踪,同频同相跟踪,dcac逆变,欠压过流保护……在这期间我学会了刻板,可惜都是单层板,再次感谢实验室提供的丰富资源!谢谢!学习刻板学了一周,翘了四节微机接口,后悔啊,咳咳。

       之后报了TI的仪器测量大赛,还有物联网大赛,这些还没开始做,飞思卡尔智能汽车大赛使我的水平又提了一下下,我是半路加进去的,起步晚,用的是旧车,队友也不怎么给力,软件都是我写的,硬件还好有兴磊帮了一下忙,还有大神孙鹏做好了一部分硬件,我是摄像头组的,经过三个星期的奋战,使小车跑起来了,好骄傲的说我是第一个那么早调出来的,让小车跑起来的,跑的还可以的,嘻嘻,也许mcu不一样,难易程度不一样,但是我感觉都差不多,主要是读历程,参考其他人的程序,要拿出时间来读别人的程序,读程序也有窍门的,在这里推荐notepad++这个软件,若再有更复杂的程序,像之后看的linux内核,推荐用sourceinsight软件,百度上都有破解版的。

经过小车的调试,我发现了学习学习单片机也要讲究效率了,库函数第一次进入我的视野,用库函数作为参考来写程序是再好不过的了。开始用飞思卡尔公司的32位单片机K60来调,感觉很爽,库函数都有人给编好了,还是中文版的,只要调用内部函数就行了,但是领导不让我用K60了,领导要用,好舍不得啊,看了两天研究好了的K60就这样不用了,主要是痴迷于她的强大,32位嘛,超频得达到200M把,没有继续研究,也不知道很多了,领导让我用飞思卡尔的16位mc9s12x128,这个有现成的智能赛车的历程,这是最好的了,但是调试的时候才发现,她最多超频到90M,而且ram有限,两个二维数组就over了,哎,抱怨了半天,只能改变算法才可以了,啃了三个星期终于有了成效。

流程主要是采集两边的黑线,对黑线进行二值化,对黑线进行滤波处理,计算中心黑线坐标,计算一场黑线的斜率,角度,用角度来控制舵机的打角,测速,用PID进行速度控制等等。但是我没有用无线来传输采集的信息,也没有用SD卡去储存信息,所以什么都是大约的,快期末了,也快比赛了,等到周末再去看看我的小车吧,都长毛了吧,哈哈,好久不去调了。

单片机的跨越也就是这样,一通则都通,内部资源都是相似的,就是有些单片机专门针对不同的领域而设计的,内部资源种类相似,数量,精度,控制方法不同罢了。用好库函数最好了。

还有考单片机初级工程师证书的经验,利用几天时间学习了一下51单片机的定时器,调了一个数码管的程序,题目好多都是汇编的,等到大三稍微研究一下把。

继电器还没玩过,知道原理,貌似给个高电平就ok了,彩屏也没玩过,暑假玩一下把。

没玩过的还有好多好多,时间有限啊。。。。。。。

在实验室还学习了VC编程,看孙鑫的视频看了两周,用MFC编了几个简单的框架程序,只知道了基本的原理,做项目还没有用到,貌似编写上位机可以用。很难感觉,挺麻烦的,研究微软的MSDN。

因自己的兴趣,买了一块arm11架构的开发板ok6410,开始研究嵌入式,这研究可是吃了不少苦,光搭建开发环境,就是交叉编译环境,安装虚拟机,安装linux系统,因驱动兼容性问题,又在虚拟机上安装xp系统,为安装双系统把自己的大学以来的所有照片视频数据弄没了!!!啊啊啊!现在想起来还生自己的气!为开发裸机程序,安装了好多好多的软件,像codewarrior for rvds,超级终端dnw,jlink,sd_writer ,axd debugger等等。

在学习裸机开发时,花了两个星期基本看完了三星s3c6410的芯片用户手册,调试了一下库函数里的各种功能,像通讯的uart ,i2c,SPI ,I2C,ADC,GPIO,clock,PWM,实时钟RTC, DMA,图像编解码,SD卡模块,TV模块,USB模块,LCD模块,中断模块,DMC模块好多,有好多都没有调出来,只是看了一下库函数,了解了一下它的功能而已。为以后写驱动程序打基础。

学习了在linux操作系统下,用类似dos指令去编程,去调试,苦逼的自己写makefile文件,自己编译链接,移植uboot,linux内核,文件系统,花了一周编译内核,最后也没有通过,又花了一周研究飞凌公司已经编译好的针对ok6410的内核,主要是看驱动编写,看了几万几万行代码,云里雾里到现在,只能以后有机会再看了。已经成功移植了wince系统,linux系统,还有安卓2.0,但是都是飞凌做好的,并不是自己编译的,有机会再学习一下把。

       在实验室学习,安装的软件好多好多,我的电脑开机速度不会低于2min钟,咳咳,c盘好满了哦。

       感觉在实验室最重要的是学会了怎样学习,怎样开发一个产品。

       学会了上论坛找大神讨论,上新浪爱问下载资料,百度文库下载资料,百度各种搜各种找,上博客找技术文章,各种破解软件的安装,各种软件的使用,在qq群里讨论问题,怎样与他人合作,怎样上网买零部件,怎样自己学习一个全新的设备。

最最宝贵的还是自己收集的资料和自己的学习笔记,这些都是越积越多的,今天没用,也许以后会有用的O~

在创新收集各种资料我加了一下有100多G了,再加上我的嵌入式的资料,有200多G了。

各种芯片资料,教学视频,论文,好多好多,我都有分类整理的,后来太多了就不管了。

挺期待暑假培训的,哥只能趁这个机会最后火一把了,大三就要考研了,离开好好的创新实验室了,呜呜~~~!!~~~

再次感谢创新实验室给我们提供的丰富资源,感谢各位帮过我的师哥师姐们,感谢与我合作的各位战友们,感谢各位老师特别是傅老师,杨老师的悉心教导~

 

 

 

 

 

 

 

 

 

 

 

0 0
原创粉丝点击