STM32CubeMX+micro_ros_stm32cubemx_utils库

2023-12-14 13:13:42

GitHub - micro-ROS/micro_ros_stm32cubemx_utils at humble

?这个就是下载这个代码库以后的文件结构。其中sample_project.ioc就是平时STM32CubeMX的工程文件。类似于visual studio里面的项目文件?。打开以后是这个样子的:

?可以看到跟本文后面的那些配置是几乎一模一样,就是说这个包里面包含了STM32CubeMX工程文件了

Using this package with STM32CubeMX

  1. Clone this repository in your STM32CubeMX project folder.(这里说的project folder是因为平时STM32CubeMX所有的项目都是位于一个文件夹内的,例如我的位于文件夹 stm32_ws内,图片中我的project folder就是stm32_ws,而图片中stm32f103c8t6是我的一个项目,stm32f407是另外一个项目,其他项目都会在这个stm32_ws内) A sample project can be generated with the provided?sample_project.ioc.

  2. Make sure that your STM32CubeMX project is using a?Makefile?toolchain (toolchain指交叉编译器,我觉得就是跨平台编译的东西例如cmake,这里选择使用makefile交叉编译器系统,这个代码库下载后也可以看到有mkefile文件,应该用于交叉编译的,有意思的是:CMakelists.txt最后也是生成了makefile文件)under?Project Manager -> Project

  3. Make sure that if you are using FreeRTOS, the micro-ROS task?has more than 10 kB of stack:?

  4. Configure the transport interface on the STM32CubeMX project, check the?Transport configuration?section for instructions on the custom transports provided.在STM32CubeMX内设置串口

  5. Modify the generated?Makefile?to include the following code?before the?build the application?section:修改makefile文件,在build the application之前添加后面这个代码

    #######################################
    # 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
    #注意看这里添加的是DMA传输方式文件,所以前面应该配置的是DMA传输方式,如果使用的是中断方
    #就不知道添加哪个文件了也许大概是包含IT_transport.c这样的一个文件吧
    
    print_cflags:
       @echo $(CFLAGS)
  6. Execute the static library generation tool. 编译Compiler flags will retrieved automatically from your?Makefile?and user will be prompted to check if they are correct.(注意了:我在这里没有使用docker,我就是执行了那个文件夹里面的sh文件。但是可以从后边这个代码看出来,需要在命令中传递一个参数进去,那就是MICROROS_LIBRARY_FOLDER,要在命令行中传递这个参数的值,否则会异常,或者也可以修改sh文件,给文件里面的MICROROS_LIBRARY_FOLDER赋值,也就是类似于这样)

  7. 可以看到在sh文件中是使用了一个bash变量$MICROROS_LIBRARY_FOLDER,所以应该是这样:

    export MICROROS_LIBRARY_FOLDER=静态库文件夹的地址
  8. docker pull microros/micro_ros_static_library_builder:humble(这里遇到permission denied,所以需要先切换到超级用户在控制台输入su,然后再执行这个命令就可以了)
    
    docker run -it --rm -v $(pwd):/project --env MICROROS_LIBRARY_FOLDER=micro_ros_stm32cubemx_utils/microros_static_library microros/micro_ros_static_library_builder:humble
  9. Modify your?main.c?to use micro-ROS.(在开发文件cpp文件中根据需要使用micro-ros内容) An example application can be found in?sample_main.c.

  10. Continue your usual workflow building your project and flashing the binary:

    make -j$(nproc)

Transport configuration(STM32与micro_ros支持的通讯方式)

Available transport for this platform are:

U(S)ART with DMA(DMA方式的串口通讯)

Steps to configure:

  • Enable U(S)ART in your STM32CubeMX
  • For the selected USART, enable DMA for Tx and Rx under?DMA Settings
  • Set the DMA priotity to?Very High?for Tx and Rx
  • Set the DMA mode to?Circular?for Rx:?Detail
  • For the selected, enable?global interrupt?under?NVIC Settings:?Detail

U(S)ART with Interrupts(中断方式串口通讯)

Steps to configure:

  • Enable U(S)ART in your STM32CubeMX
  • For the selected USART, enable?global interrupt?under?NVIC Settings:?Detail

USB CDC

Steps to configure:

  • Enable the USB in your STM32CubeMX?Connectivity?tab.

  • Select the?Communication Device Class (Virtual Port Com)?mode on the?Middleware -> USB_DEVICE?configuration.

    Note: The micro-ROS transport will override the autogenerated?USB_DEVICE/App/usbd_cdc_if.c?methods.

文章来源:https://blog.csdn.net/geniusChinaHN/article/details/134848561
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。