没有合适的资源?快使用搜索试试~ 我知道了~
简单描述freemodbus的流程
需积分: 50 48 下载量 149 浏览量
2018-04-04
14:15:15
上传
评论 1
收藏 66KB PDF 举报
温馨提示
试读
2页
通过该文档,可对freemodbus的工作流程有一个大体的了解,注明了各个函数的功能,以及freemodbus的函数入口,可作为freemodbus的一个学习大纲,方便各位修改使用freemodbus。
资源推荐
资源详情
资源评论
流程:
上电后即执行 Main();
{
1. 调用 mb.c 中的 eMBInit(RTU,地址,端口 0,波特率,无校验)
{
验证地址是否正确并设置主机地址,
设置模式 RTU 并对函数指针进行映射
调用 mbrtu.c 中的 eMBRTUInit(地址,端口,波特率,校验)
{初始化串口,初始化定时器}
初始化事件函数
}
2. 调用 mb.c 中的 eMBEnable()
{
判断状态为禁止,则调用 eMBRTUStart()
{
状态设为 RX 初始化
启动串口接收功能
使能定时器
}
状态设为使能
}
3. 循环调用 eMBPoll()
{
检查状态是否为使能
如果有事件发生,则判断事件状态
{
事件为准备好
事件为接收帧
事件为处理数据
事件为发送帧
}
}
}
首次,从机等待串口数据包---------à接收到数据包触发串口中断--àxMBRTUReceiveFSM( )
函数-----à不断接收数据但不保存,不断重置定时器--------à直到数据接收完后产生 3.5T 定
时器中断代表接收完成-------------à中断函数调用 xMBRTUTimerT35Expired( void )函数
---------à根据状态 RXINIT 调用 xMBPortEventPost( EV_READY )事件函数加入序列------à
关闭定时器,设为 RXIDLE,返回主程序。------à主程序 poll 根据 EVREADY 空操作取出
事件,返回。
再次接收到串口数据包------------à进入中断函数 xMBRTUReceiveFSM( )-------à根据状态
RXIDLE 数据存入 RTUBUF,状态设为 RXRCV,启动定时器------à收到下个数据包,存储
资源评论
董你的小鱼儿
- 粉丝: 0
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功