嵌入式物联网开发从入门到精通会经历些什么过程?

简单用一句话概括这个过程就是:“一看就会,一做就废!”这个状态对我来说很痛苦,而且很容易劝退,但是我要时刻警告自己坚持下来,所有的事情,别人能做的,我也能做,只是我现在不知道或者不熟练而已。要逼迫自己学会苦中作乐,你所遇到的每一次BUG都是增长经验的宝贵机会。

总结一下我入门以来遇到的困难,困难解决的办法以及解决后分析自己犯过的错误和认知的盲区。

1、面对开发板感觉它在操控我,而不是我在操控它,一个有思想的牵线木偶从崩溃到反击的过程

我接触的第一块儿板子是网上购买的开发板,供自己学习用,基本操作和流程都有网上视频可供参考。这个阶段最大的困惑是,我按照老师的步骤只要细心操作基本不会出现问题,但是不能越界。这里的越界就是按照自己的想法实现一些功能,人的本性就是不管做什么都想做自己,不想做牵线风筝。更过分的状态是我可能只能复制粘贴,自己按照例程重新敲一边都会出现error或warning。此刻我感觉板子里面有某种排斥我的神秘力量,他不是人为可以改变的,我有很长一段时间都将板子束之高阁。

这个过度时间很长,每次我会急躁一段时间然后平复心情以后将问题复制下来到网上寻找答案,刚开始可能连问题都不会问,因为我也不知道问题出在哪里,后来我想到了学校做实验学习的控制变量法,简单来说就是你出现问题后将做过的变化都还原,然后重新改变单一的操作,找到具体哪一步出现了问题,然后再到网上寻找答案。学会问问题后,我发现其实我看上去入门了,但是知识盲区还是很多,这种情况不是细心可以解决的,虽然也能一点一点积累,但是太消耗精力。所以我决定返回去系统学习C语言和基础的数据结构,废寝忘食的利用工作之余的花了半个多月时间,对编程语言和结构有了完整的基础认知。再加上每天坚持刷一些面试相关的题目,就这样我面对开发板才感觉是我再操纵他而不是他在操纵我。

2、创造机会在工作中接触驱动板子的事情

我总是想尽可能的快速完成自己的工作,然后找机会融入做板子的同事们那里,听他们探讨问题,然后有意无意插一句,以前我的策略是问一些低级的问题,激发他们好为人师的特性,给我讲解,但是讲解完了就没下文了,我也没有太多收获,只是多了几个在自己面前趾高气昂的家伙。然后我就慢慢改变策略,轻蔑他们进而激怒他们。有一次他们在讨论用触发继电器用红外模块还是超声模块,我上去就用很傲慢的语气说:“用什么模块,你讨论没有用,得做一下试验试试啊!买个现成得模块,都用串口收发数据,验证一下灵敏度和测量范围哪一个更符合要求呗!切!!”他们开玩笑得说:“你很懂啊,要不你来”我很激动和认真得说:“可以啊!”就这样我名正言顺的接到了第一个嵌入式的活。

这个事情的驱动芯片用的就是我学习过的STM32的芯片,我就更有信心将它搞定了,后来发现有点盲目自信了。做嵌入式开发讲究先实现简单功能然后再逐步丰富,这点我懂,所以我开始用我手上有的库函数和例程在主函数main中编写了一个循环驱动他们给我的板子上带有的继电器,采用的是直接给GPIO口置位和复位(写1和写0)的方法,然后再加上延时函数做吸合的循环。这些逻辑上和程序上都没有什么问题,而且我没用多长时间就实现了。但是诡异的事情又发生了,当我引入一个变量试图控制继电器吸合的频率的时候,居然不起作用了,我又把程序复原依然不起作用,我反复弄了半天,继电器都安然不动。在我能用的办法都用尽以后我就去请教我得同事了,把这个过程给他描述了一下,他帮我检查了一下电路板,没有问题。然后看来一下程序也没有发现问题。因为起初我的描述误导了他,他也排查了很多不相关的问题,实在不知找什么问题的时候,他看了一下我KEIL中设备的配置,发现我用的芯片型号和配置的型号根本不一样,他说我的程序根本没有烧录进去。后来他给了我相关的例程,我在哪个基础上操作就不再有问题了。第一次能烧录进去这个事情很诡异到现在也没弄明白怎么回事儿。

从接手到实现当初轻松的说的试一试就知道的过程我还遇到很多困难比如说串口链接错误,硬件链接的是串口3,程序写的是串口1;串口与芯片没有共地导致不能正常收发数据;使用的库函数与芯片型号不一致;数据格式不对导致数据超范围,有符号整数范围小于无符号整数;数据结构逻辑错误,导致循环重复进行。

有些错误是粗心造成的低级错误,有些是以为懂了其实不懂的认知盲区,总之嵌入式开发可以跟着老师把知识点过一遍并能够复现以达到入门的阶段,但是如果要精通还需要把那些知识点在大脑里反复推敲,在手头上反复实现,当遇到困难可以分析问题解决问题。知识是学不完的,但是查找知识,并利用知识解决问题的方法学会后剩下的就是时间和经验的积累了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值