解决STM32CubeIDE中"Invalid Storage Class for Function"错误
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)
{
// 函数体
}
注意: 这只是解决了存储类别错误的问题,如果其他代码存在逻辑错误,仍然需要进行修复。
原文地址: https://www.cveoy.top/t/topic/hKK 著作权归作者所有。请勿转载和采集!