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 ...
随机推荐
- Mybatis一二级缓存的理解
频繁的数据库操作是非常耗费性能的(主要是因为对于DB而言,数据是持久化在磁盘中的,因此查询操作需要通过IO,IO操作速度相比内存操作速度慢了好几个量级),尤其是对于一些相同的查询语句,完全可以 ...
- node.js版本管理(Win) --- nvm-window
目录 1. 安装 2. 使用 1. 安装 去往Git链接:https://github.com/coreybutler/nvm-windows. 点击下载链接: 选择第一个nvm-noinstall. ...
- poj1275收银员——差分约束
题目:http://poj.org/problem?id=1275 做的第一道差分约束题... 首先,根据题意得出一些不等关系(f为前缀和雇佣人数): 0 <= f[i] - f[i-1] &l ...
- Code-NFine:NFine权限控制
ylbtech-Code-NFine:NFine权限控制 1.返回顶部 1. NFine框架研究 1.前台业务操作 1.1 系统菜单配置方法 1.2 菜单管理配置方法 1.2.1 按钮管理 1.2.2 ...
- 利用Dockerfile文件创建带有sshd服务的centos镜像
利用Dockerfile文件创建带有sshd服务的centos镜像 标签:dockerfile 1.安装docker并启动docker,不在赘述 2.创建使用Dockerfile安装sshd服务的目录 ...
- OpenWrt路由器通过iPhone有线共享网络上网
2018年4月更新: 我自己的手机在openwrt上网速很慢,在电脑上又很快.应该不是被限速了,但是没找到原因. 三大运营商在学校争客户,手机卡开出了校内无限流量的条件.很开心,之前准备到东北大学的时 ...
- 关于git被误删除的分支还原问题
在开发过程中, 有可能会将正在开发的本地分支误删, 本地分支被删除时, 如果已经将本地分支的变更推送到了远端, 还没有问题, 如果被删除的本地分支只提交了没有推送到远端, 就悲剧了, 相当于在你上一次 ...
- Unity3D 开发ios时困扰多时游戏开始画面图片的分辨率
- 2.3-2.6 HBase java API
一.get .put.delete.scan 1.代码 package com.beifeng.senior.hadoop.hbase; import org.apache.hadoop.conf.C ...
- 微信小程序开发之实现https
1:使用自签名的免费ssl证书实现:http://jingyan.baidu.com/article/a948d6515d3e850a2dcd2ee6.html 2:迅雷云购 ...