解决STM32CubeMX生成的工程编译慢的问题 (Compiler V6的使用)

STM32CubeMX是一个很好的工具,不过每次修改一点点东西后,再生成的工程都要全部重新编译,用的外设多了,文件数量也多了很多,编译速度奇慢无比,实在是烦=  =。

刚开始也没找到啥好办法,网上大多数人都只是说在CubeMX里的不要设置成复制所有库文件,但是就算是这样做了,文件多一点,编译时间就要两分钟以上了。

然后看到有人说是编译器的问题,新的编译器Compiler V6速度会快很多,那就开始吧。

KEIL版本升级

旧版本的KEIL是没有的,具体可以看一下Option for Target -> Target -> ARM Compiler

于是我去下载安装了最新版本MDK-ARM Version 5.26

为了解决每次打开工程都会有的新版本DFP未安装提示(一直使用的是初学STM32的时候安装的旧版本),顺便下载安装了Keil.STM32F4xx_DFP.2.13.0.pack

STM32CubeMX版本升级

此处使用的是STM32CubeMX 5.1.0 ,STM32Cube_FW_F4_V1.24.0

旧版本的固件包好像会有问题,要用新版本的固件包又要用新版本的STM32CubeMX,对比了一下发现USB部分库文件改动比较大。

所以我只能重新配置STM32CubeMX,重新生成工程。

对比

看网上别人的操作,还要在C/C++那一页选择Language C,最好选择gun,据说是因为编译器支持的比较好。但是我选择其他的也没什么影响。

 

以下是选择旧版本Compiler V5时用的时间,2分钟多。。。真不知道之前我是怎么忍受得了的。

我的电脑CPU是i5-4200M,以前初学的时候,用的是标准库,再怎么样也不会让我等这么长时间。

 

选择新版本CompilerV6,CPU占用率飙到100%,刷刷的就编译完了。

后续

新出现的2个警告:

../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c(940): warning: '__packed__' attribute ignored when parsing type [-Wignored-attributes]
      USBx_DFIFO((uint32_t)ch_ep_num) = *((__packed uint32_t *)pSrc);
                                           ^~~~~~~~
../Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h(115): note: expanded from macro '__packed'
    #define __packed __attribute__((__packed__))
                                    ^~~~~~~~~~

还没搞懂是什么意思。

 

发现printf的不能用了,pritnf会直接卡死。

实验了一下其他方法,要这样才行:

在main.c或usart.c里重定义一下

/* USER CODE BEGIN 1 */
//重映射fputc函数,此函数为多个输出函数的基础函数  
int fputc(int ch, FILE *f)  
{  
  HAL_UART_Transmit(&huart1,(uint8_t*)&ch,1,HAL_MAX_DELAY);
  return ch;
}  
/* USER CODE END 1 */

 

 

### CLion 创建 STM32CubeMX 项目报错解决方案 当在 CLion 中创建 STM32CubeMX 项目时遇到 `please install java JRE 11.0.10 64-bit or more recent version` 错误提示,这通常是因为 CLion 内置的 Java 运行环境版本过低,无法满足 STM32CubeMX 的需求。 #### 更新 CLion 和 JDK 版本 为了确保兼容性和稳定性,建议更新到最新版的 CLion 及其支持的 JDK 版本。对于较新的 STM32CubeMX 工具链而言,至少需要安装 Java SE Development Kit (JDK) 或者仅运行时环境 (JRE) 11.x 或更高版本[^1]。 ```bash sudo apt-get update && sudo apt-get upgrade default-jdk ``` 如果使用 Windows,则可以从 Oracle 官方网站下载并安装最新的 JDK 发布包;如果是 macOS 用户,可以通过 Homebrew 来管理: ```bash brew tap adoptopenjdk/openjdk brew cask install adoptopenjdk11 ``` #### 配置 CLion 使用外部 JDK 即使已经安装了合适的 JDK,在某些情况下仍需手动配置 IDE 使用特定路径下的 JDK 而不是默认内嵌的那个较低版本。进入 **File -> Settings -> Build, Execution, Deployment -> Compiler...** 找到 "Build process" 下拉菜单中的 JVM 设置项,并指定已安装好的高版本 JDK 执行程序的位置,比如 `/usr/lib/jvm/java-11-openjdk-amd64/bin/javac` 或其他相应位置。 #### 修改 CubeMX 导出设置 有时还需要调整 CubeMX 自身导出选项来匹配所使用编译器工具集。打开 CubeMX 后点击左上角齿轮图标访问 Preferences 对话框,在这里可以更改 Project->Project Manager->Toolchain/FW Libs 中的目标平台以及关联库的选择[^2]。 通过上述方法应该能够有效解决由于不兼容引起的错误消息,并顺利完成基于 Clion 平台上的 STM32 开发工作流构建。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值