繁体   English   中英

带有 STM32CubeMX 和 Eclipse System Workbench 的 C++ 用于 STM32 AC6 工具

[英]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。

  1. 将您的 main.c 重命名为 main.cpp(现在,在编译期间,您应该收到一个错误undefined reference to 'main'

  1. 右键单击您的 STM 项目并选择“转换为 C++”。 现在编译成功!

就这样。 请记住,您不能从 .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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM