STM32Cube家族的软件工具,从选型到开发/调试,到代码二进制烧录,选项字节操作,到运行监测,覆盖了全部的开发过程。它们各自有功能侧重,也有功能重叠,但是合在一起,就提供给STM32开发者,一个无缝的开发平台。
前面三个,STM32CubeMX,STM32CubeIDE、STM32CubeProgrammer,更加偏向开发的通用性。即,无论你的应用使用哪颗STM32系列,用于什么开发,都会用上的工具。
其中STM32CubeMX年岁最久,也是被最广泛使用的。它集成了芯片选型、引脚分配和功能配置,中间件配置,时钟配置,初始代码和项目的功能。
STM32CubeIDE,是今年4月份最新推出的,ST原厂开发和支持的IDE。一方面它继承了以前Truestudio的那一套基于Eclipse CDT 开源框架的开发、调试环境,支持众多Eclipse插件、拥有更高级的代码检阅、调试功能;一方面,把STM32CubeMX给集成了进来,作为和其他厂家IDE最大的一个区别亮点。
虽然CubeIDE可以在开发过程中,把代码烧写到STM32中进行调试,但是对STM32的片上闪存、片外闪存,选项字节的各种读、写、擦除操作,支持最到位的还是属STM32CubeProgrammer。
其中STM32CubeMX和STM32Cubeprogrammer,出来对所有STM32芯片系列,和所有应用的通用支持之外,还有一些对特定应用的支持,比如STM32Cube.AI就是基于STM32CubeMX的插件功能,来把训练好的模型部署到STM32上;还比如在安全固件升级和安全固件安装,即SBSFU和SFI操作里,STM32CubeProgrammer就启动了代码加密,HSM实例化等功能。
因此,前三个工具,除了它们的通用性外,还有应用相关的特性。
后面三个STM32CubeMonitor的变种,一个是RF,专门支持STM32的无线系列,现在是STM32WB产品。包括做用户应用、RF stack,FUS本身的OTA,测试两个WB板子之间数据收发误帧率,对BLE和OpenThread设备,收发ACI命令,进行快速的应用原型开发。
第二个,UCPD是专用于配置、监测、和分析TypeC和Power delivery应用
第三个,Power,用于低功耗测量的,需要搭配ST的PowerShield板工作。显然后面三种PC工具,都是和具有应用相关。
我们在第一期的介绍中,不会具体来讲某个工具如何使用,而是给大家一个总的picture,让大家知道我们的STM32Cube 工具有哪些,分别是做什么。具体工具的使用,我们会结合具体芯片上的某个主推应用来在后续几期来讲解。
一、STM32CubeMX通用功能:从选型到初始工程建立
我们先来回顾一下STM32CubeMX的通用功能。以2019年7月,刚刚推出的STM32CubeMX版本5.3为例。
STM32CubeMX集成了STM32 Finder,因此可以在此进行芯片的选型或者评估板的选择。在MCU/MPU选型的页面,除了经年常用的根据内核、产品线、外设、flash/ram存储空间大小,筛选目标芯片之外,随着STM32对GUI和AI的支持,根据所用AI模型,压缩比;根据GUI应用中要支持屏幕的像素尺寸、所采用的存储功能拓扑结构,都可以作为目标芯片筛选的输入参数。MCU交叉选型,是最近新添加的功能。 当要把手中存量的非STM32项目切换到STM32平台,这个功能可以帮助你选择合适的STM32芯片来替换当前芯片。
GUI和AI选型,我们会在对应的GUI和AI应用中,结合STM32CubeMX的使用来具体讲解。
芯片选好后,要进行开发的下一步就是对芯片引脚的功能进行配置。由于STM32的每个GPIO都被多个外设功能复用,并且同一个外设功能还可以映射到不同GPIO,因此当引脚资源比较紧张,这里的引脚分配工具可以帮助用户在多个选择中进行分配。某个引脚用于什么功能分配好了,比如PD9用于UART3的接收引脚 ,那么UART3的具体配置,比如波特率、采用同步模式还是异步模式,以及相关中断、DMA都以在此以图形界面的方式进行配置。
STM32支持丰富的开源和ST自主知识产权中间件,比如来自开源社区的FreeRTOS,FatFS,mbedTLS;ST自己的USB主机和设备协议栈,TouchGFX等。
因此除了对外设各种功能的工作模式和参数进行配置, 当我现在的应用需用用到FreeRTOS,我不仅可以勾选并使能上该组件,还可以对FreeRTOS进行配置,比如内核配置可以设置是否支持抢占、系统嘀嗒的间隔;可以在这里以图形化界面的方式创建信号量、互斥量、创建任务等。所有这里的配置,都会影响到最后产生的初始化代码。
(如何使用和配置FreeRTOS、USB协议栈这样的中间件,根据大家的需求反馈,后续会考虑推出具体讲解课程)
STM32Cube不仅是一个包罗万象的配置工具,它也是一个开放的工具。在目前最新的5.3版本,我们可以看到它已经支持若干来自ST的功能插件,比如X-Cube-AI,X-Cube-MEMS。关于AI这个插件的使用,会在十月份推出相关技术视频,请大家留意。如何使用MEMS插件,在我们的STM32 IoT课程系列的第三部分:节点端项目开发,有详细介绍。
最后一切配置完成,就可以在用户指定的路径生成出初始化代码和项目工程。这就是胶片中左面部分的整个配置流程,从选型,到最后的初始化项目生成。
在进行芯片选型时,对应的数据手册、应用文档随着显示,可以一键下载到固定目录。同样,各STM32系列对应STM32Cube MCU固件包,ST自己的功能插件,甚至STM32CubeMX工具本身,它们的新版本,都可以在STM32CubeMX里设置来自动联网检查,并且提供给用户一键下载。这是非常便利用户的一个小功能。
二、STM32CubeIDE : 包罗万象 + 开放STM32CubeIDE,是ST今年,2019,4月份,推出的STM32Cube工具家族的最新成员。是ST开发、维护并支持的原厂IDE。一方面,它基于Eclipse的CDT框架,集成了GCC、GDB等免费的编译器、链接器;一方面它通过Eclipse插件接口,开放对众多第三方功能插件的支持。
STM32CubeIDE的前身来自被ST收购的TrueStudio,它在代码浏览、查看,高级调试、诊断分析上有很多好用的小功能。我们后续会结合具体的芯片,比如G0和L4上的具体应用案例来展开。
STM32CubeIDE目前集成了STM32CubeMX,未来还将把STM32CubeProgrammer集成进去。目前的STM32CubeIDE作为一个完整独立的集成开发环境,是可以烧录应用二级制到目标STM32芯片中的;未来STM32CubeProgrammer的加入,会从对STM32的选型字节、片内、片外闪存的便利读、写访问来进一步加强。因此我们说它是个包罗万象、all-in-open的原厂支持的开发环境。同时Eclipse插件接口又体现了它的开放性,即:胶片里从插件接口出来的三条示意性的箭头。