源码 移植_FreeModbus移植总结

modbus是一项工业上经常用到的通讯协议,而freemodbus是一款开源的从机协议栈。关于它的移植网上已经有了很多的文章,但是大多都只是针对其中部分问题的表述。本文将会把自己在移植freemodbus过程中遇到的问题以及freemodbus的源码分析尽量表述清楚。

(由于源码分析部分在工作用的电脑上,这部分后续补上)

关于移植:

本次移植使用的片子是stm32f103的片子,编译环境喂keil5.23

freemodbus源码GitHub链接:

cwalter-at/freemodbus​github.com
21e26631236e2ec7a0ccb08e3e440373.png

首先移植需要有大致两方面工作:1、相关硬件功能的编写;2、freemodbus底层操作寄存器(线圈)的函数。

关于硬件功能主要包括usart的初始化,发送/接收状态设置,串口中断函数等;timer定时器的初始化,使能,失能以及定时器中断等。其中需注意的是在串口中断及定时器中断中加入对应的处理函数,通知状态机进行相应处理。

定时器方面基本没有什么问题,确定还要使用的定时器以及编写好对应的函数没什么问题可以正常使用。但是在串口移植的时候需要注意,自己使用的串口发送中断是txe还是tc。使用txe中断需要预先发送一个字节触发串口发送中断,而是用tc中断需要在中断中添加延时否则会导致最后一个字节发送不出去的问题。关于这两个问题的分析及解决方法:

txe中断(本人测试过可以解决,八度大神还是屌啊):

FreeModbus在STM32上移植-OpenEdv-开源电子网​www.openedv.com

tc中断(该方法本人并没有测试过是否可以解决问题):

STM32F407移植FreeModbus中遇到接收最后一个字节是0xff或0xfe的解决方法_刘恩明的博客-CSDN博客_485通信输出0xff 0xfe​blog.csdn.net
14f5206c30636f3bdc8eaf6eac578f10.png

硬件方面的问题大体如上

关于软件部分:

1、状态机在调用对应功能 的函数时,会在其中寄存器地址的处理后加入一句语句:usAddress++,不知道原作者加这一句是干嘛的。注释掉即可,或者在底层的寄存器处理函数中加入一句对应的usAddress--;所谓负负得正嘛

2、在寄存器操作的部分中,有一个bug位于mbfuncholding.c文件eMBFuncReadHoldingRegister函数中文件第185行的位置,源代码如下:

usRegCount = ( USHORT )( pucFrame[MB_PDU_FUNC_READ_REGCNT_OFF] << 8 ); usRegCount = ( USHORT )( pucFrame[MB_PDU_FUNC_READ_REGCNT_OFF + 1] );

应修正为:

usRegCount = ( USHORT )( pucFrame[MB_PDU_FUNC_READ_REGCNT_OFF] << 8 ); usRegCount |= ( USHORT )( pucFrame[MB_PDU_FUNC_READ_REGCNT_OFF + 1] );

3、关于需要实现的四个底层操作寄存器、线圈的函数需根据需求自行设计。后续在本人完成gd32f330的fremodbus移植后会贴出自己搞的移植后的freemodbus源码。

附录移植完毕的demo(基于GD32F330C8T6)

https://github.com/SlatedFish-QAQ/GD32_FreeModbus

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259825.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

word标题大纲级别_快速按标题层级把Word转Excel—附详细操作步骤

如何快速把层级分明的word文档转换成横向从属结构的excel表格一、问题描述文档如下图所示。文档一共三个层次&#xff0c;大纲级别分别是1、2、3级&#xff0c;左则是其文档结构图&#xff0c;可以看出文档层级分明。最终要将文档转换成如下横向从属结构的表格。一个层次的内容…

servlet中getWriter和getOutputStream的区别

getWriter();getOutputStream();区别&#xff1a;1、getWriter()用于向客户机回送字符数据2、getOutputStream()返回的对象&#xff0c;可以回送字符数据&#xff0c;也可以回送字节数据&#xff08;二进制数据&#xff09;如何选择&#xff1a;若果我们回送字符数据&#xff0…

execve系统调用_张凯捷—系统调用分析(3) (基于最新Linux5.0版本系统调用日志收集系统)...

在上一篇文章《系统调用分析(2)》中介绍和分析了32位和64位的快速系统调用指令——sysenter/sysexit和syscall/sysret&#xff0c;以及内核对快速系统调用部分的相关代码&#xff0c;并追踪了一个用户态下的系统调用程序运行过程。本篇中将基于最新的Linux-5.0内核&#xff0c;…

批量下载小说网站上的小说(python爬虫)

随便说点什么 因为在学python&#xff0c;所有自然而然的就掉进了爬虫这个坑里&#xff0c;好吧&#xff0c;主要是因为我觉得爬虫比较酷&#xff0c;才入坑的。 想想看&#xff0c;你可以批量自动的采集互联网上海量的资料数据&#xff0c;是多么令人激动啊&#xff01; 所以我…

华为欧拉系统服务器开接口,华为操作系统 euleros

华为操作系统 euleros 内容精选换一换Atlas 900 AI集群安装上架、服务器基础参数配置、安装操作系统等操作&#xff0c;请根据集群配置参见对应的手册&#xff1a;《Atlas 900 PoD 用户指南 (型号9000, 直流)》《Atlas 900 PoD 用户指南 (型号9000, 交流)》《Atlas 900 计算节点…

对勾函数_对勾函数?2020福建省中考压轴题分析

训练营机密视频大公开欢迎转发、分享传播知识&#xff0c;传播力量&#xff01;福建也是全省统一考选择题&#xff1a;这题考的是二次函数的性质&#xff0c;先求出对称轴就好了填空题&#xff1a;这题看似有反比例&#xff0c;确实会用到反比例函数的对称性。但其实重点是考察…

通过Ajax解析和jQuery写了一个小小的导航条

最近在用ajax和jquery做开发&#xff0c;所以闲来无事写了些小导航条&#xff0c;通过ajax解析XML文件动态的创建WEB网站的导航条。 <link href"css/style.css" rel"stylesheet" type"text/css" /><script src"js/jquery-1.8.2.mi…

一次生产事故的优化经历

在一次正常的活动促销之后&#xff0c;客服开始陆续反馈有用户反应在抢标的时候打不开网页或者APP&#xff0c;在打开的时候标的就已经被抢光了&#xff0c;刚开始没有特别的上心&#xff0c;觉得抢标不就是这样吗&#xff0c;抢小米手机的时候也不就这样吗&#xff1f;随着活动…

Win系统利用本地安全策略全面禁止360等软件的安装与运行-1

这个理论应该也可以用在域对下设域用户上.各位不知道有没有这种经历&#xff0c;机子让别人玩了一上午&#xff0c;回来发现&#xff0c;自己干干净净的系统多了一堆某某安全助手&#xff0c;某某杀毒&#xff0c;某某手机助手等等&#xff0c;最可恨的还是不知一系列的&#x…

access考试素材_NCRE考试当天常见问题处理办法及各科目注意事项大汇总

温馨提醒为了方便大家在21-22号讨论考试抽中的题目&#xff0c;请自觉加入QQ群&#xff1a;776167039考试当天常见问题及处理办法大汇总问题一&#xff1a;考试当天忘记带身份证和准考证原因&#xff1a;这种情况&#xff0c;要么是忘了&#xff0c;要么真没有提前领到准考证。…

腾讯开源手游热更新方案,Unity3D下的Lua编程

写在前面\\xLua是Unity3D下Lua编程解决方案&#xff0c;自2016年初推广以来&#xff0c;已经应用于十多款腾讯自研游戏&#xff0c;因其良好性能、易用性、扩展性而广受好评。现在&#xff0c;腾讯已经将xLua开源到GitHub。\\2016年12月末&#xff0c;xLua刚刚实现新的突破&…

1加6投屏_6月1日起驾考要加项目?真相是这样

来源&#xff1a;新闻晨报近日网上流传一则消息让还没考出驾照的朋友们瑟瑟发抖网传消息称&#xff0c;上海、海南、陕西、贵州、浙江等地驾考科目二于6月1日起加项&#xff0c;因而“朋友们要抓紧时间报名&#xff0c;录入旧系统”。网传消息截图上海6月1日起科目二考试增加到…

网站等保测评针对服务器,互联互通测评知识分享之信息安全建设要点

原创 医疗测评实验室 中国软件评测中心 1周前医院互联互通测评&#xff0c;即国家医疗健康信息互联互通标准化成熟度测评&#xff0c;近年来随着政策的要求、需求的驱动、技术的更迭、价值的引领&#xff0c;越来越被业内人士接受和认可&#xff0c;测评热度也水涨船高。国家卫…

pandas合并groupby_pandas实践之GroupBy()

官网地址&#xff1a;https://pandas.pydata.org/docs/reference/groupby.htmlpandas中对数据进行分组操作的方法&#xff0c;官方有很详细的教程。下面的案例是真实遇到的问题&#xff0c;看一看用pandas是如何解决的。构造数据import pandas as pdimport numpy as npdf pd.D…

erdas遥感图像几何校正_定量/高光谱遥感之—光谱分析技术

文章转载自微信公众号CSDN&#xff0c;作者冰清-小魔鱼&#xff0c;版权归原作者及刊载媒体所有。在定量遥感或者高光谱遥感中&#xff0c;信息提取主要用到光谱/波谱分析技术。本专题对光谱/波谱分析中涉及的流程及一些技术进行讲解&#xff0c;包括以下内容&#xff1a;基本概…

Zipkin-1.19.0学习系列1:java范例

2019独角兽企业重金招聘Python工程师标准>>> 官网地址: https://github.com/openzipkin/zipkin http://zipkin.io/ https://www.oschina.net/p/zipkin 截止到2017/1/4为止&#xff0c;最新版本为: Zipkin 1.19 下载地址: https://github.com/openzipkin/zipkin/arc…

PageRank算法

1. PageRank算法概述 PageRank,即网页排名&#xff0c;又称网页级别、Google左側排名或佩奇排名。 是Google创始人拉里佩奇和谢尔盖布林于1997年构建早期的搜索系统原型时提出的链接分析算法&#xff0c;自从Google在商业上获得空前的成功后&#xff0c;该算法也成为其他搜索引…

linux中_在 Linux 桌面中开始使用 Lumina | Linux 中国

本文是 24 天 Linux 桌面特别系列的一部分。Lumina 桌面是让你使用快速、合理的基于 Fluxbox 桌面的捷径&#xff0c;它具有你无法缺少的所有功能。-- Seth Kenlon多年来&#xff0c;有一个名为 PC-BSD 的基于 FreeBSD 的桌面操作系统(OS)。它旨在作为一个常规使用的系统&#…

hdu 2612 Find a way (广搜)

Problem DescriptionPass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. Leave Ningbo one year, yifenfei have many people to meet. Especially a good friend Merceki.Yifenfei’s home is at the countryside, but Merceki’s home is in t…

正则表达式里转义字符_五分钟搞定正则表达式,如果没搞定,再加两分钟

五分钟搞定正则表达式&#xff0c;如果没搞定&#xff0c;再加两分钟【这是 ZY 第 18 篇原创文章】 文章概览一、正则表达式介绍正则表达式&#xff0c;又称规则表达式。&#xff08;英语&#xff1a;Regular Expression&#xff0c;在代码中常简写为regex、regexp或RE&#xf…