[英]C++ with STM32CubeMX and Eclipse System Workbench for STM32 AC6 tools
我使用STM32CubeMX
为 Nucleo F429ZI 演示板生成了一个 FreeRTOS 项目,该项目在Eclipse System Workbench for STM32 AC6
上成功构建, Eclipse System Workbench for STM32 AC6
工具并在演示板上运行。
我想使用C++
、 stl
库。<
简单地将main.c
重命名为main.cpp
不起作用......
我看到有人能够将 C++ 与 FreeRTOS 一起使用,但是如果使用这个 STM32Toolchain 是可能的,我找不到任何帮助。
是的,这是可能的。 而且这并不难(我假设您使用的是标准的 ARM noneabi gcc)。 但是您必须记住,CubeMX 中的任何进一步修改都会将您的项目恢复为 C。
undefined reference to 'main'
。 就这样。 请记住,您不能从 .c 文件直接调用 C++ 函数。 当函数在 .cpp 文件中并且没有extern "C"
属性时,也无法通过 MCU 调用中断。 无论您是包含在项目 FreeRTOS 中,还是包含 STM 准备的任何其他内容。 C++ 编译器仅适用于 .cpp 文件,不会影响 .c 文件。 所以他们像以前一样工作。
我使用了 Eclipse Convert to C++
菜单,而不是New -> Convert to a C/C++ project (Adds C/C++ Nature)
菜单。
此命令正确复制了所有项目设置。 然后我将main.c
重命名为main.cpp
,编译,现在它正在工作。
我是为 Keil IDE 做的。 您应该使用更新的 HAL 驱动程序通过 STM32CubeMX 通常生成一个 STM32 MDK 项目,然后在 Keil ARM MDK 中打开项目,将 project-option-C/C++ -MiscControls 更改为 --cpp,最后一步,您应该在 . hpp 和 .cpp
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.