能详细地讲讲stm32该怎么学吗?

Posted 无际单片机编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了能详细地讲讲stm32该怎么学吗?相关的知识,希望对你有一定的参考价值。

现在一说到嵌入式、单片机,很多人想到的可能是STM32。

因为STM32的市场应用实在是太广了,我们在招聘平台随便搜嵌入式/单片机工程师,都要求最好会STM32.

当然,一款单片机的火爆绝对不是空穴来风。

我自己也用STM32开发过很多产品,客观地说确实比大多数单片机用起来要省心。

主要体现在以下几点:

  1. ST把复杂的东西封装了起来(寄存器配置),使得我们直接调用固件库就能轻松使用。
  2. 芯片比较稳定,不会有乱七八糟奇奇怪怪的问题。
  3. 不同系列兼容性强,固件库通用性强。

到目前为止,我做了开发近10年,现在最喜欢用得单片机依然是STM8/STM32.

但凡用STM32做产品,效率都很高,因为代码框架都是复制粘贴,剩下的就是完成产品功能。

如果你像我这样,自己写了一套通用性比较强的程序架构,至少能缩短30-50%产品代码的开发周期。

Ok,下面来聊聊stm32该怎么学?

这里只分享我亲身经历过,并成功的方法,我没做到的绝对不误导,我能做到的,按照我的方法你也一定可以!

STM32和51单片机不一样,51单片机我一般要求无际单片机编程的学员要相对深入地学习。

说白了就是要搞懂如何通过配置寄存器去使用单片机外设的,这对我们理解单片机和一些别的功能芯片都有很大的帮助,比如说LCD驱动芯片、时钟芯片、存储芯片等等。

大多数芯片都是需要配置寄存器去实现芯片特有的功能,我们核心是理解这个,其次就是通过数据手册去看每个寄存器每个位对应什么功能。

而学习STM32则需要一定的技巧,否则你会有走不完的弯路,别人学半个月,你学1年,差距就是这么大!

新手最容易走弯路的有以下几点:

  1. 深入研究寄存器,以为用寄存器开发就很牛逼
  2. 看不懂数据手册,就以为学不会
  3. 以为把STM32的外设都学完才能做产品
  4. 看得多,实践得少。

学习STM32,我总结出来的核心就4个字:循环渐进

不要一下想把STM32的内部资源吃得透透的,会让你吃不了兜着走。

很多都是通过开发板去学习的,开发板基本上把STM32每个外设资源都利用起来了。

其实很多可能你工作10年也用不上,比如USB、以太网、FSMC、SDIO、CAN。

这些对新手来说也是比较难的,很多如果你没写过一定的代码量理解起来也很困难,在你经验不足的时候学习周期会更长,不划算

而且实际产品开发,跟开发板还是有挺大区别,实际产品需要考虑成本尺寸多因素,同样一个屏驱动,一般产品不会用开发板的方式去做。

我认为前期新手只需要学习以下几个外设就可以了:

GPIO、systick、定时器、NVIC、EXTI、串口、DMA、ADC。

除了外设以外,还需要掌握常用协议:

IIC、SPI、单口通讯。

学完这些,学习STM32的任务也算是完成了,剩下的外设工作/项目需要再针对性学习。

那接下来的任务呢,就是不断通过STM32去做项目,比如说我们无际单片机编程带学员做的网关。

虽然硬件看起来没什么东西,但是精华都在程序里。

大家如果有兴趣去拆解下大厂做的产品,基本硬件没啥东西,但是功能还挺丰富,这样可以有效降低批量出货的风险,毕竟硬件一出问题分分钟赔到破产。

我们这个主机整个程序分为三大板块:

  1. STM32外设
  2. 自己写程序架构
  3. 产品功能程序

程序架构是贯穿整个项目的,而不是某个文件的代码,其中涉及到很多考验你编程水平的代码,比如指针、结构体、枚举、队列、回调函数、链表、任务管理等等。

如果通过开发板,我们一般只能学会STM32外设,学不到程序架构、产品思维,更别说提升自己编程水平。

而这些往往才是企业需要的,听到耳朵起茧的项目经验就包含了这两项能力,而不是你会用什么单片机。

所以,很多人虽然把STM32的外设都能用起来了,但是感觉还是什么都没学会?

其实,就是你没把你学的东西落地,没通过它们做出实实在在的东西。

即便做出来了,也感觉不是很完美,感觉很不专业,你写的代码都是你认知水平内的。

想提高,就必须向做得更好的人,更有经验的人学习。

当你真正做过一个中型以上的项目,做过几年开发,你就会发现,单片机屁也不是,就是个工具而已。

随手一个单片机过来你都能得心应手,游刃有余。

现在更是如此,原厂/代理商提供外设例程,提供技术支持,你只需要懂复制粘贴,就能把单片机外设用起来。

最后总结:

新手学会用单片机的外设以后,学习的重点绝对不再是单片机,而是怎么通过这个工具去做项目。

核心的东西,是通过项目练出来的,不要闭门造车,多向大佬看齐。

以上是关于能详细地讲讲stm32该怎么学吗?的主要内容,如果未能解决你的问题,请参考以下文章

stm32中的2个ADC怎么同时使用.能同时接32个模拟通道吗

怎么在keil5里面添加stm32的库,求大神给详细步骤,谢谢

大家好,,我在用stm32做平衡小车,在平衡过程中,,单片机会自动复位,,不知道该怎么解决,

stm32控制步进电机,单轴的,发指定个数的脉冲(根据角度不同),stm32的定时器该怎么设置,要用到几个定

keil怎么把程序烧录进stm32

stm32中跑freertos,请问在该板子上能运用fopen()之类的C库函数吗?