STM32CUBEMX使用说明

注意:最完整的STM32CUBEMX工具使用文档见官方的STM32CUBEMX手册,本文档仅作为对其的翻译和补充。

目录

STM32CUBEMX使用说明... 1

一、      STM32CubeMX工具的作用.... 3

二、      STM32CubeMX工具的安装.... 3

三、      安装X-CUBE-AI.... 4

四、      创建STM32的AI工程.... 6

4.1、芯片选型.... 6

4.2、硬件和软件参数设置... 12

4.3、AI配置.... 16

4.4、加载预训练好的神经网络模型文件... 19

4.5、配置工程参数.... 21

 

在介绍如何安装使用STM32CubeMX之前,先简单介绍下这个工具是用来做什么的。STM32CubeMX是ST意法半导体的STM32芯片的图形化配置工具,该工具允许用户使用图形化向导生成C初始化代码。

用python训练出神经网络模型后,我们可以通过STM32CubeMX工具自动生成指定STM32系列芯片匹配的C代码工程。

 

STM32CubeMX运行依赖Java,为避免使用STM32CubeMX是出现如下warning,建议安装64-Bit的JRE。

STM32CUBEMX使用 -- 对官方文档补充

 

Java的安装包路径:STM32CUBE\Downloads\jre-8u231-windows-x64.exe

STM32CUBEMX使用 -- 对官方文档补充

 

安装完Java运行环境之后,开始安装STM32CubeMX工具,安装包路径:STM32CUBE\Downloads\en.stm32cubemx_v5.4.0.zip。双击exe按照提示安装完成,打开STM32CubeMX。

STM32CUBEMX使用 -- 对官方文档补充

 

 

  1. 从最上面的菜单栏,依次点 [Help] -> [Manage embedded software packages]打开安装软件包管理界面。

STM32CUBEMX使用 -- 对官方文档补充

STM32CUBEMX使用 -- 对官方文档补充

 

 

2.选择[STMicroelectronics]卡页,点开[X-CUBE-AI]条目,勾选第一条,然后点击右下方 [Install Now]。开始安装AI相关的依赖库包,安装完成后close。

STM32CUBEMX使用 -- 对官方文档补充

 

鉴于en.DM00570145.pdf中已用STM32F7xx系列芯片为例演示,本文档用STM32F4xx系列的芯片为例演示。

4.1、芯片选型

打开STM32CubeMX工具,在中间深蓝色区域点击[ACCESS TO MCU SELECTOR],或者在上方菜单栏依次点击[File]->[New Project...]

STM32CUBEMX使用 -- 对官方文档补充

 

会跳到芯片选型界面

STM32CUBEMX使用 -- 对官方文档补充

 

在左边[MCU/MPU Filters]下滚找到[Artificial Intelligence]项,这里可以根据已经存在的神经网络模型文件分析网络需要的Flash和Ram资源。

勾选[Enable],会出现加载模型的界面,如下图:

STM32CUBEMX使用 -- 对官方文档补充

 

选择模型 [Keras],类型[Saved model],点击[Browse]。找到存放的模型文件。注意,这里模型文件路径和模型文件名称尽量不要出现中文字符,该工具的多处路径和名称都避免使用中文字符,以免出现异常。

STM32CUBEMX使用 -- 对官方文档补充

 

选好模型后,点[Analyze]。开始分析模型。

STM32CUBEMX使用 -- 对官方文档补充

 

分析结果会在右边显示。如果这里ram或flash没有显示出具体值,可以多操作几遍。

STM32CUBEMX使用 -- 对官方文档补充

 

我这个例子里的神经网络模型,需要99.38KB的flash和304.38KB的Ram。接下来我们要根据这两个数据和CPU主频等需求选择一款合适的芯片。

右边显示的是满足当前分析得到的数据的所有可选的芯片,左边栏可以根据不同的核,资料包及其他参数过滤。

比如我们计划选择M4的核,就可以在[Core]卡页下勾选ARM Cortex-M4

STM32CUBEMX使用 -- 对官方文档补充

 

然后,如果我们希望主频尽量的高,ram尽量大。可以在[Other]卡页中先将Freq拖到最大180,然后Ram变为对应的384。

STM32CUBEMX使用 -- 对官方文档补充

 

接着可以根据[Package]来过滤,[Package]卡页选择[LQFP176],这里也卡页选择别的依赖包。

STM32CUBEMX使用 -- 对官方文档补充

 

经过上述过滤条件,剩下有3款芯片可供选择。我选择最便宜的STM32F469IGTx。鼠标点中该条芯片信息即表示选中。然后点击右上方的[Start Project]

至此已芯片选型完成,创建了一个基于这款芯片的工程。

STM32CUBEMX使用 -- 对官方文档补充

 

工程建立后,先保存下工程。依次点最上方菜单栏的[File]->[Save Project],选择工程存放路径。这里工程路径不要出现中文字符!

STM32CUBEMX使用 -- 对官方文档补充

 

4.2、硬件和软件参数设置

4.2.1、设置串口的输入出输出端口

由于我的板子上把PD8,PD9分别连到了USART3的RX和TX,所以这里需要设置PD8和PD9两个管脚。

在Pinout&Configuration卡页,Pinout view视图的右下方有一个搜索栏,输入PD8,芯片视图中的PD8管脚会变成黑色闪烁。

STM32CUBEMX使用 -- 对官方文档补充

 

鼠标点中PD8,选择USART3_TX。同理将PD9设置为USART3_RX。

STM32CUBEMX使用 -- 对官方文档补充

STM32CUBEMX使用 -- 对官方文档补充

 

 

然后到左侧栏上方的搜索框输入usart3找到其对应的配置页面。

STM32CUBEMX使用 -- 对官方文档补充

 

配置USART3的模式为Asynchronous。此时,右边芯片视图中的PD8和PD9会变成绿色。表示设置OK。

STM32CUBEMX使用 -- 对官方文档补充

 

4.2.2、设置主频时钟

点击[Clock Configuration]卡页

STM32CUBEMX使用 -- 对官方文档补充

 

我们希望CPU的主频尽量的高,这里将HCLK(MHz)设置为允许的最大值180。改成180回车后,工具会自动开始计算其他的时钟频率。这时会弹出一个提示,点OK继续计算即可。

STM32CUBEMX使用 -- 对官方文档补充

 

4.3、AI配置

[Pinout&Configuration]卡页点击[Additional Software]按键,进入添加X-CUBE-AI相关软件的配置页。

STM32CUBEMX使用 -- 对官方文档补充

STM32CUBEMX使用 -- 对官方文档补充

 

 

勾选Packs栏下的STMicroelectronics.X-CUBE-AI->Artificial_Intelligence_X-CUBE-AI->Core后的选择框。以便加载NN模型和生成STM32 NN的依赖库。

STM32CUBEMX使用 -- 对官方文档补充

 

STMicroelectronics.X-CUBE-AI->Artificial_Intelligence_Application->Application栏,可以有三种AI应用程序选择。这里我们选[System Performance]

STM32CUBEMX使用 -- 对官方文档补充

 

不同的的选择对应生成的应用神经网络的代码不同。System Performance相对Validation的代码量较小,Template application没试过。System Performance可以评估模型性能。

选好后点击OK保存并退出。

此时启用了X-CUBE-AI包,[Pinout&Configuration]卡页下的左侧栏最下方会出现一个[Additional Software]条目。该条目下有一项STMicroelectronics.X-CUBE-AI.4.1.0,点击会出现X-CUBE-AI相关的配置页。

STM32CUBEMX使用 -- 对官方文档补充

STM32CUBEMX使用 -- 对官方文档补充

 

 

在Configuration视图下点击[Platform Settings]卡页,配置串口端口模式为USART:Asynchronous->USART3,与之前硬件配置时候的管脚配置匹配。

 

4.4、加载预训练好的神经网络模型文件

在Configuration视图下点击[+]按键,出现填写神经网络模型的界面。

第一个栏是给模型的名称,随意取,不要太长,不要是中文就行。

第二栏选模型类型:keras -> Saved model 。

第三栏点[Browse...]找到存放的训练好的模型文件。

STM32CUBEMX使用 -- 对官方文档补充

 

选好后,点击下方的[Analyze]按键,分析模型。

STM32CUBEMX使用 -- 对官方文档补充

 

这里如果你的模型文件路径或者模型文件名中含有中文字符,会卡在第一行后没法继续。

STM32CUBEMX使用 -- 对官方文档补充

 

然后在点击[Validate on desktop]

STM32CUBEMX使用 -- 对官方文档补充

 

4.5、配置工程参数

选中[Project Manager]卡页,[Project]配置页。

STM32CUBEMX使用 -- 对官方文档补充

 

[Toolchain / IDE]栏选择[MDK-ARM],因为我们需要用keil uversion打开生成的工程。[Min Version][V5]

Linker Settings 下的Minimun Heap Size 和Minimun Stack Size在自动算出的基础上再加个0。

STM32CUBEMX使用 -- 对官方文档补充

 

点击右上方的 [GENERATE CODE],生成工程成功。

STM32CUBEMX使用 -- 对官方文档补充

 

如果有出现 “... MDK-ARM Project generation have a problem”提示,可能是因为工程生成路径或者工程名称中有中文字符。

STM32CUBEMX使用 -- 对官方文档补充

 

工程文件夹下的MDK-ARM目录中存放keil工程。

相关文章: