STM32CubeMx:如何添加自己的“USER CODE BEGIN / END”部分?
Posted
技术标签:
【中文标题】STM32CubeMx:如何添加自己的“USER CODE BEGIN / END”部分?【英文标题】:STM32CubeMx: How to add your own "USER CODE BEGIN / END" section? 【发布时间】:2019-09-19 22:07:43 【问题描述】:我有一个项目,我需要在其中一个生成的 C 文件中添加几行。但是,我要添加更改的地方没有“USER CODE BEGIN / END”部分。因此,每当我重新生成代码时,更改都会被覆盖。我尝试添加我自己的用户代码部分,如下所示,但即使它也被覆盖了。看起来,CubeMX 正在寻找一组预定义的用户代码块,并覆盖其他所有内容。
/* USER CODE BEGIN 8 */
/* USER CODE END 8 */
我希望能够定义自己的用户代码块,以便我可以在 CubeMX 尚未提供用户代码块的地方编写自定义代码。
【问题讨论】:
我很难相信代码中存在一个可用的用户代码开始/结束部分尚不存在的位置。您能否发布整个文件并指出您要添加自定义文件的确切位置?我看过很多 STM32CubeMX 生成的代码,但从来没有找到我想添加没有适当块的代码的地方。也许我错了(可能是:))但这对我来说似乎很奇怪。 我想使用 UART 空闲中断。 CubeMX 生成的代码中已经定义了一个 ISR。此 ISR 没有处理 UART 空闲条件的代码。 CubeMX UI 中也没有任何选项可以生成它。 是的,我认为你错了。我在 STM32CubeMX 中创建了一个新项目,然后在异步模式下启用 USART1,进入其 NVIC 设置,并选中该框以启用其全局中断。然后我生成了代码,在“Src/stm32f7xx_it.c”中断文件中有一个名为void USART1_IRQHandler(void)
的处理程序ISR。它有 2 个单独的用户代码部分,分别标记为 /* USER CODE BEGIN USART1_IRQn 0 */
和 /* USER CODE BEGIN USART1_IRQn 1 */
。在这些部分中,您可以阅读空闲事件标志并按照您认为合适的方式处理它。如果您愿意,我可以将其作为答案。
@GabrielStaples 您的 STM32CubeMX 和固件包的版本是什么?也许他们在最新版本中添加了它,我降级到以前的版本,因为我前一段时间安装的最新版本生成了不稳定的代码。无论如何,这个问题仍然存在,因为 UART IRQ 只是一个示例,用户可能希望在许多其他地方插入自己的代码。
我不记得版本了,但大约一年前我在 STM32CubeMX 和固件包的任何版本上验证了这一点,并且固件包是当时的最新版本,就在前几天我验证了它 1)在带有 STM32F7 固件包 1.14.0 的 STM32CubeMX 5.0.1 中,以及 2) 在带有 STM32F7 固件包 1.15.0 的 STM32CubeIDE 1.0.0(其中嵌入了 STM32CubeMX 5.2.0)中。我使用的板是 Nucleo F767。我不认为这是一个新功能。在过去的 1~1.5 年的使用中,我从来没有,也没有一次,发现或听说过一个需要 USER CODE BEGIN/END 部分不存在的案例。
【参考方案1】:
CubeMX 不支持添加自定义用户代码部分。
查看此支持帖子:
https://community.st.com/s/question/0D50X0000ALxNlmSQF/is-it-possible-to-add-custom-user-code-sections
【讨论】:
以上是关于STM32CubeMx:如何添加自己的“USER CODE BEGIN / END”部分?的主要内容,如果未能解决你的问题,请参考以下文章
Stm32CubeMx lwip+freeRTOS TCP 服务