STM32CubeMX+micro_ros_stm32cubemx_utils库

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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/235115.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【HarmonyOS开发】拖拽动画的实现

动画的原理是在一个时间段内,多次改变UI外观,由于人眼会产生视觉暂留,所以最终看到的就是一个“连续”的动画。UI的一次改变称为一个动画帧,对应一次屏幕刷新,而决定动画流畅度的一个重要指标就是帧率FPS(F…

Vue左侧菜单栏显示问题

关于 使用若依系统,路由中左侧菜单栏一级菜单中只有一个二级菜单,一级菜单不显示的问题!!! 在一级组件中添加 alwaysShow: true,

c4--函数和指针

函数和指针 指针 函数 函数指针 1、以下选项中,合法的一组C语言数值常量是(A )。 A、12. 0Xa23 4.5e0 // B、028 5e-3 -0xf //NO C、.177 4e1.5 0abc D、0x8A 10,000 3.e5 // 不能有逗号 解答: B、028 这个有问题 C: 这个…

普冉PY32系列(十三) SPI驱动WS2812全彩LED

目录 普冉PY32系列(一) PY32F0系列32位Cortex M0 MCU简介普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode开发环境普冉PY32系列(三) PY32F002A资源实测 - 这个型号不简单普冉PY32系列(四) PY32F002A/003/030的时钟设置普冉PY32系列(五) 使用JLink RTT代替串口输出日志普冉PY32…

【数据结构(十·树结构的实际应用)】赫夫曼树(2)

文章目录 1. 基本介绍2. 赫夫曼树的创建2.1. 思路分析2.2. 代码实现 1. 基本介绍 给定 n 个权值作为 n 个叶子结点,构造一棵二叉树,若该树的 带权路径长度(wpl) 达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tre…

FL Studio21最新FL水果编曲软件中文版在哪下载?

FL Studio21水果编曲软件是一款专业的音乐制作软件,被广泛地应用于电子音乐、hip-hop、流行乐等多种音乐类型的制作。该软件提供了丰富的音频编曲工具和音乐效果器,让用户可以轻松地创作出高品质的音乐作品。同时,这也是一款非常易于上手的软…

登录rabbitMQ管理界面时浏览器显示要求进行身份验证,与此站点连接不安全解决办法

问题描述 最近在黑马学习rabbitMQ的过程中,在使用docker部署好rabbitMQ后,使用账号为:itcast,密码为:123321 登录的时候浏览器显示了这个问题,如图所示: 当时以为自己需要输入自己的浏览…

【Apipost】批量删除我的51CTO文章

文章目录 一、序二、API分析三、Apipost测试四、脚本五、Apipost中完成 一、序 去年开始再51CTO同步更新文章,一年多过去了,只涨了3个粉丝。看了下这个平台就是卖课、搞培训的,退出了。决定把文章也删除了(有人私信我说专门注册了…

RCNN 学习

RCNN算法流程 RCNN算法流程可分为4个步骤 一张图像生成1K~2K个候选区域(使用Selective Search方法)对每个候选区域,使用深度网络图特征特征送入每一类的SVM分类器,判别是否属于该类使用回归期器细修正候选框位置 1.候选区域的生…

【论文极速读】视频检索中的模态均衡方法

【论文极速读】视频检索中的模态均衡方法 FesianXu 20231206 at Baidu Search Team 前言 传统的视频搜索系统相关性部分主要以文本匹配为基础手段,在其中引入多模态向量容易收到『模态不均衡』的问题,论文[1]尝试对其进行解决,本文进行笔记。…

二维码智慧门牌管理系统升级解决方案:数字化房产管理

文章目录 前言一、全面信息记录:提升管理效率二、多种优势功能:系统化管理与无缝对接三、安全隐私保护:数据安全的重要性四、总结:提升管理效率与居住体验 前言 科技驱动房产管理 随着科技的飞速发展,房产管理领域也面…

udp多播组播

import socket ,struct,time# 组播地址和端口号 MCAST_GRP 239.0.0.1 MCAST_PORT 8888 # 创建UDP socket对象 sock socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) # 绑定socket对象到本地端口号 # sock.bind((MCAST_GRP, MCAST_PORT)) …

D28|买卖股票的最佳时机+跳跃游戏

122.买卖股票的最佳时机 II 初始思路: 这道题解题的时候比较像在找规律,发现只要计算这个过程中的两数之差然后相加即可。 题解复盘: 可以更加清晰的发现如何从题意中获得贪心的思路。 如何贪心:局部最优:收集每天的…

Unity中Batching优化的GPU实例化(3)

文章目录 前言一、UNITY_SETUP_INSTANCE_ID(v);二、在UnityInstancing.cginc文件中,看一下Unity这句话做了什么1、使用了该 .cginc 后,会自动预定义该函数2、需要满足GPU实例化条件,才会执行对应语句3、满足GPU实例化后,主要执行的…

【Web】SCU新生赛个人wp及完赛感想

目录 一些碎碎念: Web Guideline 2048 ezupload hardupload ezphp ezweb ezsql webbuilder tarit tarit_revenge VipDinner simplespi 一些碎碎念: scu新生赛是我全心全力打的第二场比赛,历时七天,期间不免煎熬&…

[GPT]Andrej Karpathy微软Build大会GPT演讲(下)--该如何使用GPT助手

该如何使用GPT助手--将GPT助手模型应用于问题 现在我要换个方向,让我们看看如何最好地将 GPT 助手模型应用于您的问题。 现在我想在一个具体示例的场景里展示。让我们在这里使用一个具体示例。 假设你正在写一篇文章或一篇博客文章,你打算在最后写这句话。 加州的人口是阿拉…

[足式机器人]Part2 Dr. CAN学习笔记-自动控制原理Ch1-2稳定性分析Stability

本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记-自动控制原理Ch1-2稳定性分析Stability 0. 序言1. 稳定的分类2. 稳定的对象3. 稳定的系统4. 系统稳定性的讨论5. 补充内容——Transfer Function(传递函数) - nonzero Initial Condition(非零初始…

C现代方法(第27章)笔记——C99对数学计算的新增支持

文章目录 第27章 C99对数学计算的新增支持27.1 <stdint.h>: 整数类型(C99)27.1.1 <stdint.h>类型27.1.2 对指定宽度整数类型的限制27.1.3 对其他整数类型的限制27.1.4 用于整型常量的宏 27.2 <inttype.h>: 整数类型的格式转换(C99)27.2.1 用于格式指定符的宏…

【设计模式--创建型--建造者模式】

建造者模式 建造者模式概述结构结果优缺点使用场景 将上述案例改为链式调用结果 建造者模式 概述 将一个复杂对象的构建与表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 分离了部件的构建&#xff08;由Builder来负责&#xff09;和装配&#xff08;由Direct…

接触刚性环境任务下的机器人力控(阻抗)性能测试

内涵 接触刚性环境任务下的机器人力控&#xff08;阻抗&#xff09;性能测试旨在评估机器人在与刚性物体交互时的性能表现。这种测试通过调整机器人的控制参数&#xff0c;如期望刚度和期望阻尼等&#xff0c;并分析记录的数据&#xff0c;旨在确保机器人能够在执行任务时保持…