STMCU小助手
发布时间:2022-4-15 10:00
|
转移的一般步骤 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. |
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
OpenSTLinux 6.1发布:M33-TD加持+安全升级,STM32MPU开发效率翻倍!
【经验分享】STM32CubeIDE汉化
手把手教你VSCode搭建STM32开发环境
RTOS在STM32中的应用
【下载有礼】STM32 Finder华为应用商店正式上线!移动选型工具助力开发效率升级
【2025·STM32峰会】GUI解决方案实训分享5-调通板载的NRF24L01 SPI接口并使用模块进行无线通信(发送和接收)
微信公众号
手机版