STM32上FreeRTOS编译的TrueTudio编译错误

STM32上FreeRTOS编译的TrueTudio编译错误,stm32,freertos,truestudio,Stm32,Freertos,Truestudio,使用Truestudio在STM32上编译FreeRTOS时,我面临编译错误 /home/dd/Atollic/TrueSTUDIO/STM32_workspace_9.0/STM32L071KZ_RTOS/Debug/../Src/main.c:236: undefined reference to `HAL_SYSTICK_Config' /home/dd/Atollic/TrueSTUDIO/STM32_workspace_9.0/STM32L071KZ_RTOS/Debug/../Src

使用Truestudio在STM32上编译FreeRTOS时,我面临编译错误

/home/dd/Atollic/TrueSTUDIO/STM32_workspace_9.0/STM32L071KZ_RTOS/Debug/../Src/main.c:236: undefined reference to `HAL_SYSTICK_Config'
/home/dd/Atollic/TrueSTUDIO/STM32_workspace_9.0/STM32L071KZ_RTOS/Debug/../Src/main.c:240: undefined reference to `HAL_SYSTICK_CLKSourceConfig'
/home/dd/Atollic/TrueSTUDIO/STM32_workspace_9.0/STM32L071KZ_RTOS/Debug/../Src/main.c:243: undefined reference to `HAL_NVIC_SetPriority'
Src/main.o: In function `main':
/home/dd/Atollic/TrueSTUDIO/STM32_workspace_9.0/STM32L071KZ_RTOS/Debug/../Src/main.c:107: undefined reference to `HAL_Init'
Src/main.o: In function `MX_GPIO_Init':
Src/main.o: In function `main':
/home/dd/Atollic/TrueSTUDIO/STM32_workspace_9.0/STM32L071KZ_RTOS/Debug/../Src/main.c:147: undefined reference to `osThreadCreate'
/home/dd/Atollic/TrueSTUDIO/STM32_workspace_9.0/STM32L071KZ_RTOS/Debug/../Src/main.c:151: undefined reference to `osThreadCreate'
/home/dd/Atollic/TrueSTUDIO/STM32_workspace_9.0/STM32L071KZ_RTOS/Debug/../Src/main.c:155: undefined reference to `osThreadCreate'
/home/dd/Atollic/TrueSTUDIO/STM32_workspace_9.0/STM32L071KZ_RTOS/Debug/../Src/main.c:167: undefined reference to `osKernelStart'

您知道如何解决此问题吗?

未定义引用是链接器错误,在您的情况下,这可能意味着您没有编译所有必需的文件,或者所需的函数被预处理器指令禁用。然而,看到你的链接器如何抱怨HAL_Init丢失——没有任何if、ifdef或类似的内容——意味着你的问题可能是源文件根本没有被编译。这也不是缺少静态库的问题,因为HAL是以源代码的形式提供的

要解决问题,请执行以下操作:

确保项目中包含相应的源文件而不是标题。例如,HAL_Init位于stm32f7xx_HAL.c中,用于STM32F7、F4等。根据您使用的内容,具有类似的文件。在Eclipse/Truestudio中,最简单的方法是通过顶部菜单->导航->打开资源。。。CTRL+Shift+R并键入文件名。如果它不在那里-该文件不会添加到您的项目中,此时您应该添加它

如果您确实打开了该文件,这并不一定意味着它正在生成,因为它可能被排除在外。根据您添加目录的方式,Eclipse有时可能会决定在默认情况下将其作为一个整体禁用。转到项目资源管理器中的文件如果上一步中的文件仍在编辑器中打开,则可以单击两个箭头图标指定文件:。该文件(可能还有它所在的整个目录)不应灰显/删除。右键单击该文件并选择资源配置->从生成中排除。。。。确保未检查您尝试构建的项目配置


为了进一步确保您已经正确地完成了所有工作,并且确实编译了所需的文件,请右键单击它,例如stm32f7xx_hal.c,然后选择“生成选定文件”。您应该看到的是编译器命令行及其输出,例如arm none eabi-。。。。如果从生成中排除该文件,则只会看到Info:Internal Builder用于生成,后跟hh:mm:ss build Finished take Xs.YYYms,但没有带编译器命令行参数的行。尝试对项目中已知要编译main.c的文件执行此操作。根据发布的内容编译main.c并比较结果。

未定义引用是链接器错误,在您的情况下,这可能意味着您没有编译所有必需的文件,或者预处理器指令禁用了必需的函数。然而,看到你的链接器如何抱怨HAL_Init丢失——没有任何if、ifdef或类似的内容——意味着你的问题可能是源文件根本没有被编译。这也不是缺少静态库的问题,因为HAL是以源代码的形式提供的

要解决问题,请执行以下操作:

确保项目中包含相应的源文件而不是标题。例如,HAL_Init位于stm32f7xx_HAL.c中,用于STM32F7、F4等。根据您使用的内容,具有类似的文件。在Eclipse/Truestudio中,最简单的方法是通过顶部菜单->导航->打开资源。。。CTRL+Shift+R并键入文件名。如果它不在那里-该文件不会添加到您的项目中,此时您应该添加它

如果您确实打开了该文件,这并不一定意味着它正在生成,因为它可能被排除在外。根据您添加目录的方式,Eclipse有时可能会决定在默认情况下将其作为一个整体禁用。转到项目资源管理器中的文件如果上一步中的文件仍在编辑器中打开,则可以单击两个箭头图标指定文件:。该文件(可能还有它所在的整个目录)不应灰显/删除。右键单击该文件并选择资源配置->从生成中排除。。。。确保未检查您尝试构建的项目配置


为了进一步确保您已经正确地完成了所有工作,并且确实编译了所需的文件,请右键单击它,例如stm32f7xx_hal.c,然后选择“生成选定文件”。您应该看到的是编译器命令行及其输出,例如arm none eabi-。。。。如果从生成中排除该文件,则只会看到Info:Internal Builder用于生成,后跟hh:mm:ss build Finished take Xs.YYYms,但没有带编译器命令行参数的行。尝试在项目中已知要编译main的文件上执行此操作。根据您发布的内容,确实会编译main.c并比较结果。

您的项目设置不正确。您需要添加所有的include路径,将.c文件添加到项目中,最终所有库都无法正确设置项目。您需要添加所有的include路径,将.c文件添加到项目中,最后添加所有库