stm32f4 ROS 如何解决编译错误
stm32f407 Discovery 裸机支持ROS(Robot Operating System)系统的rosserial。Project的GitHub地址:https://github.com/will1991/stmf4VCP-ROSSERIAL
这个Project用的是cubeMX 最新版本和 MDK PRO 5.23版本编写编译,选择的语言是C++和C混编,没得招~,rosserial library是C++编写的,编译产生的警告可以忽略。
需要说明编译出现错误的原因:
- MDK版本不对
- 会出现类型不兼容的错误
-
我的版本信息
-
cubeMX在重新生成代码的时候删除了部分宏定义
- 错误:../Inc/tim.h(71): error: #337: linkage specification is incompatible with previous "_Error_Handler" (declared at line 130 of "../Inc/main.h")
-
解决办法:修改main.c文件的开头部分如下:
1 #ifdef __cplusplus 2 extern "C" { 3 #endif 4 #include "main.h" 5 #include "stm32f4xx_hal.h" 6 #include "tim.h" 7 #include "usb_device.h" 8 #include "gpio.h" 9 #ifdef __cplusplus 10 } 11 #endif
-
在while结束位置同样添加相应的宏定义
-
1 #ifdef __cplusplus 2 extern "C" { 3 #endif
- main.c文件末尾添加:
-
1 #ifdef __cplusplus 2 } 3 #endif
QQ讨论群:636457705

浙公网安备 33010602011771号