https://github.com/armink/FreeModbus_Slave-Master-RTT-STM32

http://www.360doc.com/content/14/0906/09/17350204_407389804.shtml

http://blog.csdn.net/dldw8816/article/details/50595154

https://www.cnblogs.com/skl374199080/archive/2013/12/16/3476153.html

http://blog.csdn.net/arminkztl/article/details/11738395

从机流程

/*first:
->从机等待串口数据包
->接收到数据包触发串口中断-
->xMBRTUReceiveFSM()函数
-->不断接收数据但不保存,不断重置定时器-
->直到数据接收完后产生3.5T定时器中断,代表接收完成
->中断函数调用xMBRTUTimerT35Expired(void)函数
->根据状态RXINIT调用xMBPortEventPost(EV_READY)事件函数加入序列
->关闭定时器,设为RXIDLE,返回主程序。
->主程序poll根据EVREADY空操作取出事件,返回
second:
->再次接收到串口数据包
->进入中断函数xMBRTUReceiveFSM()
->根据状态RXIDLE数据存入RTUBUF,状态设为RXRCV,启动定时器
->收到下个数据包,存储数据并重置定时器,不断重复直到接收完数据包
->收完后产生3.5T定时中断xMBRTUTimerT35Expired()
->根据RXRCV发送事件EV_FRAME_RECEIVED,关闭定时器设为RXIDLE,返回主程序poll
->根据FRAMERECEIVED调用eMBRTUReceive()处理收到数据的存储指针,然后发送事件EV_EXECUTE
->然后返回主程序,继续执行poll,
->根据EVEXECUTE,提取功能码,并判断功能码确定功能处理函数指针,并调用该函数
处理:
->调用功能函数解析数据包(长度/地址、寄存器数量)
->执行功能函数的回调函数,提取数据。返回poll
->执行eMBRTUSend()
->TXXMIT,使能串口发送功能
->发送中断,调用xMBRTUTransmitFSM( )函数,输出完毕事件设为EV_FRAME_SENT,禁用串口发送,状态改为TXIDLE------à返回poll,根据FRAMESENT取出事件清空队列,一个循环完成
*/

最新文章

  1. JAVA基础知识xml,date
  2. [Bug] 解决透明 Activity 在 Android 6.0 背景不透明
  3. 实现PHPCMS手机门户的伪静态
  4. 【追寻javascript高手之路02】变量、作用域知多少?
  5. PHP基础语法: echo,var_dump, 常用函数:随机数:拆分字符串:explode()、rand()、日期时间:time()、字符串转化为时间戳:strtotime()可变参数的函数:PHP里数组长度表示方法:count($attr[指数组]);字符串长度:strlen($a)
  6. 慕课网:C++ & 数据结构
  7. Android核心分析之二十五Android GDI之共享缓冲区机制
  8. C# 实现繁体字和简体字之间的转换
  9. LightOj_1408 Batting Practice
  10. mybaitis配置信息
  11. CodeVs 1615 数据备份
  12. Luogu P1972 [SDOI2009]HH的项链
  13. 交叉验证(CrossValidation)方法思想简介[zz]
  14. MHDD修复硬盘坏道
  15. [leetcode]621. Task Scheduler任务调度
  16. poj 3348:Cows(计算几何,求凸包面积)
  17. POJ ???? Monkey King
  18. 随机森林(Random Forests)
  19. TestNG简单的学习-TestNG运行
  20. css代码

热门文章

  1. flume 日志收集单节点
  2. 004-画图神器-graphviz
  3. dyld: could not load inserted library '/Developer/usr/lib/libBacktraceRecording.dylib' because no suitable image found. Did find:
  4. 「ZJOI2007」「LuoguP1169」棋盘制作(并查集
  5. ubuntu16.04 ROS安转及RVIZ启动
  6. bzoj1799同类分布——数位DP
  7. heartbeat3.x部署安装
  8. Nhibernate中多Or条件的查询,很多Or的查询
  9. hue集成各种组件
  10. python之log日志模块