
目的 STM32是意法半导体(ST)推出的主要基于ARM Cortex-M内核内核的一系列微控制器(MCU、单片机),包含多个系列:
![]() 整体上目前来说STM32系列微控制器性能、功能、价格、开发难易度、资料支持上都中规中矩,没有特别突出的,也没有特别特别短板的,用用还是蛮不错的。这篇文章就介绍下STM32系列入门所需的相关知识点。
在入门学习使用STM32系列微控制器前如果有下面两项知识技能那是最好(学习使用其它单片机也一样),当然如果没有也不是太大问题,可以边使用边学习嘛~
对于入门学习使用来说电路基础要求不多,了解点初中电学知识,然后在学习过程中能了解 上拉电阻 下拉电阻 的概念就差不多了。
编程语言的话目前来说只要掌握 C语言 就成,当然语言学习还是边用边学就成。稍微进阶点的话可以学一学 C++ ,毕竟更高级语言,开发起来会更方便快捷些。
使用开发ST的微控制器第一手的资料来源就是ST官网:
另外的ST还有一个本地化的中文网站:
![]() 型号选择 STM32系列微处理器型号非常多,对于入门学习来说的话推荐使用 STM32F103 系列和 STM32F4 系列的, STM32F103 系列在国内教程非常丰富, STM32F4 系列教程没有 STM32F103 系列多,但是性能强上不少,开发起来更加便利。
如果是开发过程中对芯片具体的选型的话可以在官网直接查询,也可以使用ST官方的选型工具 STMCUFinder ,该工具可以分门别类筛选具体型号、查看基本信息、下载文档资料:
![]() STMCUFinder 可以在官网搜索下载(包含windows、android、ios版本):
![]()
STM32的开发主要指的是通过程序实现功能,ST官方提供的开发方式来说从远及近分别是: 直接读写寄存器 、 标准外设驱动库 SPL 、 硬件抽象层库 HAL库 、 底层库 LL库 。四种开发方式各有优缺点,可以参考ST官方的测试与说明:
![]()
更多内容可以查看ST官方文档《STM32 库函数性能对比》,下载地址如下:
直接读写寄存器 开发是最慢的,可移植性最差,基本不推荐使用,只有个别对时间或是内存要求特别高、或者在写操作系统调度器时才需要直接读写寄存器; 标准外设驱动库 是ST最开始提供的库(国内的教程也很多是依据题库出的),现在已经被ST放弃了; HAL库 和 LL库 是近几年推出的库,结合STM32CubeMX使用非常方便, HAL库 性能较差、在STM32系列芯片中可移植性好, LL库 性能好、可移植性差。
目前来说推荐使用 HAL库 主开发,在时间或内存有要求的场合混合使用 LL库 。
开发工具主要指两块:STM32CubeMX和具体应用开发编程的工具(IDE)。
STM32CubeMX是一个图形化的用于配置生成STM32系列初始化代码的工具。使用该工具可以直观快速的完成项目的初始化,节省大量的时间。这个工具经过多年的发展目前还是非常好用的,可以直接生成代码给很多IDE用,(虽然也可以不用这个工具手动进行初始布置,但是能省事不是更好么)。STM32CubeMX可以在ST官网搜索下载。
IDE的话主流的有下面几个:
最近ST官方推出了新的IDE: STM32cubeIDE ,这个其实就是整合了STM32CubeMX和TrueSTUDIO,目前刚推出几个月,可能还存在一些问题,但是照以往经验来看,对于STM32的开发这个工具将会在未来成为主力:
![]() STM32cubeIDE 可以在ST官网搜索下载,包含Win、Mac以及几种Linux发行版的版本,可以参考下面链接:
程序调试的话方法工具蛮多,推荐使用 ST-LINK ,可以买ST官方的 ST-LINK V2 或者 ST-LINK V3 :
![]() 也可以买TB上那种十几块的U盘大小的 ST-LINK V2 产品:
![]() 两者使用是各有优缺点的:
如果手头没有仿真器的话也可以通过串口打印运行关键信息等其它方式来进行调试,不过效果可能差点,关键是没法一步步运行追踪。
STM32固件烧录不管是方式还是软件都挺多的,我个人一般通过UART进行烧录,工具的话推荐使用ST官方的 STM32CubeProgrammer ,该工具将几种烧录方式都整合在一个工具中,可以在官网搜索下载:
![]() STM32CubeProgrammer 还拥有中文的软件说明《UM2237_STM32CubeProgrammer软件工具介绍》,下载地址如下: http://www.stmcu.com.cn/Designresource/design_resource_detail/file/455015/lang/ZH/token/fa8266101a7f73ebffcb51c3beea9bc4 资料说明 STM32开发主要用到下面一些官方资料:
总结 这篇文章是对入门开发学习STM32系列微控制器所相关的内容做个梳理,如果有相关单片机开发经验的人员的话基本依据上面内容就可以进行学习开发了,如果没有其它开发经验的话可以买个带教程的开发板套件进行入门学习。 附图一张-STM32开发全家桶:
|