我想在C++中使用HAL为STM32创建一个项目.不幸的是,CubeMX仅支持C中的项目.但是,HAL支持C++.
我在CubeMX中创建了一个项目,我试图将它导入上面的任何IDE但没有任何成功,因为它是作为C项目导入的.所以它看起来不是一个好的解决方案.
此外,我尝试在上述IDE中创建一个C++项目,并从CubeMX添加它的文件.这似乎更逻辑,但我不能以正确的方式做到,因为我的配置仍然是错误的.
任何人都可以解释我如何在Eclipse或Atollic TrueSTUDIO中配置新的C++项目才能使用HAL?
最新版本的CubeMX支持System Workbench 4 STM32,它是一个基于Eclipse的IDE,预先配置为STM32目标开发.它可以选择将项目转换为C++(在项目浏览器中右键单击项目,然后选择"转换为C++").
请注意,我没有使用此方法的直接经验.我们使用STM HAL并在此基础上构建我们的C++应用程序,所以这绝对是可能的,但我们的IDE是Keil,所以YMMV.
如何将STM32CubeMX生成的Atollic Eclipse C项目转换为C++(3个步骤):
<natures>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.core.ccnature</nature>
请参阅http://www.openstm32.org/forumthread1244.这可以在Eclipse运行时打开项目时完成.结果:main.cpp编译但无法找到包含文件,因为包含路径错误.你认为cpp nature会是一个更好的名字.编辑:搜索Eclipse的"C++性质"帮助,获取有关如何使用菜单File/New/Other/Convert to C/C++ Make Project添加C++性质的提示.
需要关闭并重新打开项目才能使此更改生效.结果:正确构建,链接,运行和运行.main.cpp可以调用HAL c代码,HAL回调可以调用.cpp文件中的函数.可能需要在cpp文件一个extern"C"改性剂如果1在.cpp侧呼吁.C侧的功能(通过预先待决的修改函数原型defined extern "C" 2 .C并排正在调用的回调在一个.cpp定义(通过预先挂起修改.cpp端的函数定义defined extern "C".一些说明:
改进的空间:可能有一个CubeMX模板可以编辑,以使这些更改更自动,但我不太了解CubeMX模板,使这个hack更优雅.
我也使用CubeMX和IAR EWARM,并通过一个类似的(但稍微更容易)的过程转换为.cpp项目.
Tim*_*mmm -1
mBed 可能支持它,具体取决于它是哪种 STM32 芯片。在线 mBed 编译器允许导出到各种 IDE。新的离线版本(yotta)使用 cmake,它也可以导出到某些 IDE。不幸的是 yotta 目前只支持几个芯片。