基於stm32的modbus協議移植

在移植過程當中得益於這兩篇blog,你們能夠參考下。html

http://ntn314.blog.163.com/blog/static/161743584201233084434579/函數

http://bbs.eeworld.com.cn/thread-362508-1-1.htmlui

這兩篇博客上對modbus協議以及移植解釋的很清楚,這裏就不在囉嗦了。spa

首先,要下載一個freemodbus,本身寫的modbus協議也能夠,但考慮到時間和可擴展性仍是選擇開源的比較穩當些。這個協議最核心部分我感受就是對寄存器的讀寫,固然若是涉及到PLC固然還有繼電器等,其餘部分已經把接口給你了,而後本身就按照說明去添加就能夠。對了,在移植中當時對這個過程        .net

          *pucRegBuffer++ = ( uint8_t )( usRegHoldingBuf[iRegIndex] >> 8 );
          *pucRegBuffer++ = ( uint8_t )( usRegHoldingBuf[iRegIndex] & 0xFF );code

有點模糊,但在紙上畫一下就豁然開朗了。其餘的就沒有難度了。下面就進入正文:orm

首先須要改動的部分還主要是htm

eMBRegInputCB(UCHAR * pucRegBuffer,USHORT usAddress,USHORT usNRegs)、blog

eMBRegHoldingCB(UCHAR * pucRegBuffer,USHORT usAddress,USHORT usNRegs,接口

eMBRegisterMode eMode)、

eMBRegCoilstCB(UCHAR * pucRegBuffer,USHORT usAddress,USHORT usNCoils,

eMBRegisterMode eMode)、

eMBRegInputCB(UCHAR * pucRegBuffer,USHORT usAddress,USHORT usNDiscrete)

這四個函數,其餘部分主要是對portserial.c和porttimer.c這兩個文件(相對於你下載的freemodbus-v1.5.0)的改動。而main函數你能夠把下載的freemodbus文件中的demo文件下有一個BARE文件,這個文件夾有一個demo.c程序直接把main函數copy過來就大功告成了。。

好了,附工程文件

http://www.oschina.net/code/snippet_2241389_52045

至於freemodbus你們能夠百度下就出來了。。

第一篇博客,若有錯誤但願你們相互討論。

相關文章
相關標籤/搜索