当前位置: 首页 > news >正文

STM32F407VET6学习笔记11:smallmodbus_(多从机)创建新的slave从机

今日记录一些smallmodbus 创建新的slave 从机 的过程,以及使用的关键点.

目录

创建新的从机对应操作函数与buffer

创建新的从机线程与操作代码:

slave使用的要点:

完整的slave代码:

能正常通信:


创建新的从机对应操作函数与buffer

最主要的部分就是从 board_virtual.c 文件抽象新建出新的从机对应的操作函数:

可以看到,他原本就包含一系列线圈buffer以及对这些buffer的操作函数:

后续操作就是直接复制他们函数的本体,然后直接更改其调用的buffer 以及 宏定义最大下标的名称,就行了。

最终 为了额外定义出一个slave 底层操作的函数与数组宏:

而复制改写的函数与数组 、宏 效果如下:(写在 board_virtual.h 文件)

例举其对应函数,对照修改对比如下:

其余函数 与 数组 、 宏 基本都是如此修改 就行了:

新增这些操作函数后,给新定义的从机实例进行调用就行了,一般是在从机回调函数:

创建新的从机线程与操作代码:

slave使用的要点:

1. 从机的线程要与给它填充buffer的线程分开

2. 定义modbus的地址在从机回调函数中 同时 注意数组下标的计算

3.write写线圈函数是给主机master用的,从机更新线圈与寄存器是update

4.修改地址范围同步修改board_virtual.c文件中定义的数组最大下标宏

5.modbus_slave_wait_handle();函数最后一个传参,不能调用MODBUS_WAITFO_REVER词根,否则从机只会回复一次! 要使用MODBUS_WAITFO_NO

6.

完整的slave代码:

这段需要注意以下,我这个G4_485_EN();函数用于485使能脚,但这里我用的TTL通信,所以注释了对使能脚的操作!

对线程的创建是有俩个线程,一个是slave线程,一个是flush更新寄存器的线程

最后别忘了在主函数main.c初始化线程:

能正常通信:

http://www.dtcms.com/a/317051.html

相关文章:

  • GPU 优化-用 tensor core实现5G Massive MIMO 64x64
  • 无人机开发分享——基于行为树的无人机集群机载自主决策算法框架搭建及开发
  • 【嵌入式电机控制#26】BLDC:三相模拟采集
  • springboot项目前后端通用下载方法、问题和解决方案
  • [滑动窗口]904. 水果成篮
  • Maven入门到精通
  • Linux网络编程基础-简易TCP服务器框架
  • Unity笔记(一)——生命周期函数、Inspector面板、MonoBehavior、GameObject
  • Go语言版JSON转TypeScript接口生成器:支持智能递归解析与命名优化
  • 超细整理,接口测试基础+流程,真实环境下怎么测...
  • [GESP202309 四级] 2023年9月GESP C++四级上机题题解,附带讲解视频!
  • 解锁音频创作新可能:AI 人声伴奏分离神器 Replay 深度解析
  • Python 进行点云ICP(lterative Closest Point)配准(精配准)
  • 【Java String】类深度解析:从原理到高效使用技巧
  • 数论手机辅助:打造便捷高效的移动应用交互体验
  • Wisdom SSH:数据库自动化运维的坚固基石
  • WARNING: Illegal reflective access by org.apache.ibatis.reflection.Reflector
  • 八股——IM项目
  • 多端同步新解法:Joplin+cpolar联合通过开源设计实现跨平台无缝协作?
  • 2025年测绘程序设计模拟赛一--地形图图幅编号及图廓点经纬度计算
  • Python日志记录库——logaid
  • 磁悬浮转子振动控制:主动电磁力如何成为高速旋转的“振动克星”
  • 数据集相关类代码回顾理解 | sns.distplot\%matplotlib inline\sns.scatterplot
  • LeetCode 刷题【31. 下一个排列】
  • Golang 基本数据类型
  • 【vibe coding】Kubernetes + Nginx Ingress 实现云端Workspace容器分配与域名访问方案
  • Linux lvm逻辑卷管理
  • MySQL间隙锁在查询时锁定的范围
  • lesson32:Pygame模块详解:从入门到实战的2D游戏开发指南
  • Python 3.13 预览版:颠覆性特性与实战指南