我的嵌入式学习历程

2014年秋,我踏入了大学校门。进大学头一个月不是马上就开始上课,而是跟着学生会在学校里转转了解校园,然后就是在教室里听无聊的入学教育。在这期间我发现学校有这么几个有趣的地方:
1.机器人队
2.车队(玩方程式赛车)
3.飞思卡尔
4.创新实验室(玩无人机)
当时参观这些地方的时候感觉里面的人都好厉害啊,居然能让机器人自动在地上跑来跑去,还有巡线小车。当然会飞的无人机最吸引人了。于是我就了解了一下怎么样才可以加入他们。
半个月后,学校的百团大战开始了。在此有必要介绍一下百团大战,所谓百团大战就是学校的学生会和社团开始招新,他们在校园里骗大一的新生加入他们。当时我想参加机器人队,不过我落选了。然后退而求其次进了创新实验室,也就是玩无人机。进去才知道,原来飞机不是他们自己做的,他们真的只负责玩。我一下子兴趣就没了一半,不过他们给我指了一条明路就是让我知道了控制这些机器人或者小车跑的都是单片机,而要想给单片机编程就必须先学会C语言。

于是我在学校图书馆里借了一本宋岩写的一本C语言的书开始学习。这本书真的很好,虽然我忘了它的名字但是它让我从一开始就透彻的理解了机器以及编程的本质。我用了两个月的时间吧这本书读了两遍,并且亲手把书上的每一行代码敲进电脑并运行了一遍。然后收获颇丰,学编程跟学骑自行车是一样的,不能光看别人怎么骑,要自己也骑上去试试,要自己摔几次才能学会。两个月我从抄别人的代码都超不对到能准确无误的抄对别人的代码,这个过程是让自己能读懂代码。然后在抄的的过程中可以改别人代码的不足,这个过程就加入了自己的思考。最后就是自己可以用程序解决一个小问题来锻炼自己独立编写代码的能力。通过以上三步走的方式,我在C语言方面已经走在了前面。

2014年11月,我花了120块钱买了第一块开发板,是一款比较全面的51单片机的开发板。虽然照着教程了解了一点,但是一个月下来我只学会了点灯和数码管的静态显示,对数码管的动态扫描始终不得要领。

时光转眼来到2015年夏天,这才真正开启了我的嵌入式学习之路。我凭借扎实的C语言基础成功通过了学校机器人队的面试,在那个炎热的夏天和十几个人在学校机器人队的地下室开始了暑假集训。我只用了一个半月的时间就学会了51和stm32的库函数开发。虽然说是培训,其实是自学自练。
培训分为三个阶段:
11天学会51单片机基础,并独立完成8个编程训练任务。
一个星期了解基础的硬件知识,包括AD软件的使用,原理图的绘制,pcb的布线,焊接和做线。
20天学会stm32库函数开发,并独立完成6个编程训练任务。

培训介绍后,每个人对训练任务的完成效果则提现了每个人的能力,有一部分人完成的差就被淘汰了。
有人会问,11天学会51单片机可能吗?我的确做到了。这时就不得不提到祥哥和他的视频,郭天祥的11天学会单片机的教学视频给了我很大帮着,另外那8个编程认为更是关键所在,流水灯任务学会了IO的输出,按键任务学会了IO输入,以后的其他认为分别涉及到中断,定时器,串口,iic,屏幕等等。最后的认为这是把这一切结合起来的大任务。整个过程由浅入深很适合新手,给嵌入式路上打下了坚固的基础。
嵌入式就是要和硬件打交道,所以硬件知识很有必要,第二阶段也至关重要。
有了前面的基础,学习一个更复杂的单片机也显得不那么难了,还是先点灯,按键,中断,串口,定时器,iic,spi,can等等
好啦,今天就先写到这里,有时间我会把我的学习的部分资料分享出来。下面是一些单片机的资料
复制这段内容后打开百度网盘手机App,操作更方便哦 链接:https://pan.baidu.com/s/1ilZhs-Df03W9DxDaYi8ESg 提取码:r9o6

到2015年10月份,由于机器人实验室需要处理图像数据我第一次接触到了树莓派,从此一发不可收拾的喜欢上了Linux。最开始我连给树莓派装系统都不会,大概折腾了一个星期才重要成功的登录到树莓派的桌面系统当中。然后尝试用C语言给树莓派写第一个程序Hello world。

至今我仍然记得那个令人发指的vi编辑器以及树莓派的英式键盘把我搞得狼狈不堪,当时靠着最后一丝丝意志在百度中遨游,解决了许多自己从未接触过的古怪问题,终于发现其实给Linux写程序并不是一定要用VI,在windows的编辑器中编辑好代码在树莓派中编译也是可以的。

交叉编译,理解这个概念我花了很长时间。可能知道2018年毕业参加工作我才真正的了解,当时我为了实现交叉编译居然跟着教程交叉编译了Linux内核,关键是配置内核的时候用了Linux内核最原始的配置方法,就是每个参数都需要选择一遍的那种。可以想象。
。。那天下午我几乎抓狂。几百个选项终于选了一遍结果编译的过程中不断报错,然后我可能会再一次的选一遍参数。最后才了解到,居然有kconfig这种东西,我再一次的无语。。。。

就这样我走上了Linux之路:
vi编辑器
Make
Linux系统编程
Linux驱动编程
经历了几年慢慢的积累,虽然还不是特别的精通,但是仍然积累了很多的知识。

猜你喜欢

转载自blog.csdn.net/BLUCEJIE/article/details/104709074