STM32由于资料丰富、稳定、性价比高深得广大工程师和企业的喜爱。
现在随便在招聘平台上搜索单片机开发或者嵌入式开发,基本都要求会STM32。
我用STM32也有很多年了,基本上是围绕着F103、F030系列来做产品,对这个芯片的学习深有感触。
很多新手入门stm32都感觉很复杂,几百个寄存器,复杂的内核结构,详细的数据手册都几百页。
再加上软件是基于固件库开发,其中涉及到了大量的结构体、枚举、指针的应用。
今天结合自己经历和经验,来跟大家分享下自己曾经是怎么快速学会stm32的。
**
**
如果你不懂电路基础、不懂C语言、不懂51单片机,千万不要一上来就学STM32。
还是那句话:看起来你是走了捷径,最终你花的时间肯定更长。
Stm32的定位就是给工程师缩短产品开发周期用的,而不是给新手去学习单片机的。
因为固件库把底层的硬件驱动都写好了,你只需调库应用就行了,如果你没接触过51单片机,你可能压根都不知道单片机有寄存器的存在,而外设功能就是通过配置寄存器来实现的。
这种原理性的东西你不了解,后面每学一个外设,你可能都会产生很多疑问,为什么要这样配置?我想改配置怎么改?改了出现问题如何解决?
所以,如果按照正确的学习路径,从51到STM32,一个月的时间基本可以学完(每天8小时)。
那我总结最快的学习路径,在我以前文章有写,每个阶段学到什么程度都写的很清楚,并且给出了相应的教程和工具。
我第一个学的单片机是51,然后就参加工作了,工作中用到了stc和nxp的,那时nxp用起来也比较痛苦,一个32位的单片机要配置寄存器来用。
后面制定新产品方案的时候,老工程师推荐用stm32干,说开发周期快,价格也比nxp便宜。
然后我就开始去研究STM32了,其实也没有刻意去学习,就买了一块开发板(主要是想要他们的例程)。
我先分析了我这个产品需要用到哪些外设,比如说GPIO、定时器、USART、ADC、中断,后面看了有个DMA也挺爽就顺势研究了下。
我的研究方法是直接用例程先在开发板跑一下,看下效果。
然后我会自己改一下例程,看下改哪个地方分别对应什么功能,比如说例程是操作PA0引脚循环高低电平切换来让LED闪烁,那会改成PB1或者其他,还有定时器中断改成20ms,30ms分别测试下。
这一波操作下来我基本就知道外设怎么用了。
Ok,至于芯片其他功能以及内核结构我就先不研究了,因为暂时用不上,先把产品干出来完成任务再说。
前前后后就花了1周时间,产品需要的外设就全部实现了,剩下的跟单片机就没关系了,而是功能逻辑处理了。
看到这里,或许很多人还是不明白,我总结一下:
1.最好先学51单片机
2.Stm32不用系统学习,当做一个工具能用起来就行了。
3.通过产品去学习一款单片机是最快的。
我看到很多人学习stm32,有1年都学不会的,也有几个月都学不会的,看的那个揪心啊!
很明显学习方法和路径不对,最常用的就那么几个外设,看着视频1周完全可以学完。
学完后,做项目一脸懵逼,无从下手是正常现象。
这不代表你单片机没学好,而是你缺乏产品的思维,不知道怎么结合外设、结合代码把功能实现。
所以,学完外设直接就干项目,最好找个经验丰富的人带着你做产品,这样成长最快,自己瞎做你接触不到别人好的代码架构和产品的思维。
虽然闭门造车,代码随便写也能实现产品功能,但是功能复杂以后,终究需要一个好的架构来支撑,否则后面会出现很多BUG可能导致你程序无限重写。