我想在C ++中使用HAL为STM32创建一个项目。 不幸的是,CubeMX仅支持C中的项目。但是,HAL支持C ++。
我在CubeMX中创建了一个项目,我试图将其导入上面的任何IDE但没有任何成功,因为它是作为C项目导入的。所以它看起来不是一个好的解决方案。
另外,我尝试在上述IDE中创建一个C ++项目,并从CubeMX中添加文件。这似乎更逻辑,但我不能以正确的方式做到这一点,因为我的配置仍然是错误的。
有人能解释我如何在Eclipse或Atollic TrueSTUDIO中配置新的C ++项目才能使用HAL?
答案 0 :(得分:6)
最新版本的CubeMX支持System Workbench 4 STM32,它是一个基于Eclipse的IDE,预先配置为STM32目标开发。它可以选择将项目转换为C ++(在项目浏览器中右键单击项目,然后选择“转换为C ++”)。
请注意,我没有使用此方法的直接经验。我们使用STM HAL并在此基础上构建我们的C ++应用程序,所以这绝对是可能的,但我们的IDE是Keil,所以YMMV。
答案 1 :(得分:5)
如何将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 自然会是一个更好的名字。
编辑:搜索Eclipse的“C ++性质”帮助,获取有关如何使用菜单File / New / Other / Convert to C / C ++ Make Project添加C ++性质的提示。defined extern "C"
1修改函数原型.c side side正在调用.cpp中定义的回调(通过预先挂起的defined extern "C"
修改.cpp端的函数定义。一些注意事项:
改进空间:可能有一个CubeMX模板可以进行编辑,以使这些更改更加自动化,但我对CubeMX模板的了解不足以使这种黑客变得更加优雅。
我也将CubeMX与IAR EWARM一起使用,并通过类似(但稍微更简单)的过程转换为.cpp项目。
答案 2 :(得分:0)
有一种非常简单的方法可以在stm32cubeide
中构建cpp项目
main.c
中的cpp函数使一个简单的函数如main2()
main.c
调用它,现在可以通过main2()
函数使用cpp函数答案 3 :(得分:-1)
取决于它是哪个STM32芯片,mBed可能支持它。在线mBed编译器允许导出到各种IDE。新的离线版(yotta)使用cmake,它也可以导出到某些IDE。不幸的是,yotta目前仅支持几个筹码。