金牌会员
 
- 积分
- 1280
- 金钱
- 1280
- 注册时间
- 2013-12-14
- 在线时间
- 567 小时
|
出来工作也几个月了,我是非科班出身,学物理的,没有经过培训,换了两三家公司,终于找到了一家比较靠谱的,饱尝辛酸,有一点点的感悟,分享给大家,也算是对自己的总结吧。
看论坛里学生比较多,就先说下我的大学吧。
我大一开始接触51单片机,从郭天祥入门,大三开始学stm32,自己一点点摸索,非常艰难。
想告诉大家的是,大学学不学单片机其实无所谓的,如果以后想做嵌入式,最重要的两门课,C语言和模拟电路,微机原理也要好好学一下,如果以后做算法的话需要数学比较好,如果你C语言和微机原理学的好的话,学单片机非常非常快的,模拟电路可以为以后做电源,射频什么的打好基础。
有同学可能不削一顾,觉得C语言语法很简单,自己考试基本都90多分。实际上,我以我几个月的工作经验,告诉学弟学妹么,C语言的难度绝对超乎你的想象,我现在工作了,C语言的门都没摸到,学校考试的内容更是不用提了。
关于51单片机:
对于51单片机,学弟学妹可能都不屑一顾,觉得太简单,实际上,51真的不简单,学弟们普遍感觉,自己用51写过几句C代码,就觉得自己掌握51了,我敢说有的学弟们可能连51的手册都没看过(我当年就是这样),大家普遍用STC89C52入门,或者AT89C52什么的,但是,你真的看过它们的手册么,51的架构是什么样子的?你会用51的汇编么?你不会汇编的话肯定就不了解51的工作过程。你看过51的启动文件么?启动文件做了什么?编译器用做了什么?data,idata,xdata都是什么意思?怎么用?51的malloc怎么写?
51学好了的话,入门其他单片机肯定是分分钟的事情了,大家一定要把51学好,大学四年,掌握51就好了,不要赶时髦,不要怕周围的同学嘲笑,不要浮躁。
如何学习单片机:
我认为学习一款单片机的正确途径应该是这样的,首先去了解一下单片机的架构(比如stm32就是那个CM3权威参考指南),汇编指令集,熟悉一下这款芯片的汇编编程,然后去大致浏览一下芯片的数据手册,熟悉一下寄存器,然后开始用汇编或者C语言写程序,从IO开始,一点点到定时器,中断什么的,想看例程可以去单片机的官网去下载,X宝买个最小系统,没有的话去官方买评估板(官方评估板一般比较贵),这样才能从0开始。
这里不是说原子哥的例程不好,相反,原子哥的例程太好了,原子哥自己看完手册后,总结出来了自己写的教程。但是这样,就少了自己学习,感悟的过程,按照原子哥的方法,就算掌握了stm32,也很难掌握其他单片机,因为学其他的单片机资料只有官方的文档,官方的文档可不会像原子哥这么友好的用中文和大家好理解的方式来讲解的。
以后的发展方向:
这里不说行业问题,因为我也是小白,哪个行业好,我也不清楚,但是现在,嵌入式行业基本也在靠向互联网,物联网方向。就说专业方向,嵌入式两方面,偏软,偏硬。虽然分偏软和偏硬,但是也都要互相了解一点的。
因为非科班出身,电路基础差,我是做软件的,以后想做软件的同学,如果觉得单片机本身配置比较熟练了,但是不会把程序组织到一起,可以去学学操作系统,学学裸机架构方面的知识,消息机制(消息队列,数据结构中有讲),事件触发,系统节拍,状态机(这个很重要),非阻塞编程,任务怎么划分等等,裸机编程的话一般分为非实时,软实时,硬实时等等。
有条件的话可以去培训一下,我因为没有培训,走了很多弯路,才渐渐摸索出一些架构方面的知识。
硬件的话,不太了解,就不乱说了。
回头看看,写的还挺长,不知道有没有人能忍着看完,过一阶段打算将公司用的架构移植到stm32上,如果不涉及保密性的话会分享给大家。
|
|