STM32CubeIDE中"Invalid Storage Class for Function"错误的解决方法

在STM32CubeIDE中,你可能会遇到类似以下的编译错误:

../Core/Src/main.c:407:13: error: invalid storage class for function 'MX_USART1_UART_Init'
  407 | static void MX_USART1_UART_Init(void)
      |             ^~~~~~~~~~~~~~~~~~~
../Core/Src/main.c:440:13: error: invalid storage class for function 'MX_USART2_UART_Init'
  440 | static void MX_USART2_UART_Init(void)
      |             ^~~~~~~~~~~~~~~~~~~
../Core/Src/main.c:473:13: error: invalid storage class for function 'MX_USART3_UART_Init'
  473 | static void MX_USART3_UART_Init(void)
      |             ^~~~~~~~~~~~~~~~~~~
../Core/Src/main.c:506:13: error: invalid storage class for function 'MX_GPIO_Init'
  506 | static void MX_GPIO_Init(void)
      |             ^~~~~~~~~~~~
../Core/Src/main.c:536:1: error: expected declaration or statement at end of input

这些错误是由于函数的存储类别定义不正确导致的。 static 关键字定义了函数的存储类别为静态,这意味着该函数只能在定义它的文件内访问。

对于这些由STM32CubeMX生成的初始化函数 (例如MX_USART1_UART_Init, MX_GPIO_Init),应该移除它们的 static 关键字,使其成为普通的函数声明/定义,以便其他文件可以访问它们。

以下是修正后的代码示例:

void MX_USART1_UART_Init(void)
{
  // 函数体
}

void MX_USART2_UART_Init(void)
{
  // 函数体
}

void MX_USART3_UART_Init(void)
{
  // 函数体
}

void MX_GPIO_Init(void)
{
  // 函数体
}

注意: 这只是解决了存储类别错误的问题,如果其他代码存在逻辑错误,仍然需要进行修复。

解决STM32CubeIDE中

原文地址: https://www.cveoy.top/t/topic/hKK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录