首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FreeRTOS编译STM32的Truestudio编译错误

FreeRTOS编译STM32的Truestudio编译错误
EN

Stack Overflow用户
提问于 2018-07-24 12:34:45
回答 1查看 2K关注 0票数 0

我正面临使用Truestudio在FreeRTOS上编译STM32的编译错误。

代码语言:javascript
复制
/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'

知道怎么解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2018-07-24 16:16:04

“未定义引用”是链接器错误,在您的示例中,这可能意味着您没有编译所有必要的文件,或者所需的函数被预处理器指令“禁用”。然而,查看链接器如何抱怨HAL_Init丢失--它没有被任何#if#ifdef或类似的东西包围--意味着您的问题可能是因为根本没有编译源文件。这也不是一个缺少的静态库问题,因为HAL是以源代码的形式交付的。

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

  • 确保项目中包含了相应的源文件(而不是头文件)。例如,HAL_Init位于stm32f7xx_hal.c中(对于STM32F7、F4等,有类似的文件,这取决于您使用的是什么)。在Eclipse中,最简单的方法是通过Top menu -> Navigate -> Open Resource... (CTRL+Shift+R)输入文件名。如果它不存在--该文件没有添加到您的项目中,此时您应该添加它。
  • 如果您打开了该文件,这并不一定意味着它正在构建,因为它可能被排除在外。根据添加目录的方式,Eclipse有时可能决定默认禁用它作为一个整体。转到中的文件(如果上一步编辑器中的文件仍处于打开状态,则可以单击两个箭头图标以指向该文件:

)。文件--很可能是它所在的整个目录--不应该是灰色/删除的。右键单击该文件并选择Resource Configurations -> Exclude from Build...。确保没有检查您要构建的项目配置。

为了进一步确保您已经正确地完成了所有操作,并且确实编译了所需的文件,请右键单击它(例如,stm32f7xx_hal.c)并选择Build Selected File(s)。您应该看到的是编译器命令行及其输出,例如arm-none-eabi-...。如果该文件被排除在构建之外,则只会看到Info: Internal Builder is used for build后面跟着hh:mm:ss Build Finished (took Xs.YYYms),而不会看到带有编译器命令行参数的行。尝试在您的项目中一个已知要编译的文件上这样做(main.c从您发布的内容中得到编译),并比较结果。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51498765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档