一、什么是STM32
STM32是ST公司设计的一系列以ARM Cortex-M为核心的32位微控制器
ST公司,即意法半导体集团(STMicrolectronics,简称ST),1987年成立·。由意大利的SGS微电子公司和法国Thomson半导体公司合并而成。
在当下的32位微控制器中,STM32在工程师和市场中崭露头角,深受喜爱。
二、基于ARM Cortex内核的32位MCU和MPU
在上图,我们可以看见当下基于ARM Coertex内核的32位的MCU和MPU。之后我将使用Cortex-M3系列的STM32F1xx进行开发学习。
图中所示STM32芯片型号的含义在后续会详细说明。
三、STM32的应用场景
STM32在生活中应用广泛,主要分布在物联网、工业自动化、汽车和消费电子以及医疗设备等领域。
STM32因其灵活性和强大的处理能力在市面上深受大众青睐
四、STM32系列MCU的命名规范
本次学习使用的STM32芯片是STM32F103ZET6,实物图如下
前面介绍了,STM32是一系列基于ARM架构的32位微控制器,既然是一系列,那么就说明有很多种。那么如何去对他们进行命名,有什么规则,不同芯片的型号中各个字符都代表什么含义呢?
请看下图,关于STM32、SM8的产品型号含义图表
由图可知,各个部分都有不同的含义,一个STM32系列的MCU芯片型号主要由 家族+类别+功能+引脚数+闪存容量+封装方式+温度范围 构成。
关于图中封装部分的各个含义,可自行去查,这里就不在过多赘述。其中本次使用的QFP封装含义是四侧片平引脚封装,由上面的芯片实物图也一目了然。
对于此次使用的STM32F103ZET6型号芯片,根据上图可知(已用绿色方框标注),即 基础型144引脚的512kb闪存的四侧扁平引脚封装的温度范围在-40~+85℃的STM32芯片
五、STM32的开发方式
STM32当下的开发方式主要有三种,即基于寄存器开发、基于标准库开发和基于HAL库开发。
他们各自有各自的优缺点,总结图如下
1、基于寄存器开发
基于寄存器开发需要深入硬件底层,有利于初学者学习STM效率更高,代码执行效率高,但开发起来难度较大。基于初学者的学习需要,本次将会使用基于寄存器的开发方式。
2、基于标准库开发(本次不用)
基于标准库开发,即所有底层的一些功能模块都用相应的库进行封装,更加通用于不同的STM32的开发,代码移植更容易。但同时会屏蔽一些硬件信息,不利于初学者学习,且ST公式已经停止对标准库的更新,不利于后续新产品的开发。
3、基于HAL库开发
HAL库是ST公式主推的STM32开发方式,且开发工具持续更新,力度大。相比于寄存器和标准库都具有更高的开发效率,移植更加容易。只不过这样也很不利于新手学习知识。
4、最终的选择
基于上述情况,本次STM32学习将同时基于寄存器开发和HAL库的开发
一方面,选择基于寄存器开发更有利于初学者深入学习STM32知识;另一方面,选择基于HAL库的开发更有利于我们快速上手STM32的开发,提高开发效率。
基于以上两点,取其精华去其糟粕,实现双管齐下的效果。不过需要注意的是,学习难度可能相对较大,需要努力坚持。
六、STM32的开发工具
当前,STN32的开发工具主要有keil MDK、IAR、STM32CubeIDE以及近年来的工具新星Clion。其中,前两个是国内老牌的主流的STM32开发工具,同样也是各有优缺点。
1、Keil MDK(收费)
目前国内主流单片机开发工具,历史悠久,调试功能强大,网上资料多
通用IDE,兼容市面上大部分单片机
由于偏向硬件开发,软件方面做的较弱,代码编辑能力弱、联想功能较差
尽管收费,但咱也有机会免费使用这款工具进行STM32开发。
2、IAR(收费)
目前国内主流STM32开发工具
兼容大多数单片机
代码编辑能力弱
3、STM32CubeIDE(免费)
ST官方推出,STM32开发友好
基于Eclipse工具链,界面现代化
仅限STM32,不支持其他单片机
相对Keil更耗电脑CPU资源
后期基于HAL库将会使用到
4、Clion(收费)
Jetbrains系列IDE,他家做过JAVA、python等IDE,非常好用
但近年来才推出的STM32开发工具,需要插件,网上资料较少,尚不完善
目前使用的人不这么多
5、最终选择
之后的学习期间,我主要使用Keil,且还会配合vscode进行开发,其中
Keil -- 编译下载调试
VScode -- 编码
在进行HAL库的学习时,还会用到STM32CubeMX,进行图形化配置。
后续将频繁使用到Keil MDK,所以这里先放个下载地址。
Keil MDK的官方下载地址:点击此处进入