You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

STM32G051K8U7项目切换Arm Compiler v6后启动文件编译报错求助

问题描述

在Keil uVision IDE中使用Arm Compiler v6.20.1创建STM32G051K8U7微控制器项目,初始编译、调试均正常。切换至Arm Compiler v5.06编译也无问题,但切回v6.20.1及所有v6.2x版本时,项目无法编译,启动文件startup_stm32g051xx.s出现247个错误,项目目录文件未修改,两台不同MDK版本的电脑均出现此问题。

编译输出示例:

Build started: Project: ICFW70102
*** Using Compiler 'V6.20.1', folder: 'C:\Keil_v5\ARM\ARMCLANG-v6.20.1\Bin'
Build target 'STM32G051K8Ux'
compiling ICFW70102_it.c...
compiling main.c...
RTE/Device/STM32G051K8Ux/startup_stm32g051xx.s(1): error: unexpected token at start of statement
;******************************************************************************
 ^
...(省略重复错误)
".\Objects\ICFW70102.axf" - 247 Error(s), 0 Warning(s).
Target not created.
Build Time Elapsed:  00:00:02
解决方法
  • 检查启动文件的编译属性:右键项目中的startup_stm32g051xx.s文件,选择「Options for File 'startup_stm32g051xx.s'」,在弹出窗口的Assembler选项卡下,确认未勾选「Assemble for ARM Compiler 5」。Arm Compiler v6采用clang汇编语法,强制用v5规则编译会触发大量语法错误。
  • 替换适配v6的启动文件:Arm Compiler v5与v6的汇编语法存在差异(如注释、伪指令格式),可通过STM32CubeMX重新生成项目,在「Project Manager」的「Toolchain/IDE」中指定编译器为「MDK-ARM v5」并选择「Arm Compiler v6」,生成适配v6的启动文件后替换原文件。
  • 重置项目编译器全局设置:进入项目的「Options for Target」窗口,在「Target」选项卡确认「Arm Compiler」选择v6.x版本;切换到「Asm」选项卡,移除所有v5特有的宏定义或编译选项,确保参数适配v6。
  • 清理残留文件后重新构建:删除项目目录下的Objects和Listings文件夹,点击Keil工具栏的「Rebuild」按钮重新编译,避免切换编译器后残留的中间文件干扰编译流程。

内容的提问来源于stack exchange,提问作者RytisBe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 17:17:22