Keil转STM32CubeIDE工程移植问题记录

本文详细记录了从Keil到STM32CubeIDE的工程移植过程中遇到的编译报错处理,如重复定义冲突和源文件路径配置,以及如何调整C99语法标准和配置调试器。还涉及到了工程配置的细节,如浮点数操作和字体显示问题的解决。
摘要由CSDN通过智能技术生成

Keil转STM32CubeIDE工程移植问题记录

从Keil软件转战STM32CubeIDE,转换的过程中遇到了不少问题,在此记录一下,防止以后再踩坑.也给同样有转软件需求的朋友做个参考吧~

1.编译报错问题处理

  • 1.大量编译报错显示重复 multiple definition
c:\st\stm32cubeide_1.9.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127\tools\arm-none-eabi\bin\ld.exe: ./Library/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_msp_template.o: in function `HAL_MspInit':
D:/workspace/MPT-I/Library/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_msp_template.c:52: multiple definition of `HAL_MspInit'; ./HardwareDriverLayer/stm32f4xx_hal_msp.o:D:/workspace/MPT-I/HardwareDriverLayer/stm32f4xx_hal_msp.c:65: first defined here
c:\st\stm32cubeide_1.9.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127\tools\arm-none-eabi\bin\ld.exe: ./Library/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_timebase_rtc_alarm_template.o: in function `HAL_RTC_AlarmAEventCallback':
D:/workspace/MPT-I/Library/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_timebase_rtc_alarm_template.c:252: multiple definition of `HAL_RTC_AlarmAEventCallback'; ./HardwareDriverLayer/HAL_Driver/drv_rtc.o:D:/workspace/MPT-I/HardwareDriverLayer/HAL_Driver/drv_rtc.c:219: first defined here

HAL库提供的模板文件和我们的应用文件冲突导致重复定义
在这里插入图片描述

  • 2.工程没有配置源文件路径导致大量undefined reference 编译错误

在这里插入图片描述

右击工程名->Properties->C/C++ General->Source Location处添加源文件路径(每次新增源文件文件夹需要在此处添加)
在这里插入图片描述

  • 3.alignment of array elements is greater than element size

原因在于:

typedef  CPU_STK __attribute__((aligned(8)))        CPU_STK_8BYTE_ALIGNED;

Keil,VS Code等支持8字节对齐, #pragma pack(8),gcc 默认是4字节对齐,且只支持1,2,4字节对齐, #pragma pack(4).
修改如下:

typedef  CPU_STK __attribute__((aligned(4)))        CPU_STK_8BYTE_ALIGNED;

2.工程相关配置问题

可以通过scanf和sprintf进行浮点数操作
在这里插入图片描述

选择编译器的语法标准,这里我们选用常用的C99标准
在这里插入图片描述

解决STMCube IDE 字母与汉字大小显示不一致的问题:
在这里插入图片描述

3.调试器配置

…持续更新…

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
STM32CubeIDE中,ETH是指以太网模块,用于实现STM32微控制器与以太网通信的功能。在创建STM32项目时,可以选择是否需要使用ETH模块。如果需要使用ETH模块,可以在CubeIDE主界面左侧创建新的STM32项目,并选择相应的芯片和开发板。在项目中,可以导入CubeMx生成的.ioc文件,或者直接将原工程的.c/.h文件拷贝到相应的目录中。在目录结构中,Core文件夹包含个人用户代码和启动文件,Drivers文件夹包含STM32的标准外设库文件和M4内核文件。如果不需要使用ETH模块,可以跳过相应的配置和修改步骤。具体的硬件和软件配置可以根据实际情况进行选择和设置。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [[STM32CubeIDE]创建HAL库项目](https://blog.csdn.net/ZhaiRuoJi/article/details/125793599)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Keil to STM32CubeIDE标准库移植](https://blog.csdn.net/hekuan5826/article/details/120204657)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

0.零点开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值