我对编程的兴趣源于黑客…

没想到最后竟然走了单片机开发的路线,或许是现实不允许我有梦想。

黑客的成长过于漫长,而我当务之急是找份工作糊口。

我并不是计算机专业,临近毕业对编程也一窍不通。

第一次自学的是java,学完基本语法,好像懂了,又好像啥都不懂。

通俗点讲,就是做项目毫无思路。

后面接触到了单片机,深入了解后,发现这个编程简单,有java基础学c语言也贼快。

就是电路比较复杂,特别是模电,还好后面发现并不需要太深的模电功底。

果断买了块开发板,按着教程顺藤摸瓜,一个多月基本把开发板上的功能都实现了一遍。

历史总是惊人的相似,虽然单个外设功能都会用,但一做项目就一脸懵。

后面又做了一个智能小车项目,买了配件,也没视频教程,就看商家提供的教程死磕。

最后又自己独立写了一遍,做完以后明显感觉自己水平提升了。

主要有几方面的提升:

1.学会看别人的项目代码了

这个能力特别重要,虽然看的过程比自己写还痛苦,实际工作中也经常要去看别人写的代码。

刚开始公司也不会让你去研发产品,会让你维护老产品,改代码。

后面你想提升,也需要有这项能力。

2.编程思维

也就是实现功能的思维,这个也是非常重要的。

如果你没做过这种功能,最好的方法就是学习别人的实现的思路。

一般某种功能,你做过了,下次做就懂了。

这个只能不断通过项目去积累,在开发板上学不到。

3.编程水平

懂实现的思路和你能用代码写出来又是两码事。

我的办法还是先模仿别人的代码,然后分析他这样写有什么好处。

过程也是比较痛苦的,但是随着你经验的积累,后面会越来越轻松,最终达到望眼欲穿的高度。

做完智能小车不久,我就找到工作了。

刚开始接触最多的是STC51和NXP的单片机。

工作了2,3年左右,基本大多数的单片机产品我都能把代码独立写出来。

那个时候感觉自己已经很牛逼了,单片机编程太简单不能满足自己了。

直到后面去到一家做导航的公司,有涉及到GPS、菜单、雷达检测等功能。

我才知道自己的水平有多渣,才知道以前做的产品都太简单了。

这家公司让我的水平也提升了不少,以前一直不知道多级菜单怎么做,从那以后知道了。

主要还是看老工程师代码学出来的,掌握看懂别人代码的能力很重要,能贯穿你整个职业生涯。

可以说那1年不到的时间顶我前面做2,3年。

有时候不是说你做的越久,水平越厉害,关键还是看你周边有没有高手可以学习。

你在公司做1年,基本对公司产品就很熟悉了,都是同类型的,可能改改电路改改代码就是一款新产品了。

呆久了,对你来说基本都是重复工作,水平提升也很缓慢。

这是我第一次水平有较大的提升,也重新刷新了对单片机编程的认知,并没想象简单。

第二次是后来跳槽到一家做物联网网关的公司,有语音、菜单、无线数据软解码、OTA、4G、Wifi之类的功能。

这应该是我有史以来碰到过最复杂的一个产品了。

类似于我们无际单片机编程实战课程里的第三个项目。

只是为了很多基础差的学员能快速上手,我把一些产品功能简化了,尽量留下最常用最核心的东西。

虽然做了这么多年,但是让我独立去做这个产品还是很吃力的。

主要是功能太多了,脑子就容易乱,不知道该怎么整合。

做这个项目之前,我还把以前上班那些老工程师的代码又重新研究了一下,看有没有什么能用的东西。

就这样,一个地方拼凑一点,最后再慢慢消化创新形成了自己的东西。

这个项目我大概做整整一年,最后还是没做稳定,因为那个时候第三方云平台都不成熟。

主要是底层协议有漏洞,还有app不是很给力,导致用户体验感很差。

比如做离线推送功能,总是有很多型号的手机推送不了的。

所以,做物联网的产品,很难做稳定就是这个原因。

涉及的东西太多,不是硬件稳定就行,还得看云平台和做app的经验是否足够丰富。

再加上联调都是远程沟通,很多细节很难理解到位,开发周期也长。

这个项目对我的成长是最大的,就是有点费红牛。

只要没特别的事,每天早上我基本都是最先到公司,公司也是初创公司。

老板每次看到我都很感动,这么上进的员工不多了。

其实我是对这个项目很感兴趣,一直想做这种中大型项目,就是没机会。

我和大家的想法其实是一样的,就是想尽快让自己具备独立做项目的能力,不管大小项目。

有时候,我经常在想,如果第一份工作那2年,就能接触到这种项目并有人带。

或许我2年就能达到别人5年甚至以上的水平。

再后面,就是接触了蓝牙协议栈之类的开发,有了前面的沉淀以后,研究起来轻松多了。

蓝牙协议栈的系统算是我目前接触到比较好的非RTOS了。

所以,我决定把它精简以后,移植到STM32上面来,以后为我所用。

虽然之前也写过一个经过批量验证的程序架构,但毕竟还是简陋了一点。

比如说队列功能,只能入列和出列字节数据,如果能传输任意数据类型就更灵活了。

这个架构也是开源的,并在19年随便录了套视频,有兴趣可以去看看,对编程水平提升还是有挺大帮助。

教程已上传各大平台,直接找无际单片机编程就有了,全网同名的。

最后总结:想快速提升自己编程能力,还是得不断通过项目积累,但也是有捷径可走的,就是跟资深工程师做项目,同样是积累,效率天差地别。

我是怎么提高单片机编程能力的?相关推荐

  1. 怎么提高单片机编程水平?

    大家好,我是无际,无实战不理论,下面是我从事单片机编程10年的终极程序. 对于怎么提高单片机编程能力,作为一个过来人,我感触很深! 工作的前3,4年,做过一些产品,自以为自己的水平还算可以了,直到去了 ...

  2. 提高PLC编程能力的6种电路,新手必学!

    目前使用频率最高的PLC编程语言是结构化文本和梯形图,对于没什么基础的技术人员,从梯形图开始学习PLC编程是最快捷的,不管什么品牌的PLC,其梯形图的结构都和实际电气控制回路神似.下面,我们就推荐几种 ...

  3. 如何学好单片机编程?学好单片机的基础是什么?

    大家好,我是无际. 最近几个推文都比较烧脑,今天水一篇轻松的,免得大家头发越来越稀疏. 在我即将毕业的那年,我一直很羡慕学校学计算机专业的同学. 他们的未来充满了前景,工作几年拿个几万块,而且上限也高 ...

  4. 嵌入式牛人 | 这些单片机编程思想超硬核

    来源:面包板社区,整理:晓宇 微信公众号:芯片之家(ID:chiphome-dy) 01 裸编程是什么? 先声明一个概念,裸编程,指的是在裸机上编写程序,裸机,在单片机领域就是指带着硬件的单片机控制系 ...

  5. 一位嵌入式工程师,硬核单片机编程思想!

    (一)裸编程是什么? 先声明一个概念,裸编程,指的是在裸机上编写程序,裸机,在单片机领域就是指带着硬件的单片机控制系统,不要想歪咯. 在裸机上编程,就犹如在一片荒地上开垦,任何一锄头下去,都会碰到硬生 ...

  6. 单片机工程师需要掌握什么?单片机编程培训哪里有?

    大家好!我是无际,在网上看到很多帖子,随手想写一篇,打发一下自己的时间! 我是一个老工程师了,所以和大家分享一下跟单片机相关的看法. 一般知道单片机的,都是对单片机有兴趣的,想做一些很酷的智能控制产品 ...

  7. 搬上小板凳,听嵌入式大牛讲解硬核单片机编程思想!

    来源:面包板社区,整理:晓宇 微信公众号:芯片之家(ID:chiphome-dy) 01 裸编程是什么? 先声明一个概念,裸编程,指的是在裸机上编写程序,裸机,在单片机领域就是指带着硬件的单片机控制系 ...

  8. 当了12年大学教师,跟大家聊聊嵌入式工程师,硬核单片机编程思想

    当了12年大学教师,跟大家聊聊嵌入式工程师,硬核单片机编程思想 摘要:没有思想的裸程序就如一副人体骨架,有个人形,但没有人样,骨骼之间的关节都是靠胶水或拉线连接起来的,生硬而呆板.假如给骨架包上皮肉, ...

  9. 如何学习单片机编程?

    如何学习单片机编程?我是一位单片机爱好者,对于如何学习编程,还是深有体会的. 首先,要具备有单片机方面的基础知识.我在校学过8051单片机汇编语言和FORTRAN语言,再就是微机原理和单片机工作原理, ...

最新文章

  1. 《JAVA与模式》之适配器模式
  2. 【C 语言】数组 ( 指针数组用法 | 命令行参数处理 )
  3. 简单数据分布分析及python实现
  4. 正则表达式变量名命名的规则_如何简单有效地提高代码质量?修改变量名即可...
  5. 古风登陆html,再祭古风扬 文/凌霄一羽
  6. Python 数据科学入门教程:TensorFlow 目标检测
  7. 前端系统化学习【JS篇】:(二)Javascript、变量和值的简述
  8. 9个开源自动化测试框架,质量保证测试工程师用起来
  9. 食品安全事件曝光严重,SPC软件的应用刻不容缓
  10. 分享一些视频加密播放技术业内知识
  11. 第七篇:A133 Android 10 触摸提示音过大
  12. 社交网络算法在金融反欺诈中的应用
  13. OSChina 周四乱弹 —— 大光头与地中海并行,格子衫共沙滩裤一色
  14. Sublime Text 3 使用心得
  15. 192.168.1.0/24
  16. vs2017/2019无法登陆:我们无法刷新此账户的凭据,解决方法(亲测可用)
  17. 国内外大数据可视化分析产品点评
  18. 解决windows的挖矿木马
  19. Android 报错A/libc: Fatal signal 6 (SIGABRT), code -6 in tid *** 解决
  20. 蔚来被勒索225万美元/ 马斯克称只要找到「傻子」接班就辞职/ GitHub与微信合作…今日更多新鲜事在此...

热门文章

  1. 别乱提交代码了,看下大厂 Git 提交规范是怎么做的!
  2. 计算机视觉领域如何从别人的论文里获取自己的idea?
  3. 雷军22年前写的代码 你见过吗?
  4. 宽度优先遍历(BFS)
  5. 两阶段提交(Two-Phase Commit)
  6. VUE.JS优势,初识。框架以及库的区别
  7. 基于深度学习的特征提取和匹配方法介绍
  8. 卷积神经网络如何处理一维时间序列数据?
  9. 只用一张训练图像进行图像的恢复
  10. Syncfusion教程:在Xamarin.Forms中创建数据输入表单 (3)