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源码结构分析相关推荐

  1. (转)Android 源码结构分析

    Android 2.1 源码结构分析 Android 2.1总目录 |-- Makefile |-- bionic               (bionic C库) |-- bootable     ...

  2. freemodbus源码/获取地址

    官网源码地址:点击访问 FreeMODBUS是一个奥地利人写的Modbus协议.它是一个针对嵌入式应用的一个免费(自由)的通用MODBUS协议的移植.Modbus是一个工业制造环境中应用的一个通用协议 ...

  3. FreeModbus源码获取

    1.进入官网:https://www.embedded-solutions.at/en/freemodbus/ 2.进入下载页面 3.下载源码 4.解压源码 5.查看FreeRTOS源码

  4. QtCreator源码分析(三)——QtCreator源码结构分析

    一.QtCreator源码目录简介 QtCreator-2.8.1包含5000多个文件,代码行数超过了110万行. 源码目录如下: bin: 生成Linux平台shell脚本. dist: 安装文件配 ...

  5. LWIP源码结构分析

    LWIP(Light weight internet protocol)主要模块包括:配置模块,初始化模块,NetIf模块,mem(memp)模块,netarp模块,ip模块,udp模块,icmp模 ...

  6. Android2.3.7源码结构分析

    对Andorid系统进行分析或者系统功能定制的时候,我们经常需要在众多文件中花费大量时间定位所需关注的部分.为了减轻这部分枯燥而不可避免的工作,本文对2.3.7版本的源码结构进行了简单分析.希望对刚加 ...

  7. android源码结构分析

    android各版本源码目录结构大同小异,build->core->version_defaults.md中找到PLATFORM_SDK_VERSION字段,PLATFORM_SDK_VE ...

  8. 鸿蒙源码图片,全网最全的鸿蒙源码结构分析(附自制4张架构图)

    前言:今天下午到晚上折腾了6个多小时,从官网一直到Gitee和CodeChina,把所有知道的资料都看了一下,整理了一份鸿蒙架构和源码对比图给大家,希望大家都来看看. 文章目录 O.视频观看地址: 一 ...

  9. Android 源码结构分析

    源码版本:AOSP_7.1.1 硬件平台:Rockchip 由于工作要求,需要对rockchip平台的安卓系统进行剪裁.安卓源码比较庞大,会让人感到无从下手,对此,有必要了解一下源码的大致目录结构以及 ...

最新文章

  1. 手机号验证_国际手机号收不到微博验证短信,微博验证短信一直提示超过上限怎么办?...
  2. mysql query cache 命中率_MySQL缓存命中率概述及如何提高缓存命中率
  3. jQuery版本不同及多次引用问题
  4. 把浮点数转为字符串(隐形把数据进行四舍五入)
  5. C.【转】C语言字符串与数字相互转换
  6. mvc 404错误 php,java - springmvc 请求无法到达controller,出现404错误
  7. 分享下自己编译 XBMC 的过程(zhuan)
  8. 计算机网络原理期末复习提纲,《计算机网络原理》考试复习提纲.doc
  9. centos7.3安装mysql5.7 解决 Access denied for user 'root'@'localhost' (using password: NO)
  10. 零基础学python实战-零基础学习python_类和对象(36-40课)
  11. 迷你MVVM框架 avalonjs 0.71发布
  12. [Windows 故障]Ping通却无法连接网页 + Apple Mobile Device 自动停止
  13. “5G+工业互联网”重点企业,苏州真趣成功入选
  14. DX11版引擎即将发布 陈飞舟谈背后故事
  15. en结尾的单词_以en结尾的形容词
  16. html水平导航栏代码连接状态,水平导航栏1.html
  17. 当欧洲开始通过页游对抗假新闻,中国何时起步媒介素养培育?
  18. 如何使用OpenSSL工具生成根证书与应用证书
  19. uni app中使用图表
  20. Windows环境下文件夹自动同步的实现

热门文章

  1. Linux基本命令---Linux进程管理指令
  2. zData上新丨2000/5000系列数据库一体机带来三重提升
  3. QT应用编程: windows下使用UDT传输协议_创建工程示例(高速数据传输)
  4. Apache Kafka API AdminClient Scram账户的操作(增删改查)
  5. linux个人网站制作教程,用LaTeX制作个人简历
  6. android 内存不足警告,安卓手机老是提示内存不足怎么办
  7. VB standard-module bas文件 调用
  8. 中国有多少个省,多少个直辖市,多少个特别行政区,多少个自治区
  9. 刚参加完阿里面试:一面+二面+三面+HR四面,我的复盘经验总结
  10. Rational Rose 画时序图 且保存为图片文件