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++编写的,编译产生的警告可以忽略。

需要说明编译出现错误的原因:

  1. MDK版本不对
    • 会出现类型不兼容的错误
    • 我的版本信息

    •  

  2. 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

posted @ 2017-06-21 15:10  TomWill  阅读(1454)  评论(0)    收藏  举报