【问题标题】:STOP using HAL in cubeIDE [duplicate]停止在 cubeIDE 中使用 HAL [重复]
【发布时间】:2021-10-28 04:55:29
【问题描述】:
由于我想编写一个高效的程序来使用最少的 RAM 和闪存,我想从我的项目和程序中完全删除 HAL 库,并且只在寄存器中。
我想使用 cubeIDE 进行编译和调试,但我不知道如何从我的项目中删除 HAL 库(似乎在生成项目时默认创建并附加到项目的 HAL 库)。
有什么实用的方法吗?
最好的!
【问题讨论】:
标签:
stm32
hal
stm32cubeide
【解决方案1】:
在 STM32CubeIDE 项目生成中有一个选项允许您创建 empty 项目。
空项目附带以下内容:
-
main.c:大部分为空
-
syscalls.c :我不知道它的用途,但可能没用。
-
sysmem.c : 实现
_sbrk() 函数,由malloc() & new() 使用
-
startup_stm32[xxxxxxxx].s :程序集中的启动文件。你可以保持原样
-
[xxxxxx]_FLASH.ld:链接器脚本文件。大多数情况下,这可以保持不变。
但您需要一些额外的库和文件。
-
CMSIS 库:这包括所有 Cortex M 设备共有的一些核心功能。 core 库只是标题,它是您开始使用的唯一一个。还有一些额外的 CMSIS 库,例如您可能需要的 DSP 库,具体取决于您的项目要求。我建议从它的official repository 下载它。
-
来自 ST 的官方 STM32 标头:这实际上称为 STM32Cube[xx](例如 STM32CubeF4),包括您想要摆脱的 Cube 和 HAL 框架。但我们对符合 CMSIS 的设备标头感兴趣。您可以删除其余部分。它还包括一个落后于官方版本的 CMSIS 版本。由于您可以从其官方存储库下载最新的 CMSIS,因此您不需要包含在 Cube 包中的那个。可以从 ST 下载相关包。例如,this one 用于 F4 系列。
获得所需的包后,您需要配置 STM32CubeIDE 以便您的项目使用新获得的库。基本上,您需要添加一些额外的包含目录和符号定义。还有一个额外的system_stm32[xxxxx].c文件,可以在STM32Cube包中找到,需要包含在你的工程中。
Here你可以找到一些相关的答案。
Here 是我为 Blue Pill 板 (STM32F103C8) 创建的示例 STM32CubeIDE 闪烁项目。它可能有些过时,但可能仍然有用。
我描述的方法可能不太实用。有些人建议创建一个普通的 Cube & HAL 项目,而不是修剪未使用的部分。