你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32开发项目:如何从TRUEStudio转移到STM32CubeIDE

[复制链接]
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
  1. SHELL = sh
  2. OBJECT_NAME = alwhalesStm32Project
  3. # System configuration
  4. CC = arm-none-eabi-gcc
  5. CC_OBJCOPY = arm-none-eabi-objcopy
复制代码
  1. LINKER_FLAGS = -lm -mthumb -mcpu=cortex-m3  -Wl,--gc-sections -T$(LINK_SCRIPT) \
  2.         -static  -Wl,--start-group -lc -lrdimon -u _printf_float \
  3.         -lm -Wl,--end-group  -specs=nano.specs  -Wl,-cref "-Wl,-Map=$(BIN_DIR)/$(OBJECT_NAME).map" \
  4.         -Wl,--defsym=malloc_getpagesize_P=0x1000
复制代码

在STM32CubeIDE中再创建一个新的STM32工程。

20200504162019822.png

将新创建的工程文件夹中的工程文件(.cproject & .project)拷贝(替换)到已导入的TrueStudio工程的工程文件夹中(先关闭该工程)
亦可以直接将已经成功移植过来的工程文件.cproject & .project替换原工程文件,然后直接用STM32F103CubeIDE导入已存在的项目到工作空间即可:

20200507091743886.png

重新打开已导入的TrueStudio工程,修改部分参数(笔者没有采用系统自动生成的Makefile体系,采用了自定义Makefile文件),需要修改的如下图所示:

0.设置构建自动刷新的目录

20200507121450808.png

1. 设置构建命令和构建位置

20200516225802985.png

2. 删除定义的引用文件与源码文件(手动在Makefile文件中添加)

20200507092447909.png

⌘+B 重新编译工程

20200504164207586.png

重新设置调试过程(Run->Debug Configurations...)

20200504164556511.png

⌘+F11 下载程序,调试(All done.)

sprintf函数报错处理
如果使用了int sprintf(char* str, const char *fmt, ...)函数,可能会在对应位置出现如下报错:

20200507140538667.png

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:

20200507140907761.png

笔者的项目由于完全采用自己编写的Makefile文件,因此编译过程与这些错误无关,只需要按照它指示的要求在Makefile文件中linker flags中添加"-u _printf_float"选项即可(但是不能消除错误)。经过摸索,可以采取以下步骤“骗过”编译器,消除这个错误:

1. 重新打开自动生成Makefile文件功能

2020050714135116.png

2. 此时的C/C++ Build->Settings出现了Tool Settings的选项

20200507141726240.png

3.勾选Use float with printf from newlib-nano (-u _printf_float),并点击Apply and Close,此时错误会自动消除

2020050714193638.png

4.再次取消自动生成Makefile文件功能,这个报错不会再次出现。

20200507142130375.png

尚未查明原因的一个现象
STM32CubeIDE中自动生成的makefile文件中在linker flags 中有一个选项是-specs=nano.specs,而笔者用的选项是-specs=nosys.specs,这个选项的区别在于选择哪一个静态库。

已经观察到的一个区别是:

1.代码编译后的使用空间不一样:

nano库:

20200507143107546.png

nosys库:

20200507143234964.png

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.


收藏 评论0 发布时间:2022-4-15 10:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版