****初步关注区块开始****
请帮助我理解任何可以帮助我指示
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 成功编译。