如何修复 STM32CubeIDE 中带有删除线的灰色功能?

How to fix functions grayed out with a strike-through in STM32CubeIDE?

我正在使用 STM32CubeIDE 为 STM32F411RE Nucleo 板编写应用程序。该代码涉及定时器的使用。当我尝试构建我的项目时,调用的计时器函数出现许多 "undefined reference" 错误。

环顾四周后,我注意到与错误相关的计时器函数(例如:HAL_TIM_Base_Init())位于 stm32f4xx_hal_tim.c 中,并以删除线显示为灰色。我认为这是我看到的未定义引用错误的原因。

根据我的谷歌搜索,我的理解是删除线表示该功能已弃用。但是,我无法弄清楚如何解决这个问题。我确实遇到了另一个与我的问题有点相关的问题:。但是,它的解决方案与源文件有关,而不是源文件中的函数。

我所看到的屏幕截图:

我是 STM32 和 STM32CubeIDE 的新手,所以非常感谢任何 help/explanation。谢谢

这些函数是灰色的,因为不满足预处理器指令,因此这些函数在编译时被丢弃。

如果您查看文件,您会在开头找到类似以下内容: #ifdef HAL_TIM_MODULE_ENABLED

STM32 HAL 旨在能够显式启用或禁用多个模块。 这些定义位于 stm32l4xx_hal_conf.h 文件中。

只需打开此文件并找到 HAL_TIM_MODULE_ENABLED 定义并删除周围的注释块。

此外,配置文件是根据所选 "Pin & Configuration" 设置(ioc 文件)在 CubeIDE 中自动生成的。还要检查这些以启用定时器模块。