Luchenxu
我看了一下,出错的文件是 ../Core/Src/tx_initialize_low_level.s
,这个文件用宏开关来适应 3 种不同的编译器 armcc, iar, gcc
#ifdef __CC_ARM
...
#endif
#ifdef __IAR_SYSTEMS_ASM__
.....
#endif
#ifdef __GNUC__
....
#endif
但这个文件的格式是 gnu 汇编格式
,用 armasm 编译直接会提示语法错误,因此只能用 armclang,但 armclang 没有定义 __CC_ARM
这个宏,相反它定义了 __GNUC__
![](https://discuss.em-ide.com/assets/files/2022-04-24/1650781022-611158-image.png)
所以真正被编译的是 __GNUC__
分支,但你的 startup_xx.s
文件是为 armcc
编译器所准备的,里面没有 __RAM_segment_used_end__
, _vectors
变量,所以最后链接时出错,提示找不到符号
解决办法
打开文件 ../Core/Src/tx_initialize_low_level.s
这样分支判断条件才是正确的,改完后编译即可
![](https://discuss.em-ide.com/assets/files/2022-04-24/1650782193-823387-image.png)