
转移的一般步骤 Clean原TrueStudio工程(Project->Clean) 修改Makefile文件,可与已经移植过来的工程中Makefile作个文件对比 修改1,主要是编译器的选择 修改2,修改linker flags选项,主要与sprintf函数使用有关 增加-lrdimon -u _printf_float选项 修改-specs=nosys.specs为-specs=nano.specs
在STM32CubeIDE中再创建一个新的STM32工程。 ![]() 将新创建的工程文件夹中的工程文件(.cproject & .project)拷贝(替换)到已导入的TrueStudio工程的工程文件夹中(先关闭该工程) 亦可以直接将已经成功移植过来的工程文件.cproject & .project替换原工程文件,然后直接用STM32F103CubeIDE导入已存在的项目到工作空间即可: ![]() 重新打开已导入的TrueStudio工程,修改部分参数(笔者没有采用系统自动生成的Makefile体系,采用了自定义Makefile文件),需要修改的如下图所示: 0.设置构建自动刷新的目录 ![]() 1. 设置构建命令和构建位置 ![]() 2. 删除定义的引用文件与源码文件(手动在Makefile文件中添加) ![]() ⌘+B 重新编译工程 ![]() 重新设置调试过程(Run->Debug Configurations...) ![]() ⌘+F11 下载程序,调试(All done.) sprintf函数报错处理 如果使用了int sprintf(char* str, const char *fmt, ...)函数,可能会在对应位置出现如下报错: ![]() The float formatting support is not enabled, check your MCU Settings from "Project Properties > C/C++ Build > Settings > Tool Settings", or add manually "-u _printf_float" in linker flags. 初步判断错误类型为: Code analysis problem, 属于Codan Errors: ![]() 笔者的项目由于完全采用自己编写的Makefile文件,因此编译过程与这些错误无关,只需要按照它指示的要求在Makefile文件中linker flags中添加"-u _printf_float"选项即可(但是不能消除错误)。经过摸索,可以采取以下步骤“骗过”编译器,消除这个错误: 1. 重新打开自动生成Makefile文件功能 ![]() 2. 此时的C/C++ Build->Settings出现了Tool Settings的选项 ![]() 3.勾选Use float with printf from newlib-nano (-u _printf_float),并点击Apply and Close,此时错误会自动消除 ![]() 4.再次取消自动生成Makefile文件功能,这个报错不会再次出现。 ![]() 尚未查明原因的一个现象 STM32CubeIDE中自动生成的makefile文件中在linker flags 中有一个选项是-specs=nano.specs,而笔者用的选项是-specs=nosys.specs,这个选项的区别在于选择哪一个静态库。 已经观察到的一个区别是: 1.代码编译后的使用空间不一样: nano库: ![]() nosys库: ![]() 2.使用nosys库无论是否添加-lrdimon -u _printf_float选项都会报错: The float formatting support is not enabled, check your MCU Settings from "Project Properties > C/C++ Build > Settings > Tool Settings", or add manually "-u _printf_float" in linker flags. |
【2025·STM32峰会】GUI解决方案实训分享5-调通板载的NRF24L01 SPI接口并使用模块进行无线通信(发送和接收)
【2025·STM32峰会】GUI解决方案实训分享2-编译运行TouchGFX咖啡机例程(含桌面仿真)
实战经验 | Keil工程使用NEAI库的异常问题
STM32 ISP IQTune:真正零门槛的免费ISP调整软件
【经验分享】STM32 新建基于STM32F40x 固件库的MDK5 工程
意法半导体MCU双供应链策略,打消中国客户后顾之忧
2024意法半导体工业峰会:赋能智能电源和智能工业,构筑可持续未来
ST推出灵活、面向未来的智能电表通信解决方案,助力能源转型
意法半导体 x Qu-Bit Electronix:推动新一轮的数字声音合成革命
从STM32 MPU产品看嵌入式系统中微处理器的新变化