大家好,我是无际,无实战不理论,下面是我从事单片机编程10年的终极程序。
对于怎么提高单片机编程能力,作为一个过来人,我感触很深!
工作的前3,4年,做过一些产品,自以为自己的水平还算可以了,直到去了一家创业型迷你公司…
公司研发配备了一个硬件,同时缺一个软件,正好我弥补了这个坑。
面试的时候,老板给我看了一些物联网主机,问我能不能做?
我一脸懵逼,完全没底,但是当下形势不好找工作,即便不会也要硬撑,淡淡回了一句:没问题,然后把我会的跟老板说下大概实现方法,不会的一律不提!
同时,我还为自己留了一条后路,补了一句:这种产品我们前期去做可能会周期很长,前期都要评估下双方,我觉得先从小产品做起,你认可我技术,我也认可公司了,大家再深入合作。
老板连连点头:嗯嗯嗯。
我内心想的是:能混一个月工资是一个月吧,一开始就给我打boss,估计很快就要GG了。
就是这个迷你公司,成为了我编程能力大幅提升的一个转折点(我离开的时候,这家公司换了更大的地方,也组建了工厂,研发也达到了6个人,也算对得起公司了)。
进入这家公司后,前期那些产品都做的很顺利,都在掌控之中。
但是纸始终是包不住火,后面公司规划要做一款物联网主机,带APP控制。
在规划的时候,心里大概都有底,知道程序怎么去写。
反正代码怎么写都能实现功能,应该问题不大。
但是真正去做的时候完全不一样,代码怎么写都不满意,还有实现了这个功能,写另外一个功能的时候发现跟别的功能有冲突。
还有物联网主机,都是需要实时跟云平台进行数据交互的,比如说心跳这些,再加上其他乱七八糟的数据,我怎么能够把这些数据都完整地接收到,不丢一个字节?
除了这些,还要处理其他语音,按键,LED特效之类的功能。
还要跟app联调,有时安卓能实现,苹果不行,代码又得想办法解决。
这个项目几乎让我崩溃,一想到这么多功能就头疼。
但是没办法,只能硬着头皮死磕,一方面对公司负责,一方面我也想提升下自己的技术。
做这个项目,我每天上班基本第一个到公司,下班最后一个走,困了就喝一瓶红牛或者咖啡扛着。
解决这些技术上的问题,我主要用了2个方法:
1.网上搜每个问题的解决办法
2.翻阅以前公司老工程师写的代码,看是否有同样的应用场景,他们是怎么写的。
过程是非常烧脑和煎熬的,不断学习,不断尝试,我的发际线就是那个时候变稀疏的。
熬了2,3个月,终于把产品熬出来了,不过有点可惜的是,APP不稳定,很多技术没解决,比如说离线推送。
物联网产品就是这样,光自己做再好,云平台APP不给力也白搭,做硬件的公司又不可能自己去做云平台和APP(成本太高)。
不过这个产品带给我的收获是巨大的,说转折点一点都不过分。
做中大型的产品,如果你做不出来,肯定是忽略了2个方面:
1.程序架构
2.程序算法
程序架构是最重要的,会直接决定你产品的稳定性,好的程序架构肯定是基于模块化编程的。
程序算法排在第二,程序算法决定你产品的执行效率,不过如果你产品对实时性要求不是在us,ms级别的基本可以忽略。
想提升算法能力比架构要难很多,不同的产品算法也不一样,有些还要求你有很强的数学计算能力,这块我自认自己还做的不够。
那面重点来啦!!!
无际绝对不是吹完牛逼就走的人,还要给各位小伙伴提供解决办法!
程序架构这块我在19年正好录了一套视频教程,本来想付费的,后面一忙起来,懒得去折腾,干脆无偿分享给大家。
里面讲了很多C语言高级语法的实际应用,比如说写任务调度、队列、回调函数等,也提供了很多实际产品会碰到的痛点,比如说多按键多功能检测,LED特效、串口接收数据处理方法。
想要源码和视频文件的可以找我,懒得下载的直接去小破站找我名字看就行。
算是带大家走个捷径吧,都是自己多年心血总结出来的精华,可遇不可求!
大家安排个双鸡不过分吧?(可怜无助表情)