MODBUS移植的参考文章
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取出事件清空队列,一个循环完成
*/
MODBUS移植的参考文章的更多相关文章
- 深度学习环境配置:Ubuntu16.04安装GTX1080Ti+CUDA9.0+cuDNN7.0完整安装教程(多链接多参考文章)
		本来就对Linux不熟悉,经过几天惨痛的教训,参考了不知道多少篇文章,终于把环境装好了,每篇文章或多或少都有一些用,但没有一篇完整的能解决我安装过程碰到的问题,所以决定还是自己写一篇我安装过程的教程, ... 
- 深度学习环境配置:Ubuntu16.04下安装GTX1080Ti+CUDA9.0+cuDNN7.0完整安装教程(多链接多参考文章)
		本来就对Linux不熟悉,经过几天惨痛的教训,参考了不知道多少篇文章,终于把环境装好了,每篇文章或多或少都有一些用,但没有一篇完整的能解决我安装过程碰到的问题,所以决定还是自己写一篇我安装过程的教程, ... 
- k8s安装部署过程个人总结及参考文章
		以下是本人安装k8s过程 一.单机配置 1. 环境准备 主机名 IP 配置 master1 192.168.1.181 1C 4G 关闭所有节点的seliux以及firewalld sed -i 's ... 
- docker系列 参考文章
		Docker 系列一(概念原理和安装) Docker 系列二(操作镜像) Docker 系列三(容器管理) 持续更新... ubuntu 安装docker 参考文章 :(https://blog.cs ... 
- Tarjan算法分解强连通分量(附详细参考文章)
		Tarjan算法分解强连通分量 算法思路: 算法通过dfs遍历整个连通分量,并在遍历过程中给每个点打上两个记号:一个是时间戳,即首次访问到节点i的时刻,另一个是节点u的某一个祖先被访问的最早时刻. 时 ... 
- weex参考文章
		1官网:https://weex.apache.org/zh/guide/introduction.html 2.weexui https://alibaba.github.io/weex-ui/ ... 
- Windows7下移植Qt4.8.4项目到QT5.2上时遇到的一些问题(包括三篇参考文章)
		文章来源:http://blog.csdn.net/ccf19881030/article/details/18220447 问题一:错误:C1083: 无法打开包括文件:“QApplication” ... 
- Linux下搭建PHP环境的参考文章小记
		之前也在Linux上安装过两次,但是当我再次需要安装时,还是很多不懂的地方,于是记下此篇,以防下次再费经心思找到不合适的文章,瞎折腾. 通过参考这几篇文章,成功的安装好了自己的PHP(LNMP)环境. ... 
- .net core 微服务参考文章
		网址: https://www.cnblogs.com/edisonchou/p/9124985.html Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.Consul基础介绍 Co ... 
随机推荐
- Eclipse配置python环境
			主要分为四步 1.安装java环境 2.在Eclipse下安装Pydev 1)启动 Eclipse,利用 Eclipse Update Manager 安装 PyDev.在 Eclipse 菜单栏中找 ... 
- rc.local 开启自启动,检测是否成功
			rc.local /etc/init.d/nginx start 查看运行状态 systemctl status rc-local ● rc-local.service - /etc/rc.local ... 
- Vue表格数据增删改查及搜索
			<div id="app"> <div class="item"> <span class="name"> ... 
- Constructing Roads In JGShining's Kingdom
			点击打开题目链接 本题目是考察 最长递增子序列的 有n^2 n(logn) n^2 会超时的 下面两个方法的代码 思路 可以百度LIS LCS dp里面存子序列 n(logn) ... 
- 书写优雅的shell脚本(七)- ${COLUMN:-}
			${COLUMN:-} 如果COLUMN是空变量,或者变量不存在,返回-后面的内容,如果变量有值返回这个值. 
- Logcat不显示Application的解决办法
			Window - show view - devices - debug ----2014.12.1------ 只有在DDMS的device中显示进程名,logcat中的Application标签才 ... 
- codevs 1143 纪念品分组
			1143 纪念品分组 2007年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题解 题目描述 Description ... 
- Code-NFine:NFine权限控制
			ylbtech-Code-NFine:NFine权限控制 1.返回顶部 1. NFine框架研究 1.前台业务操作 1.1 系统菜单配置方法 1.2 菜单管理配置方法 1.2.1 按钮管理 1.2.2 ... 
- 通过libVirt抓取kvm虚拟机监控指标数据
			通常在我们的云环境中,为了保证云平台中虚拟机的正常运行,基本都需要这样一个功能,就是收集虚拟机的监控数据,比如cpu的使用率.内存的使用率.磁盘io.网络io等基本信息.可以利用这些信息及时调整云平台 ... 
- IReport制作报表——日期时间显示格式
			转自:https://blog.csdn.net/linglinglu/article/details/9022679?utm_source=blogxgwz2 IReport工具在制作报表的时候,会 ... 
