STM32CUBEMX使用说明
注意:最完整的STM32CUBEMX工具使用文档见官方的STM32CUBEMX手册,本文档仅作为对其的翻译和补充。
目录
- STM32CubeMX工具的作用
在介绍如何安装使用STM32CubeMX之前,先简单介绍下这个工具是用来做什么的。STM32CubeMX是ST意法半导体的STM32芯片的图形化配置工具,该工具允许用户使用图形化向导生成C初始化代码。
用python训练出神经网络模型后,我们可以通过STM32CubeMX工具自动生成指定STM32系列芯片匹配的C代码工程。
- STM32CubeMX工具的安装
STM32CubeMX运行依赖Java,为避免使用STM32CubeMX是出现如下warning,建议安装64-Bit的JRE。
Java的安装包路径:STM32CUBE\Downloads\jre-8u231-windows-x64.exe
安装完Java运行环境之后,开始安装STM32CubeMX工具,安装包路径:STM32CUBE\Downloads\en.stm32cubemx_v5.4.0.zip。双击exe按照提示安装完成,打开STM32CubeMX。
- 从最上面的菜单栏,依次点 [Help] -> [Manage embedded software packages]打开安装软件包管理界面。
2.选择[STMicroelectronics]卡页,点开[X-CUBE-AI]条目,勾选第一条,然后点击右下方 [Install Now]。开始安装AI相关的依赖库包,安装完成后close。
鉴于en.DM00570145.pdf中已用STM32F7xx系列芯片为例演示,本文档用STM32F4xx系列的芯片为例演示。
4.1、芯片选型
打开STM32CubeMX工具,在中间深蓝色区域点击[ACCESS TO MCU SELECTOR],或者在上方菜单栏依次点击[File]->[New Project...]
会跳到芯片选型界面
在左边[MCU/MPU Filters]下滚找到[Artificial Intelligence]项,这里可以根据已经存在的神经网络模型文件分析网络需要的Flash和Ram资源。
勾选[Enable],会出现加载模型的界面,如下图:
选择模型 [Keras],类型[Saved model],点击[Browse]。找到存放的模型文件。注意,这里模型文件路径和模型文件名称尽量不要出现中文字符,该工具的多处路径和名称都避免使用中文字符,以免出现异常。
选好模型后,点[Analyze]。开始分析模型。
分析结果会在右边显示。如果这里ram或flash没有显示出具体值,可以多操作几遍。
我这个例子里的神经网络模型,需要99.38KB的flash和304.38KB的Ram。接下来我们要根据这两个数据和CPU主频等需求选择一款合适的芯片。
右边显示的是满足当前分析得到的数据的所有可选的芯片,左边栏可以根据不同的核,资料包及其他参数过滤。
比如我们计划选择M4的核,就可以在[Core]卡页下勾选ARM Cortex-M4。
然后,如果我们希望主频尽量的高,ram尽量大。可以在[Other]卡页中先将Freq拖到最大180,然后Ram变为对应的384。
接着可以根据[Package]来过滤,[Package]卡页选择[LQFP176],这里也卡页选择别的依赖包。
经过上述过滤条件,剩下有3款芯片可供选择。我选择最便宜的STM32F469IGTx。鼠标点中该条芯片信息即表示选中。然后点击右上方的[Start Project]。
至此已芯片选型完成,创建了一个基于这款芯片的工程。
工程建立后,先保存下工程。依次点最上方菜单栏的[File]->[Save Project],选择工程存放路径。这里工程路径不要出现中文字符!
4.2、硬件和软件参数设置
4.2.1、设置串口的输入出输出端口
由于我的板子上把PD8,PD9分别连到了USART3的RX和TX,所以这里需要设置PD8和PD9两个管脚。
在Pinout&Configuration卡页,Pinout view视图的右下方有一个搜索栏,输入PD8,芯片视图中的PD8管脚会变成黑色闪烁。
鼠标点中PD8,选择USART3_TX。同理将PD9设置为USART3_RX。
然后到左侧栏上方的搜索框输入usart3找到其对应的配置页面。
配置USART3的模式为Asynchronous。此时,右边芯片视图中的PD8和PD9会变成绿色。表示设置OK。
4.2.2、设置主频时钟
点击[Clock Configuration]卡页
我们希望CPU的主频尽量的高,这里将HCLK(MHz)设置为允许的最大值180。改成180回车后,工具会自动开始计算其他的时钟频率。这时会弹出一个提示,点OK继续计算即可。
4.3、AI配置
在[Pinout&Configuration]卡页点击[Additional Software]按键,进入添加X-CUBE-AI相关软件的配置页。
勾选Packs栏下的STMicroelectronics.X-CUBE-AI->Artificial_Intelligence_X-CUBE-AI->Core后的选择框。以便加载NN模型和生成STM32 NN的依赖库。
STMicroelectronics.X-CUBE-AI->Artificial_Intelligence_Application->Application栏,可以有三种AI应用程序选择。这里我们选[System Performance]。
不同的的选择对应生成的应用神经网络的代码不同。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相关的配置页。
在Configuration视图下点击[Platform Settings]卡页,配置串口端口模式为USART:Asynchronous->USART3,与之前硬件配置时候的管脚配置匹配。
4.4、加载预训练好的神经网络模型文件
在Configuration视图下点击[+]按键,出现填写神经网络模型的界面。
第一个栏是给模型的名称,随意取,不要太长,不要是中文就行。
第二栏选模型类型:keras -> Saved model 。
第三栏点[Browse...]找到存放的训练好的模型文件。
选好后,点击下方的[Analyze]按键,分析模型。
这里如果你的模型文件路径或者模型文件名中含有中文字符,会卡在第一行后没法继续。
然后在点击[Validate on desktop]
4.5、配置工程参数
选中[Project Manager]卡页,[Project]配置页。
[Toolchain / IDE]栏选择[MDK-ARM],因为我们需要用keil uversion打开生成的工程。[Min Version]选[V5]。
Linker Settings 下的Minimun Heap Size 和Minimun Stack Size在自动算出的基础上再加个0。
点击右上方的 [GENERATE CODE],生成工程成功。
如果有出现 “... MDK-ARM Project generation have a problem”提示,可能是因为工程生成路径或者工程名称中有中文字符。
工程文件夹下的MDK-ARM目录中存放keil工程。