ST意法半导体
直播中

小组店小二

9年用户 899经验值
擅长:可编程逻辑 电源/新能源 MEMS/传感技术 测量仪表 嵌入式技术 制造/封装 模拟技术 连接器 EMC/EMI设计 光电显示 存储技术 EDA/IC设计 处理器/DSP 接口/总线/驱动 控制/MCU RF/无线
私信 关注
[问答]

如何指示STM32CubeMX生成可使用ARM/Keil Compiler Version 6编译的代码?

****初步关注区块开始****

请帮助我理解任何可以帮助我指示 STM32CubeMX 生成代码的设置或 IOC 文件更改:
A. 包括来自 GCC 文件夹而不是 RVDS 文件夹的文件(以便可以使用 ARM/Keil 编译器版本 6 编译代码)?
我目前必须将 STM32CubeMX 为 MDK-ARM V5.27(或 V5)生成的代码修改为:
  • 使用 MDK ARM 编译器版本 6
  • 手动修改生成的 UVPROJX 文件以便:
    • 停止使用文件夹中可用的文件 PORT.C 和 PORTMACRO.H ..MiddlewaresThird_PartyFreeRTOSSourceportableRVDSARM_CM4F(参考 UVPROJX 文件位置的路径)(注意 文件夹路径中的RVDS 一词)
    • 添加上述两个文件的路径,这些文件在文件夹 MiddlewaresThird_PartyFreeRTOSSourceportableGCCARM_CM4F 中可用(注意 文件夹路径中的GCC 一词)

恐怕一旦我借助 IOC 文件和 STM32CubeMX 重新生成代码,UVPROJX 将再次开始使用文件夹 RVDSARM_CM4F 而不是 GCCARM_CM4F。
请帮助解决上述问题,因为此修复对我当前的版本至关重要。
我正在使用带有 Arm 编译器版本 6 的 HAL 和 LL 驱动程序。当前使用的 HAL 驱动程序将宏 __STM32H7xx_HAL_VERSION 设置为 0x01090000(即版本 1.09.00.00,对应于 STM32Cube MCU Package for STM32H7 系列版本 1.8.0)。
我一直在使用 STM32CubeMX 生成的代码 ,该代码可使用 Keil Version 5 进行编译。我能够在 Keil Compiler Version 6 的帮助下编译此代码。我没有发现 LL 或 HAL 驱动程序有任何问题。
我知道只有 使用 Keil 编译器版本 6 的 FreeRTOS 代码编译确实存在问题。但是,这只是因为 STM32CubeMX 没有(帮助选择 ARM-Keil 编译器版本 6,因此没有)包含 GCC 文件夹 (而是包含  版本 5 编译器所需的RVDS 文件夹)。我认为修复此问题对于 STM32CubeMX / ST 团队来说应该是一项简单的任务。为了
出于测试目的,在我的一个测试代码中,我手动更改了文件夹路径以确认问题只是因为文件夹包含不正确。
可以在以下链接中找到更多详细信息:
https://github.com/FreeRTOS/FreeRTOS-Kernel/issues/154
附加的 IOC 文件 USART3-Test.IOC 和 Gateway-H7-HW-Text.IOC 将帮助生成包含 HAL 驱动程序的代码。USART3-Test.IOC 还有助于生成包含一些 LL 驱动程序的代码
出色地。
单击“生成代码”按钮后,您将看到“未配置”或“错误参数值”的警告消息(我已经在与 ST 对话)。(这些问题与使用定义的宏来声明某些属性值有关)。
使用 Keil IDE 打开生成的项目后,我打开项目属性菜单,然后在目标选项“Gateway-H7-Hw-Test”-> 目标-> 代码生成 Arm 编译器下,我选择使用默认编译器版本 6。
STM32Cube 总是为 XTAL (MHz) 添加不正确的值,因此我将其改回 25 MHz。
在编译网关 H7 硬件测试之前,必须向主文件添加一些变量/宏
代码,我在下面分享声明,请在用户私有变量注释下添加它们:
  • unsigned char u8MaxStandardCAN1Filters = 0;
  • unsigned char u8MaxExtendedCAN1Filters = 2;
  • unsigned char u8MaxStandardCAN2Filters = 0;
  • unsigned char u8MaxExtendedCAN2Filters = 0;
代码将使用 Keil 编译器版本 6 成功编译。







回帖(1)

李允麒

2023-1-13 11:00:23
使用MDK-ARM 版本 5存在一些问题,其中之一是编译代码需要花费大量时间(数十分钟)。
此外,我们的库提供商已指示我们使用 MDK-ARM 编译器版本 6。
我发现有一个快速解决方法可以解决我的问题,即删除RVDS 文件夹并添加GCC 文件夹。然后在文本编辑器中打开UVPROJX 文件并将文件夹名称RVDS更改为GCC。我目前正在手动进行此更改。
由于使用的微控制器是 STM32H753,因此我从https://github.com/STMicroelectronics/STM32CubeH7/tree/master/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/下载 GCCARM_CM4F 文件夹及其内容ARM_CM4F
更新 STM32CubeMX 工具以自动执行上述更改,将大有帮助,同时还能节省大量用于编译/构建代码的时间。
举报

更多回帖

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