前言

我从毕业工作到现在,已经整整两年了,和STM32打交道也已经有三年了,这期间,碰到的问题不少,解决的问题也很多,而且也体会到了使用STM32实实在在做产品开发,同时也有了自己的开源项目,要我自己评价的话,那就是对于STM32,对于嵌入式软件开发,算是入门了

网上针对STM32的教程很多,非常优秀的教程也不少,但是,大多数教程,都只是在告诉你要怎么做,很少有教程会详细分析,为什么要这么做,我个人认为,知道为什么,要比只知道怎么做重要的太多,毕竟,你不可能永远都只用一种芯片,一套工具或者一套外设

所以我希望通过自己的几篇文章,和大家分享一下自己这几年攒下来的知识,希望可以有效地帮助想学习相关知识的朋友,当然,文章中免不了会有一些错误,大家可以直接指出,一起交流

单片机、MCU、STM32?

一开始学过51单片机的朋友可能会混淆一些概念,认为所谓的单片机就是指51,简单来说,一块包含处理器(CPU),存储器(RAM和ROM),包含IO和各种外设的芯片就可以叫做单片机,所以STM32也是单片机的一种,而MCU其实就是指的单片机

STM32是意法半导体推出的基于arm cortex-m内核的MCU,因为其价格便宜,性能强大,外设丰富,现在很多产品都会有它的身影,同时网上资料,教程也特别丰富,入门门槛也不高,相对而言,现在还是很火的

怎么学

实践是检验真理的唯一标准,要想学好STM32,动手是绝对少不了的,你不能一上来就抱着好几个G的教学视频,连芯片长什么样子都没见过,就直接把视频刷一遍。所以,请确保你至少有一块开发板,如果想直接了解更深的话,可以选择买一块核心板,买一些外部元件,自己用杜邦线连接或者直接自己画PCB,因为嵌入式开发从来都不是可以绝对的分为软件和硬件的。

看什么资料

芯片手册——了解一块芯片最直接的方式,芯片手册会介绍芯片的资源,会教你如何控制一块芯片,通过芯片手册,你还可以了解芯片一部分的内部结构,可以知道芯片是怎么运行的

Cortex M3(M4)权威指南——这是任何一个使用Cortex M系列芯片的人,我都极力推荐一定要仔细看完的一本书,这本书详细介绍了Cortex M系列内核的设计以及使用

HAL库、标准库?

可能有部分朋友初学STM32的时候会疑惑,我该用HAL库还是用标准库?我的建议是,都不用

如果你是抱着学习的目的,那我建议直接使用寄存器操作,这样可以让你理解更加透彻,当然,实际开发中,很少有不使用库直接操作寄存器的,学习过程也不可能一直只操作寄存器,但是,你需要理解,你使用的库它干了什么活,如果问题发生在库中,你有没有能力尽心分析并解决

然后再说到HAL库和标准库,这个其实也没啥可纠结的了,ST已经不维护标准库了,新学习如果使用库的话毫无疑问是要选择HAL库

选择什么IDE

支持STM32开发的IDE有不少,主流的有keil,iar也有使用gcc加外部编辑器,trueStudio,platformIO等等,对于初学者而言,选择一个好用的IDE可能会使学习曲线更加平滑,因为不用理会工程配置,编译的各种问题

但是,还是那句话,如果你是抱着学习的目的,不管选择什么IDE,我都建议你要弄清楚在你的程序开发过程中,IDE帮你做了哪些工作,我建议你要去了解IDE的各个选项代表的意义,去阅读IDE的手册,对于编译,链接这些过程,都要有了解

结语

第一篇文章,主要介绍了几个概念,还有几个刚入门的朋友可能会问的问题,算是做一个大体的介绍吧,后面如果想到还有什么问题,会随时更新这篇文章