STM32CubeMX和STM32CubeIDE是ST公司的STM32Cube生态系统中最重要和最常用的2个软件,使用这2个免费软件可以高效地进行STM32系统的开发。
CubeMX用于对一个STM32器件进行可视化的配置,然后生成CubeIDE或其他IDE项目的初始化代码。CubeIDE可以在CubeMX初始生成的代码基础上进一步添加用户功能代码,实现具体的功能。
新手在使用CubeMX和CubeIDE的过程中,容易范一些错误,或遇到一些问题不知如何解决。本文将这些常见问题整理如下。
(1)安装了错误版本的Java Runtime Environment(JRE),导致生成的CubeIDE项目无法编译
在安装CubeMX和CubeIDE的时候,如果电脑上没有安装JRE,会提示要求安装JRE。现在的Win7或Win10一般是64位的系统,但有的同学在安装JRE时却误装了32位的JRE。安装了32位的JRE后,可以继续安装CubeMX和CubeIDE,但是CubeMX生成的CubeIDE项目在CubeIDE里打开后不能编译,因为生成的项目不完整。
所以,64位的Win7或Win10上,一定要安装64位的JRE。
(2)CubeMX的Repository文件夹使用了默认的路径,导致生成的CubeIDE项目无法编译
有的同学在安装CubeMX后,就立刻安装固件库,而没有打开Update Settings对话框,修改Repository Folder(固件库文件夹),使用了默认的固件库目录。CubeMX安装后,默认的Repository Folder是C盘用户目录下的一个文件夹(与登录Windows的用户名称有关),即“C:\User\*****”。
CubeMX对中文的支持不是很好,在Windows系统上,Repository文件夹不能有任何汉字、空格等符号。而CubeMX安装后默认的Repository文件夹就是有汉字的,即使登录Windows的用户名称是纯英文。如果使用了默认的Repository路径,CubeMX生成的CubeIDE项目不完整,无法正常编译。
所以,在安装固件库之前,要先打开Update Settings对话框,修改Repository文件夹,如下图,设置一个单独的文件夹,且整个路径上不能有汉字、空格等特殊符号。
如果已经使用默认的Repository目录安装了固件库,那么Repository目录不能再修改,只能卸载掉固件库,卸载CubeMX后重新安装和设置。
(3)CubeMX文件名称需要与最后一级文件夹名称同名,且路径上不能有汉字或空格,否则生成代码不完整,CubeIDE项目无法编译
一个CubeMX项目只有一个.ioc文件,这个文件名必须与最后一级文件夹的名称相同。例如CubeMX项目保存到下面的目录下
D:\CubeDemo\Part2_Peripherals\Chap08TFTLCD\Demo8_1TFTLCD\
则CubeMX的文件名称必须是 Demo8_1TFTLCD.ioc。在CubeMX里首次保存项目时,就是选择路径,会自动以最后一级文件夹名称命名ioc文件。
注意,保存CubeMX项目文件的整个路径名称上不能有汉字、空格等特殊字符,只能使用英文、数字、下划线等基本字符。否则生成的CubeIDE项目无法正常编译。
(4)CubeMX里先生成了EWARM项目的代码,发现错了,再选择生成CubeIDE项目代码,生成的CubeIDE项目无法编译
在CubeMX里如果没有设置IDE类型,就直接生产代码,这样生成的是EWARM项目,因为默认的IDE选项是EWARM(如下图)。如果发现错了,重新选择STM32CubeIDE再生成一次代码,这样的项目在CubeIDE里打开后是无法编译的。
这种情况下的解决办法是,删除项目目录下除了ioc文件之外的所有其他文件和文件夹,然后在CubeMX里重新生成CubeIDE类型的项目代码即可。
(5)未升级ST-LINK仿真器的固件,导致CubeIDE项目编译后无法下载到开发板
初次使用CubeIDE编译项目,并使用ST-LINK仿真器下载到开发板时,可能会出现提示对话框,说仿真器固件版本低,需要升级固件。有同学不注意看提示信息,不知道升级固件。
出现这种情况时,点击CubeIDE的主菜单项 Help 下面的ST-LINK upgrade,打开如下的对话框。先点击Open in update mode,如果ST-LINK仿真器连接正常,会出现两个箭头所指的版本号。蓝色箭头所指是ST-LINK仿真器的固件版本,红色箭头所指是需要升级到的版本号,如果ST-LINK仿真器的固件版本号低,就需要升级。点击Upgrade按钮就可以升级。
(6)CubeIDE项目编译没错误,ST-LINK仿真器以前是可以用的,但是现在无法下载
出现这种情况时,可能是ST-LINK仿真器与电脑的连接出了问题。点击CubeIDE的主菜单项 Help 下面的ST-LINK upgrade,打开如下的对话框。点击Open in upgrade mode按钮,如果出现最下面的提示信息 ST-Link is not in the DFU mode. Please restart it. 就说明ST-LINK仿真器与电脑的连接出了问题。这种情况下,需要拔除ST-LINK与电脑连接的USB线,然后重新插上就可以了。
(7)在程序文件里写了汉语注释,在CubeMX重新生成代码后,汉语注释出现部分乱码
例如,我们在下面的一个沙箱段内写了代码,并且写了汉语注释。
在CubeMX里做了些修改,重新生成代码,那么,代码中的汉语注释可能出现部分乱码,如下图
在使用独立的CubeMX和CubeIDE时,这个问题目前暂时无法解决。有人说需要将CubeIDE 的文件编码设置为GBK,如下图。但是使用独立的CubeMX导出的文件编码就是UTTF-8,且CubeMX里无法修改编码设置。实际测试中发现,即使将CubeIDE里的文件编码设置为GBK,在CubeMX里重新生成后,还是出现部分汉字注释乱码,且下图对话框中的编码自动更改为UTF-8。
(8)CubeIDE的固件库路径设置
CubeIDE里内置了CubeMX,如果使用内置的CubeMX,也需要设置STM32固件库路径。注意,切换一个新的Workspace后,其固件库路径自动恢复为默认值,如下图。使用这样默认的固件库路径也是有问题的,应该修改。可以设置为独立的CubeMX里的固件库路径,与其共用固件库。