【笔记------freemodbus】一、stm32的裸机modbus-RTU从机移植(HAL库)

freemodbus的官方介绍和下载入口,官方仓库链接:https://github.com/cwalter-at/freemodbus
modbus自己实现的话往往是有选择的支持几条指令,像断帧和异常处理可能是完全不处理的,用freemodbus实现的话要简单很多,可移植性也会更好
△ 本文的移植方法主要参考这个仓库(参考仓库1):https://github.com/eziya/STM32_HAL_FREEMODBUS_RTU
△ 一些调整参考这个仓库(参考仓库2):https://github.com/armink/FreeModbus_Slave-Master-RTT-STM32,因为freemodbus主机并不开源,此仓库在freemodbus基础上实现了一个主机
△ 本文主要记录移植的主要步骤,不涉及其他分析,不涉及代码精简优化
△ 这里使用平台为stm32,移植官方仓库的代码,移植方法参考上面的两个仓库,模式为串口RTU

    1. 项目文件添加:
    • 官方的仓库下载好是这样的
      在这里插入图片描述

    • 把这些文件夹下的文件全加到自己的项目中,./modbus./demo/BARE
      在这里插入图片描述

    • 可以一股脑的把所有的源文件和头文件目录都加上去
      在这里插入图片描述
      在这里插入图片描述

    1. 把demo.c中的main函数注释掉,没意外的话现在可以编译成功了,报下面的错误的话可能需要把优化等级调高,或者直接把这个函数注释掉,看代码可以知道这是ASCII模式下的一个延时函数,RTU模式用不到
      在这里插入图片描述
      在这里插入图片描述
    1. 文件修改,主要是portserial.cportimer.cdemo.c、stm32xxxx_it.c
    • 参考仓库1是一个stm32f4的hal工程,只要照着改就可以了,修改的内容也不多,,,
    • 上述修改完成输入寄存器可以用了,但可以看到他并没有做其他命令的适配(线圈、保持、离散寄存器),这时使用参考仓库2来完善demo.c中的几个回调函数并添加对应的寄存器
      • 参考仓库2是个RT-Thread工程,我们只需要参考他的user_mb_app.c文件改下几个回调函数就可以了
      • 可以看到参考仓库2多了不少定义来更方便的定义寄存器地址位置
      • 然后把原本demo.c中注释掉的main函数里面的操作放到你的主函数就好了
      • 需要注意这里的地址有个减一操作,而参考仓库1是没有的,基本都是CV就行了。至此修改完成
      • 一些配置可以在mbconfig.h中修改
        在这里插入图片描述
  • 授之以鱼不如授之以渔,方法如上,多折腾几遍就好了,上文中并没有事无巨细的实例操作,,,没有粘太多代码,因为只要按上面的步骤看别人的例子代码都是现成的。。。感谢开源社区的贡献者们!!

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

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

相关文章

Elasticsearch基础篇(七):分片大小修改和路由分配规则

Elasticsearch基础篇(七):分片大小修改和路由分配规则1. 分片1.1 主分片(Primary Shard)1.2 副本分片(Replica Shard)1.3 分片路由(Routing Shard) 2. 分片分配的基本策略3. 分片写入验证3.1 数…

AI RAG应用的多种文档分块代码

在开发 RAG 应用程序时,重要的是要有一个完善的文档分块模式来攫取内容。虽然有很多库可以实现这一目标,但重要的是要了解这一过程的基本机制,因为它是 AI RAG 应用程序的基石。 欢迎关注公众号(NLP Research) 测试文档 在测试文档中,我们将使用亚马逊文档中的大型 PDF…

C#使用CryptoStream类加密和解密字符串

目录 一、CrytoStream的加密方法 二、CrytoStream的解密方法 三、实例 1.源码Form1.cs 2.类库Encrypt.cs 3.生成效果 在使用CryptoStream前要先引用命名空间using System.Security.Cryptography。 一、CrytoStream的加密方法 记住,不能再使用DESCryptoServi…

谷粒学院项目redirect_uri 参数错误微信二维码登录

谷粒学院项目redirect_uri 参数错误_redirect_uri": "http%3a%2f%2fguli.shop%2fapi%2fuce-CSDN博客 修改本地配置 # ����˿� server.port8160 # ����&#x…

我的隐私计算学习——联邦学习(3)

本篇笔记主要是根据这位老师的知识分享整理而成【公众号:秃顶的码农】,我从他的资料里学到了很多,期间还私信询问了一些困惑,都得到了老师详细的答复,相当nice! (五)纵向联邦学习 —…

网络多线程开发小项目--QQ登陆聊天功能(发文件)

9.1.5、QQ登陆聊天功能(发文件) 1、需求分析 2、思路分析 3、代码实现 Common: 1) cn.com.agree.qqcommon.MessageType String MESSAGE_FILE_MESSAGE"8";//文件消息2) cn.com.agree.qqcommon.Message private byte[] fileBytes ;private i…

八、Stm32学习-USART-中断与接收数据包

1.通信接口 全双工就是数据的收和发可以同时进行;半双工就是数据的收和发不能同时进行。 异步时钟是设备双方需要约定对应的波特率;同步时钟是设备双方有一根时钟线,发送或接收数据是根据这根时钟线来的。 单端电平是需要共GND;…

2023 年最值得推荐的11个视频转换器(免费和付费)

拥有一个视频转换器供您使用意味着您可以轻松地在任何设备上播放所有视频。我们展示了适用于 Windows 的最佳视频转换器,这样您就不必浪费时间使用不合格的工具。 录制、编辑和分享视频是人生最大的消遣之一。有如此多的设备能够捕捉视频——而且共享它们的途径也很…

【Git】查看凭据管理器的账号信息,并删除账号,解决首次认证登录失败后无法重新登录的问题

欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是是《代码管理工具》序列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的…

Python编程作业一:程序基本流程

目录 一、多分支语句 二、判断闰年 三、猴子吃桃问题 四、上/下三角形乘法表 五、猜数字游戏 一、多分支语句 某商店出售某品牌的服装,每件定价132元,1件不打折,2件(含)到3件(含)打9折&…

可拖拽表单比传统表单好在哪里?

随着行业的进步和发展,可拖拽表单的应用价值越来越高,在推动企业实现流程化办公和数字化转型的过程中发挥了重要价值和作用,是提质增效的办公利器,也是众多行业客户朋友理想的合作伙伴。那么,可拖拽表单的优势特点表单…

【时光记:2023的心灵旅程】

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

ARM Cortex-Mx 权威指南笔记—SysTick定时器

前言 通过本次学习你可以学到: 1、什么是SysTick定时器? 2、Systick定时器的操作。 3、如何使用Systick定时器。 正文内容参考 ARM Cortex-Mx 权威指南笔记 9.5小节。 什么是Systick定时器 SysTick定时器是Cortex-M处理器内部集成的名为系统节拍定时…

【python,机器学习,nlp】RNN循环神经网络

RNN(Recurrent Neural Network),中文称作循环神经网络,它一般以序列数据为输入,通过网络内部的结构设计有效捕捉序列之间的关系特征,一般也是以序列形式进行输出。 因为RNN结构能够很好利用序列之间的关系,因此针对自…

电位器

一、电位器简介 电位器是一种可调的电子元件。它是由一个电阻体和一个转动或滑动系统组成。当电阻体的两个固定触电之间外加一个电压时,通过转动或滑动系统改变触点在电阻体上的位置,在动触点与固定触点之间便可得到一个与动触点位置成一定关系的电压。…

C++系列-第1章顺序结构-6-加法、减法和乘法

在线练习: http://noi.openjudge.cn/ https://www.luogu.com.cn/ 总结 本文是C系列博客,主要讲述加法减法乘法的用法 加法 减法 乘法 当然可以。下面我将分别为初一的同学提供C中加法、减法、乘法的简单教程和案例,最后再提供一个综合性的…

【Linux驱动】Linux的中断系统 | 中断的重要数据结构

🐱作者:一只大喵咪1201 🐱专栏:《Linux驱动》 🔥格言:你只管努力,剩下的交给时间! 目录 🏀Linux系统的中断⚽中断分类软中断和硬中断中断的上半部和下半部 ⚽tasklet⚽工…

Android studio调试

Android Studio连接手机详细教程(包含遇到的问题集)_android studio 连接手机-CSDN博客 可以创建虚拟机或直连真机或直连模拟器。 无法打开本地终端 Android studio Failed to start [powershell.exe] 利用Android studio的adb命令删除app应用 - 简书 利用ADB工具免root停用A…

如何下载 DEM数字高程数据(SRTM和COPERNICUS)

数字高程模型(Digital Elevation Model,DEM)是地球表面的数字表示,以地形高程信息的形式存在。DEM通常以栅格或点云的形式存在,其中每个单元(栅格或点)都具有对应的高程数值。DEM可以使用各种技…

第88讲:XtraBackup实现增量数据备份以及故障恢复的应用实践

文章目录 1.XtraBackup增量备份恢复的概念2.XBK增量备份语法3.使用XBK实现数据库的增量备份3.1.周日全量备份数据库3.2.周一产生增量数据并进行增量备份3.3.周二产生增量数据并进行增量备份3.4.查看两次增量以及全量的备份文件3.5.核对全量和增量备份的准确性 4.使用XBK通过增量…