一、去背寄存器
千万不要去记寄存器,我做开发这么多年了,一个寄存器都记不住。
寄存器一般是我们要使用单片机外设的时候会去配置。
一流的方法是直接参考别人的配置程序。
二流的方法是看数据手册,最傻雕的做法就是去背寄存器。
二、去背汇编指令
除了一些在校大学生应付学校考试要背以外,我到现在为止,做过几十个项目都是用c语言,没用汇编做过一个项目。
很多人说还是有必要学,学了对单片机理解地透彻一点。
我想说的是你又不制造单片机,理解这么透彻干嘛。
单片机只是工具,90%的人都是用这个工具做应用,你理解透彻和我只会用这个工具,没任何区别。
三、以为C语言学习门槛很高
C语言小学生都能学会。
我没有跟你在吹牛逼啊,前端时间有一个大姐让我带他的儿子学习单片机。
他儿子才11岁,然后我拒绝了,因为在我的认知范围里,这么小很难学的会。
然后她说她儿子之前学了c++,有点基础,我当时都惊呆了,现在的学生真的是一个比一个厉害。
不过最后我还是让她慎重考虑下,毕竟我们培训的定位是那些学习完之后想找到工作的,我们课程也是以项目驱动去学习。
新手在学习c语言前期的时候,只要学习基本语法就可以了,来来去去就5条最常用的语句。
比如说if..else,switch, for,while, 赋值语句(=).
7个运算符:加减乘除,或运算、与运算、非运算。
4个逻辑关系符:||、&&、!=、==
3个最常用的数据类型unsigned char、unsigned char short、unsigned char long。
3个进制转换:二进制、十进制、十六进制
还有就是函数的定义和调用。
基本上掌握这些,你就能编写很多程序了。
学c语言是一个循环渐进的过程,不要一上来就像写很复杂的程序,再牛逼的大佬也是从点灯开始。
等你写多了,熟悉了,到时候再学习指针、结构体之类的。
因为你没有一定的基础时候,去学一些高级应用肯定是学不懂得。
只有等你碰到了只能用指针、结构体去实现的功能的时候,你才会深刻理解它们的作用。
四、总是因为记不住各种协议而烦恼
做单片机开发会经常接触各种协议,但是总体来说也就是:IIC、SPI、USART、单口通讯。
前期的话也先不要去学习USB,CAN之类的协议,这些一般只会用在细分的领域。
大家如果工作中碰到了,再针对性去学习。
大家真正只需要掌握IIC、SPI、串口、单片通讯就行了。
学习这个也很简单,直接搜别人的例程来用,先用起来,再根据程序的去理解这些时序图就简单多了。
这里没有说错啊,是通过程序去理解时序图,这个逻辑跟大多数人的思维可能是反的。
但是我个人就是这样看懂时序图的,也是我的经验,大家可以去尝试,并不一定适合大家。
五、纠结代码写得好不好
新手前期做项目写代码以实现功能为主,特别是51单片机,你代码写好了内存也未必够你用。
在你没接触过大项目程序开发的时候,你根本不知道代码的好坏,在功能上有什么区别。
反正都能实现功能对吧?
等你真正碰到一些大项目的时候,如果你代码水平不行,肯定是做不出来的。
代码量大了你Hold不住,不知道怎么去整合,整合完以后功能之间也有冲突。
最后好不容易整合好了,又发现移植性太差,可扩展性太差,万一项目经理让你增加或者改个功能,你就挂逼了。
这个时候就是你该去思考怎么样把代码写得更好的时候了。
因为你知道痛点在哪里了,在针对这个痛点去找解决的办法。
最好的方法依然是去参考,写程序比你厉害的人。
你再针对性去学习,比如说看我录制的那个程序架构教程。
我那个教程就是我这么多年产品开发当中碰到问题,再学习解决,最终总结出来的精华。
六、什么都想学成专家
很多新手在学习过程中碰到不懂的就想把那个知识点系统学一下,不学精学透不回头。
举个例子,比如说一个电路看不懂,就以为是自己模拟电路、数字电路基础太差。
然后去把模电数电系统学一遍,学着学着就学不下去了,然后就以为做单片机开发太难了,最后也就放弃了。
就像上面这种图,你去分析呗,等你真正吃透,人都老了。
关键实际产品开发直接用一个功放芯片就行了,又节约尺寸又便宜还稳定。
所以,除非你到时候去做芯片,做开发学这些还为时过早,也很少用到。
即便你系统学完模电数电,你再回过头去看当初看不懂的电路,我保证你90%几率还是看不懂。
因为你没抓住解决问题的核心。
这就是典型的走了弯路了。
正确做法是针对性学习,比如说这个电路你看不懂,那你首先要分析这个电路你是哪里看不懂。
是不懂某个元器件的工作原理,还是组合起来不懂?
这种可以去网上搜集一下相关电路看一下。
最好最快的方法还是请教懂的人,让他给你讲解一下。
不管是花钱还是你想方设法说好话白嫖。
别人给你讲半个小时啥都懂了,这样不比你系统学模电数电省时间嘛?
所以很多人花很长时间学不会单片机开发,就是走了太多这种弯路了。