单片机简单?你可能还不知道这些

那些认为"简单"的人,要么是老手,要么是新手。

老手是已经解决了那些复杂的问题,新手是还没遇到那些复杂的问题。

现在开发板太多了,以及Arduino的出现,提供了成熟的开发工具和丰富的例程,随便找个开发板,把例程都跑一遍,就以为自己已经掌握了单片机开发的精髓。

其实这是一种错觉,对于做产品来说,单片机的工作量,可能只占到10%左右的工作量。

例程再多,也只能作为我们学习的起点,真正的提高,还是要在项目实践中不断总结和领悟。

我工作了2年左右,甚至还有类似的误区,公司项目都能胜任了,觉得单片机不过如此。

后来,碰到了很多棘手的项目,我老实了,东西怎么都学不完,虽然外设和协议就那么几个。

但是这些东西都是通用的。

举个例子,IIC协议可以用于EEPROM、OLED屏、调光芯片、陀螺仪等等,成百上千种传感器…

你可能熟悉IIC协议,但不一定熟悉芯片或者传感器,这些都是需要额外去学习的,每换一个领域的产品,芯片都不一样。

除了IIC协议,还有SPI也是同样,是标准协议,应用也是非常多的…

光这个就够喝一壶了。

实际远远不止这个,这些协议接口的目的,是读取传感器或芯片的数据,读出来以后,有些还要经过一些算法的处理,这也是难点之一。

不管单片机也好,协议也好,算法也罢,都是会随着产品动态变化的,我们没法通过某个教程,就能完全学会所有的,最多就是触类旁通的效果,后面随着你经验越来越丰富了,你学习起来的效率也会越来越高。

你这时可能会说,哎好烦啊,难道就没有通用的东西?不用老是学来学去。

还真有,我做了研发10几年,也慢慢领悟到了,对于偏软件来说,编程水平是工程师的核心能力,通俗来说就是程序架构设计的能力,这是大多数产品能通用的。

编程水平包括了思维和代码。

思维是给你一个功能,你有没有实现的思路,你的思路够不够好?

怎么才算好?

我觉得是能实现功能的同时,又能保证后期功能的扩展性和移植性。

这其实非常考验你的经验,就像下棋,走一步,看三步。

为什么说是考验你的经验,而不是思维?

因为我一直觉得,程序是调出来的,不是想出来的,都是从V1.0……V10.0这样迭代出来的。

而且,平白无故的创新,非常难,你都没经历过,怎么可能想得出来?

大多数优秀的工程师,都是从模仿别人的思维开始。

比如,我第一次接触TI蓝牙协议栈代码时,上面跑了个OSAL系统,我惊呆了,单片机的程序还TM能这样写?

OSAL本质其实还是轮询调度,只是把对数据或者单片的操作转化成各种任务,各种事件,真正做到有条不紊。和较为复杂RTOS系统比起来,OSAL实现起来更加简单,而且占用资源也少,Flash大概3-4K的样子。

说单片机简单的,可以去研究下。

后面我也把这个系统修改了以下,移植到更复杂的STM32项目上,做很多功能确实爽多了,比如需要内存动态分配,定时器这些,简直是做按键消抖那些的神器。

不过,相对来说,我还是比较喜欢用我第一代的程序架构,也是轮询,但比osal还简单一些。

这个架构我还特意录过一套教程在小破站,也可以直接找我安排。

以上仅仅是软件层面的知识,还有仪器的使用,以及后面走全栈的话,要还学习硬件,只能说10年磨一剑,都算是快的了。

最近发现,很多私聊我学单片机的小伙伴,99%的人都走了弯路,所以我花几个小时,写了一篇保姆级学习路线^ ^

单片机怎么学?保姆级学习路线(附教程+工具)icon-default.png?t=N7T8https://blog.csdn.net/2401_86645590/article/details/141437874

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值