STM32
直播中

陈艳

8年用户 1043经验值
私信 关注
[问答]

请问stm32cube ide如何编译底层库?

把之前在mdk5中编译正常的freemodbus 移植到 cube ide 后,无法编译通过。
看debug 是 无法编译m3的底层库的方法。cmsis_gcc.h

D:/STM32CubeIDE/workspace/zzzzzzzzz/Debug/../freemodbus-v1.6/mbascii.c:125: undefined reference to `__set_CONTROL'
freemodbus-v1.6/mbascii.o: In function `eMBASCIIStart':
D:/STM32CubeIDE/workspace/zzzzzzzzz/Debug/../freemodbus-v1.6/mbascii.c:133: undefined reference to `__set_CONTROL'
D:/STM32CubeIDE/workspace/zzzzzzzzz/Debug/../freemodbus-v1.6/mbascii.c:136: undefined reference to `__set_CONTROL'
freemodbus-v1.6/mbascii.o: In function `eMBASCIIStop':
D:/STM32CubeIDE/workspace/zzzzzzzzz/Debug/../freemodbus-v1.6/mbascii.c:145: undefined reference to `__set_CONTROL'
freemodbus-v1.6/mbascii.o:/STM32CubeIDE/workspace/zzzzzzzzz/Debug/../freemodbus-v1.6/mbascii.c:148: more undefined references to `__set_CONTROL' follow
collect2.exe: error: ld returned 1 exit status
make: *** [makefile:51: zzzzzzzzz.elf] Error 1
"make -j12 all" terminated with exit code 2. Build might be incomplete.

14:15:42 Build Failed. 7 errors, 0 warnings. (took 825ms)


回帖(1)

贾大林

2024-4-10 18:18:26
在STM32Cube IDE中编译底层库,你需要做以下几个步骤:

1. 在Cube IDE中创建一个新的工程或者打开你已有的工程。
2. 在工程中创建一个文件夹(例如"lib"),用于存放底层库的源文件和头文件。
3. 将你的底层库文件复制到lib文件夹中。确保你的文件夹结构正确,包括源文件和对应的头文件。
4. 在Cube IDE中右键单击工程,选择"Properties"。
5. 在弹出窗口中选择"C/C++ Build" > "Settings"。
6. 在"Tool Settings"选项卡中选择"MCU",确保你的目标器件和连接器脚本已正确配置。
7. 选择"Tool Settings" > "Cross ARM C Compiler" > "Include Paths",添加你的底层库的头文件路径。
8. 选择"Tool Settings" > "Cross ARM C Compiler" > "Preprocessor",添加你的底层库的宏定义(如果有)。
9. 保存并关闭"Properties"窗口。
10. 在工程中创建一个新的源文件(例如"main.c")。
11. 在main.c中包含你的底层库的头文件,并编写相应的代码。
12. 在菜单栏上选择"Build" > "Build Project",进行编译。

如果仍然无法编译通过,可能是由于编译器设置或工程配置不正确导致的。请确保你的工程配置正确,并检查你的代码中是否有其他错误。另外,你还可以尝试重新导入底层库,并创建一个新的工程来进行编译。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分