我是怎么提高单片机编程能力的?

发布者:genius6最新更新时间:2022-12-16 来源: zhihu关键字:单片机  编程能力 手机看文章 扫描二维码
随时随地手机看文章

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

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

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

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

第一次自学的是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年随便录了套视频,有兴趣可以去看看,对编程水平提升还是有挺大帮助。



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

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


关键字:单片机  编程能力 引用地址:我是怎么提高单片机编程能力的?

上一篇:关于单片机应用系统架构的几点见解
下一篇:想从事单片机工作,C语言要达到什么水平?

推荐阅读最新更新时间:2024-10-13 04:49

单片机PWM控制输出电路
电子发烧友为您提供了单片机 PWM 控制输出电路,输出电路的电流在4~20MA之间。希望对您的工作学习有所帮助。其具体电路图如下所示:
[单片机]
<font color='red'>单片机</font>PWM控制输出电路
Qt跨平台数字化压力测量分析监控系统的设计与实现
在应用物理学科的“数字化压力测量”实验装置中,使用了模拟电路,数字电路,传感器与单片机等学科技术知识。为了完成数据采集与分析,单靠单片机技术所构成的硬件系统架构,虽然可以做到实时的监控,但不利于数据处理的深化与更加深入详细分析的表达,数据的记录也会带来误差,为了解决这些问题,让学生能更好的领略到数字化时代的知识,在完成数字化压力测量检测仪的基础上,提出本课题的设计与实现。 PC机具有强大数据处理,图像显示以及实时监控的能力,利用PC机的这些特点,同时编写友好的应用程序来实现数据的采集与分析,具有特殊意义——能够提升整套测试系统的处理能力的上位机得以呈现。 Qt提供的C++应用程序开发框架,可以轻松实现“一次编写,随处编译
[测试测量]
Qt跨平台数字化压力测量分析监控系统的设计与实现
51单片机的基本功能
单片机的发展先后经历了4位、8位、16位和32位等阶段。8位单片机由于功能强,被广泛用于工业控制、智能接口、仪器仪表等各个领域,8位单片机在中、小规模应用场合仍占主流地位,代表了单片机的发展方向,在单片机应用领域发挥着越来越大的作用。80年代初,Intel公司推出了8位的MCS-51系列的单片机。 51单片机的部件 MCS-51单片机的逻辑部件,包括一个8位CPU及片内振荡器、 80514B掩膜ROM、87514KBEPROM、8031无ROM、特殊功能寄存 器SFR128BRAM、定时器/计数器T0及T1、并行I/O接口:P0、P1、P2、P3;串行接口:TXD、RXD;中断系统:INT0,INT1。 基本功能 1.8位
[单片机]
基于单片机的采集模块研究
1. 引言 脉冲电表是目前电力系统用户侧较为常见的一种电子电量表计。对于远程电子抄表系统,要实现对脉冲表输出脉冲的可靠、精确计量。本文研究探讨了对于脉冲表可靠脉冲捕捉、脉冲计量,特别研究了脉冲电表信号输出线路的断线报警、掉电数据存储等关键问题,并对区域脉冲表群抄表需要的现场总线进行了研究,提出用CAN总线为数据通信的脉冲电表群的模块化解决方案。 2. 脉冲采集模块设计 CH1脉冲采集的主要任务是对CH2 CH3脉冲电表输出脉冲的实时、准确计数,CH4是所有电量统计的基础。脉冲采集模块CH5的好坏直接影响整个系统的可靠性和CH6准确性,因此在整个抄表系统中占据着CH7重要的地位。 2.1 脉冲采集板的结构 采集板的具体结构如图
[单片机]
基于<font color='red'>单片机</font>的采集模块研究
C504单片机在步进电机控制方面的应用
    摘要: C504是德国SIEMENS公司生产的单片微控制器,文中介绍了C504单片机在步进电机控制方面的应用,给出了利用C504的资源优势,经过一定的扩展来对步进电机进行控制的控制系统结构及方法,另外,该控制系统还具有人机对话功能和较高的性能价格比。     关键词: C504 步进电机 CCU 步距角 步进电机是一种脉冲电机,它是一种能将脉冲信号转换为角位移的数模转换器,可广泛用于无需反馈控制而要求有精确位置的场合,为了改善步进电机的工作特性以及减少硬件电路的连接,近几年来多采用单片机对其控制,但由于各类单片机的功能、容量和价格不同,因而其性能和成本也各不相同。鉴于C504单片机在电机控制方面的独特
[工业控制]
Small RTOS51实现基于8位单片机的温控器设计
目前,8位单片机在测控领域和智能化电子产品应用中仍占有重要地位.而应用嵌入式实时操作系统(ERTOS)会对8位单片机的软件开发带来极大方便。在此简要介绍嵌入式实时操作系统及其在程序设计中的优越性,重点介绍了适合于小RAM单片机的嵌入式实时操作系统Small RTOS51,以及基于8位单片机的硬件和软件的设计方法和过程。 1 嵌入式实时操作系统Small RTOS51简介 嵌入式系统已成为当今的热门话题之一,从消费类电子产品到各种工业设备,嵌入式系统已渗透到日常生活的各个角落。对于嵌人式系统,一个重要的特征是实时性,即在确定的时间内完成规定的功能,并能对外部异步事件做出正确响应。确保系统的实时性,需要软硬件配合来完成
[单片机]
模拟风扇控制电路(单片机C程序设计)
/* 模拟风扇控制电路 1、定时设置每按一下定时值在0分---2分----4分---6分----8分--10循环 2、主电机工作方式有三种,A、PWM为三分之一 B、PWM为二分之一 C、PWM为三分之二; 3、显示第一位显示风类,第二三四位动态显示定时时间; 4、摇头电机每30秒正转30秒反转; ================================================== */ #include reg51.h #define uint unsigned int #define uchar unsigned char unsigned char code table ={0x3f,0x06,0x5b,
[单片机]
AT89C51单片机电机转速测量系统仿真
单片机电机转速测量系统仿真统采用单片机中T1计数器对转速脉冲进行计数。定时器T1 工作于外部事件计数方式,对转速脉冲计数; T0 工作于定时器方式。每到1 s 读1 次计数值,此值即为脉冲信号的频率,根据式( 1) 可计算出电机的转速。转速检测装置的软件系统主要包括: 测速主程序、数据处理子程序和显示子程序。单片机上电后,系统进入准备状态。首先进行初始化,然后读取脉冲数据进行运算,将转速显示在LCD上。需要这款仿真及C语言程序的爱好者可从文章配图左上角网址上了解。 该单片机电机转速测量系统仿真仿真采用测频法“M法”测量电机转速。即在一定测量时间T内,测量脉冲发生器(替代输入脉冲)产生的脉冲数m1来测量转速,计算式如下:n=6
[单片机]
AT89C51<font color='red'>单片机</font>电机转速测量系统仿真
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved