FreeModbus源码结构分析
FreeModbus 官网
目录结构
【demo】-各种平台的例程
【doc】-文档资料
【modbus】-核心源码
【tools】-相关工具
FreeModus的移植主要用到…\modbus目录和 …\demo\BARE目录下的内容
【modbus】文件夹直接导入到项目,基本不需要修改
【demo\BARE】文件夹下的demo.c是一个最基本的后台演示,主要实现协议栈的初始化、激活和运行,根据实际项目需求,实现对每个modbus功能码的处理逻辑。
port目录下是实现modbus协议栈的底层驱动支持
portevent.c 事件驱动
portserial.c 串口驱动
porttimer.c t3.5定时器驱动
其中portevent.c不用修改;portserial.c实现对应MCU下串口相关配置,包括端口初始化和中断配置,中断处理函数;porttimer.c 实现t3.5定时器初始化和相应的中断处理函数
协议栈内容主要参考解读mb.c,以RTU模式为例:
协议栈主要功能函数通过函数指针实现定义:
case MB_RTU:pvMBFrameStartCur = eMBRTUStart; //开启串口接收中断,开启t3.5pvMBFrameStopCur = eMBRTUStop; //关闭串口中断,关闭t3.5peMBFrameSendCur = eMBRTUSend; //发送数据,激活串口发送状态机peMBFrameReceiveCur = eMBRTUReceive; //处理接收事件pvMBFrameCloseCur = MB_PORT_HAS_CLOSE ? vMBPortClose : NULL;pxMBFrameCBByteReceived = xMBRTUReceiveFSM; //串口接收状态机pxMBFrameCBTransmitterEmpty = xMBRTUTransmitFSM;//串口发送状态机pxMBPortCBTimerExpired = xMBRTUTimerT35Expired; //t3.5超时处理eStatus = eMBRTUInit( ucMBAddress, ucPort, ulBaudRate, eParity );break;
freemodbus基本是通过状态机+事件机制的巧妙结合实现协议栈的稳定运行
协议栈主要运行流程
t3.5定时器在整个协议栈运行过程中扮演者重要的角色
FreeModbus源码结构分析相关推荐
- (转)Android 源码结构分析
Android 2.1 源码结构分析 Android 2.1总目录 |-- Makefile |-- bionic (bionic C库) |-- bootable ...
- freemodbus源码/获取地址
官网源码地址:点击访问 FreeMODBUS是一个奥地利人写的Modbus协议.它是一个针对嵌入式应用的一个免费(自由)的通用MODBUS协议的移植.Modbus是一个工业制造环境中应用的一个通用协议 ...
- FreeModbus源码获取
1.进入官网:https://www.embedded-solutions.at/en/freemodbus/ 2.进入下载页面 3.下载源码 4.解压源码 5.查看FreeRTOS源码
- QtCreator源码分析(三)——QtCreator源码结构分析
一.QtCreator源码目录简介 QtCreator-2.8.1包含5000多个文件,代码行数超过了110万行. 源码目录如下: bin: 生成Linux平台shell脚本. dist: 安装文件配 ...
- LWIP源码结构分析
LWIP(Light weight internet protocol)主要模块包括:配置模块,初始化模块,NetIf模块,mem(memp)模块,netarp模块,ip模块,udp模块,icmp模 ...
- Android2.3.7源码结构分析
对Andorid系统进行分析或者系统功能定制的时候,我们经常需要在众多文件中花费大量时间定位所需关注的部分.为了减轻这部分枯燥而不可避免的工作,本文对2.3.7版本的源码结构进行了简单分析.希望对刚加 ...
- android源码结构分析
android各版本源码目录结构大同小异,build->core->version_defaults.md中找到PLATFORM_SDK_VERSION字段,PLATFORM_SDK_VE ...
- 鸿蒙源码图片,全网最全的鸿蒙源码结构分析(附自制4张架构图)
前言:今天下午到晚上折腾了6个多小时,从官网一直到Gitee和CodeChina,把所有知道的资料都看了一下,整理了一份鸿蒙架构和源码对比图给大家,希望大家都来看看. 文章目录 O.视频观看地址: 一 ...
- Android 源码结构分析
源码版本:AOSP_7.1.1 硬件平台:Rockchip 由于工作要求,需要对rockchip平台的安卓系统进行剪裁.安卓源码比较庞大,会让人感到无从下手,对此,有必要了解一下源码的大致目录结构以及 ...
最新文章
- 手机号验证_国际手机号收不到微博验证短信,微博验证短信一直提示超过上限怎么办?...
- mysql query cache 命中率_MySQL缓存命中率概述及如何提高缓存命中率
- jQuery版本不同及多次引用问题
- 把浮点数转为字符串(隐形把数据进行四舍五入)
- C.【转】C语言字符串与数字相互转换
- mvc 404错误 php,java - springmvc 请求无法到达controller,出现404错误
- 分享下自己编译 XBMC 的过程(zhuan)
- 计算机网络原理期末复习提纲,《计算机网络原理》考试复习提纲.doc
- centos7.3安装mysql5.7 解决 Access denied for user 'root'@'localhost' (using password: NO)
- 零基础学python实战-零基础学习python_类和对象(36-40课)
- 迷你MVVM框架 avalonjs 0.71发布
- [Windows 故障]Ping通却无法连接网页 + Apple Mobile Device 自动停止
- “5G+工业互联网”重点企业,苏州真趣成功入选
- DX11版引擎即将发布 陈飞舟谈背后故事
- en结尾的单词_以en结尾的形容词
- html水平导航栏代码连接状态,水平导航栏1.html
- 当欧洲开始通过页游对抗假新闻,中国何时起步媒介素养培育?
- 如何使用OpenSSL工具生成根证书与应用证书
- uni app中使用图表
- Windows环境下文件夹自动同步的实现
热门文章
- Linux基本命令---Linux进程管理指令
- zData上新丨2000/5000系列数据库一体机带来三重提升
- QT应用编程: windows下使用UDT传输协议_创建工程示例(高速数据传输)
- Apache Kafka API AdminClient Scram账户的操作(增删改查)
- linux个人网站制作教程,用LaTeX制作个人简历
- android 内存不足警告,安卓手机老是提示内存不足怎么办
- VB standard-module bas文件 调用
- 中国有多少个省,多少个直辖市,多少个特别行政区,多少个自治区
- 刚参加完阿里面试:一面+二面+三面+HR四面,我的复盘经验总结
- Rational Rose 画时序图 且保存为图片文件