在 ros 中，用于串口通信的是 rosserial，在 ros2 中，替代的是 micro-ROS. 创建项目 使用 stm32cube 先创建好一个工程，配置好相关的参数。 生成 micro-ros 静态库 可以先看下介绍 https://github.com/micro-ROS/micro_ros_setup 在项目文件夹下面，clone 一下 https://github.com/micro-ROS/micro_ros_stm32cubemx_utils 进入 micro_ros_stm32cubemx_util 之后，切换到 ros 版本分支，比如 foxy 根据需要，决定是否使用 dos2unix。 修改 Makefile，增加如下: ####################################### # micro-ROS addons ####################################### LDFLAGS += micro_ros_stm32cubemx_utils/microros_static_library/libmicroros/libmicroros.a C_INCLUDES += -Imicro_ros_stm32cubemx_utils/microros_static_library/libmicroros/microros_include Add micro-ROS utils C_SOURCES += micro_ros_stm32cubemx_utils/extra_sources/custom_memory_manager.c C_SOURCES += micro_ros_stm32cubemx_utils/extra_sources/microros_allocators.c C_SOURCES += micro_ros_stm32cubemx_utils/extra_sources/microros_time.c Set here the custom transport implementation C_SOURCES += micro_ros_stm32cubemx_utils/extra_sources/microros_transports/dma_transport.c print_cflags: @echo $(CFLAGS) + 拉取生成 micro-ros 库的 docker `docker pull microros/micro_ros_static_library_builder:foxy` + 运行 `docker run -it --rm -v $(pwd):/project --env MICROROS_LIBRARY_FOLDER=micro_ros_stm32cubemx_utils/microros_static_library microros/micro_ros_static_library_builder:foxy` + 查看生成的静态库 `micro_ros_stm32cubemx_utils/microros_static_library/libmicroros/libmicroros.a` # 使用 micro-ros + 参考 micro_ros_stm32cubemx_utils 下面的 sample_main ，修改项目自身的 main # 参考: + [How to setup micro-ROS on any STM32 microcontroller](https://www.youtube.com/watch?v=xbWaHARjSmk) + [【分享】microROS 和 rosserial 对比](https://fishros.org.cn/forum/topic/1960/%E5%88%86%E4%BA%AB-microros-%E5%92%8C-rosserial-%E5%AF%B9%E6%AF%94) + [stm32系列MICROROS环境配置（使用cubemx+clion+freertos）](https://fishros.org.cn/forum/topic/2423/stm32%E7%B3%BB%E5%88%97microros%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE-%E4%BD%BF%E7%94%A8cubemx-clion-freertos)