过去的路
来博客园一个月了,都没敢尝试自己去写些东西,由于能力实在有限,写一些东西完全是为了鼓励自己总结过去,然后提升自己。
其实我就是人们眼中的非科班的编程人员,但是我也一直在坚持自己所喜欢的。我专业是生物医学工程,由于在学校的一些机缘巧合的机会我接触到了单片机,然后就陷入了,但是我并没有达到那种疯狂的程度,就是当我们开始做课程设计或是其他比赛时,我显得更加有方向和把握。51是我入门的第一款单片机,后面点我开始接触了ARM,开始了我的嵌入式编程的更加系统的学习,但由于都是在项目中学习,所以学得并不是很透彻。
我最经常遇到的一个问题便是,你那个专业怎么也学编程?其实很沮丧,但是我那个专业确实是有这一方面的要求,就是要求不需要太高罢了。前面说了很多,下面我就直接开始我学习单片机的一些经验。
当我第一次听到51单片机的时候我根本不知道是啥,也不知道是干什么用的,我只知道我找了很多理论的书抱着看,然后有一个研究生学姐跟我讲说要学习单片机,首先要先有一个开发板。然后在51开发板上我从点亮第一颗LED灯,接着是按键,慢慢的把单片机的各个功能模块依照着视频的讲解,自己在Keil下编写,然后下载到单片机去验证,这个过程是很好玩的,很享受的。但是这也不是说明我就学会了,我想至少是入门了,因为真正的考验是在运用中的,当自己要用这个小小的芯片去完成一个比较系统的功能时,就会发现自己学习的还不够了,第一个应用是做一个时钟系统,利用单片机控制步进电机实现时钟的功能,其实不难,但是我们当时做得并不是很完美。期间还用51实现超声波测距,循迹小车等。但是当时我的内心一直还是不平静的,因为我知道了51仅仅是入门,后面还有32,ARM等功能更加强大的单片机。
大三一开始我就又买了个mini的STM32(Cortex M3系列)开发板,学习的过程比51艰难多了,因为教学视频对不上号,而且各种寄存器的设置等等,让刚开始学32的我很是沮丧。而且刚开始根本就不知道怎么入手,虽然有了51的经验,知道先从IO口下手,但是由于32的编程有寄存器和库函数两个版本,我当时还在这里犹豫了好长的时间,最后打定主意主要学习库函数版本,因为简单,寄存器的设置等都封装好了,只要直接调用就行了,当知道了作用,再回头看寄存器的设置等也就更容易了。但是很遗憾的是我一直都没用过STM32做过项目。这里说一下,我学习单片机的轨迹,和我参加的比赛是分不开的。
大三下的时候参加了一个比赛要求用主办方提供的单片机,我当时就晕了,因为还要重新开始学一款单片机。由于有了前面两次学习单片机的经验,我也已经知道了如何快速的对一款单片机上手,所以当时也没有犹豫太多,就当时一股脑的扎进实验室了,开始比赛项目的准备。等我弄清楚了项目的要求,以及自己的任务后,就很盲目的投入,很多时候方向性的问题没有考虑,更别提跟硬件的沟通了,所以忙了一阵之后结果是什么都没实现。但我也从中收获了很多很多,作为一名嵌入式单片机的编程人员,我们首先要紧密的结合硬件,弄清楚硬件的配置后再在软件上实现。其实编程的过程从来没有我想象的那么简单,一些问题的出现都需要花很多的时间去排除错误。但是往往是在解决这些问题的同时,我们的能力得到了很好的提升,就着问题去思考,去寻找解决的办法。我在这真的是很感谢我当时的指导老师,是他教我将复杂的问题转化为简单的实现,有时候我们常常忽略了最基础的,比如IO的应用,并不是简单的LED和按键那么简单,可以说所有的输入输出IO口的调试,都是可以借用LED和按键来辅助调试的,因为直观;当然查看寄存器等等都是我们调试的一种手段。就这样一步一步,我在实战中提升了自己的能力,也收获了掌声。。。
其实不论学习什么关键是在于坚持。因为任何的困难都是自己找的借口,无论是网络,书籍还是身边的老师都会是自己很好的资源,要积极的学习。在此,我真心的很感谢实验室的所有老师,以及学长,学姐们对我的支持和帮助。