DK-TM4C129X_FreeModbus_Slave


移植Freemodbus V1.5.0基于TI DK-TM4C129X 开发板。开发环境Keil MDK5.10
资源截图
代码片段和文件信息
/* ----------------------- Modbus includes ----------------------------------*/
#include “mb.h“
#include “mbport.h“

#include “HAL_Interface.h“
#include “mbutils.h“

/* ----------------------- Defines ------------------------------------------*/
#define REG_INPUT_START 0
#define REG_INPUT_NREGS 4

/* ----------------------- Static variables ---------------------------------*/
static USHORT   usRegInputStart = REG_INPUT_START;
static USHORT   usRegInputBuf[REG_INPUT_NREGS] = {0x10x20x30x4};

//
#define REG_HOLDING_START  0
#define REG_HOLDING_NREGS 10
static USHORT   usRegHoldingStart = REG_HOLDING_START;
static USHORT   usRegHoldingBuf[REG_HOLDING_NREGS] = {0x90x80x70x60x50x40x30x20x10x0};

//Coils
#define REG_COILS_START     0
#define REG_COILS_SIZE      16

static unsigned char ucRegCoilsBuf[REG_COILS_SIZE / 8] = {0xA50x5A};

//Read Discrete Inputs
#define DISCRETE_INPUT_START 100
#define DISCRETE_INPUT_SIZE 24
static unsigned char ucDiscreteInputBuf[DISCRETE_INPUT_SIZE / 8] = {0xA50x5A0xAA};



/* ----------------------- Start implementation -----------------------------*/
int
main( void )
{
    const UCHAR     ucSlaveID[] = { 0xAA 0xBB 0xCC };
    eMBErrorCode    eStatus;

Drv_SysClock_Init();

    eStatus = eMBInit( MB_RTU 0x0A 0 115200 MB_PAR_EVEN ); //0x0A is slave address

    eStatus = eMBSetSlaveID( 0x34 TRUE ucSlaveID 3 );

    /* Enable the Modbus Protocol Stack. */
    eStatus = eMBEnable(  );

    for( ;; )
    {
        ( void )eMBPoll(  );

        /* Here we simply count the number of poll cycles. */
        //usRegInputBuf[0]++;
    }
}

eMBErrorCode
eMBRegInputCB( UCHAR * pucRegBuffer USHORT usAddress USHORT usNRegs ) //usAddress has add 1.
{
    eMBErrorCode    eStatus = MB_ENOERR;
    int             iRegIndex;
usAddress = usAddress -1;
    if( ( usAddress >= REG_INPUT_START )
        && ( usAddress + usNRegs <= REG_INPUT_START + REG_INPUT_NREGS ) )
    {
        iRegIndex = ( int )( usAddress - usRegInputStart );
        while( usNRegs > 0 )
        {
            *pucRegBuffer++ =
                ( unsigned char )( usRegInputBuf[iRegIndex] >> 8 );
            *pucRegBuffer++ =
                ( unsigned char )( usRegInputBuf[iRegIndex] & 0xFF );
            iRegIndex++;
            usNRegs--;
        }
    }
    else
    {
        eStatus = MB_ENOREG;
    }

    return eStatus;
}

eMBErrorCode
eMBRegHoldingCB( UCHAR * pucRegBuffer USHORT usAddress USHORT usNRegs
                 eMBRegisterMode eMode )
{
eMBErrorCode    eStatus = MB_ENOERR;
    int             iRegIndex;

usAddress = usAddress - 1;
    if( ( usAddress >= REG_HOLDING_START ) &&
        ( usAddress + usNRegs <= REG_HOLDING_START + REG_HOLDING_NREGS ) )
    {
        iRegIndex = ( int )( usAddress - usRegHoldingStart );
        switch ( eMode )
        {
            /* Pass current register values to the protoc

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-06-26 15:45  TM4C129X
     文件          27  2014-06-07 15:45  TM4C129Xclear.bat
     目录           0  2014-06-26 15:45  TM4C129Xdebug
     文件      127187  2014-06-21 16:04  TM4C129Xdebugadc.crf
     文件         509  2014-06-21 16:04  TM4C129Xdebugadc.d
     文件      126288  2014-06-21 16:04  TM4C129Xdebugadc.o
     文件       68936  2014-06-21 16:04  TM4C129Xdebugaes.crf
     文件         548  2014-06-21 16:04  TM4C129Xdebugaes.d
     文件       75740  2014-06-21 16:04  TM4C129Xdebugaes.o
     文件      132243  2014-06-21 16:04  TM4C129Xdebugcan.crf
     文件         551  2014-06-21 16:04  TM4C129Xdebugcan.d
     文件      128668  2014-06-21 16:04  TM4C129Xdebugcan.o
     文件       29595  2014-06-21 16:04  TM4C129Xdebugcomp.crf
     文件         478  2014-06-21 16:04  TM4C129Xdebugcomp.d
     文件       41676  2014-06-21 16:04  TM4C129Xdebugcomp.o
     文件        3699  2014-06-21 16:04  TM4C129Xdebugcpu.crf
     文件         137  2014-06-21 16:04  TM4C129Xdebugcpu.d
     文件       11856  2014-06-21 16:04  TM4C129Xdebugcpu.o
     文件       10804  2014-06-21 16:04  TM4C129Xdebugcrc.crf
     文件         373  2014-06-21 16:04  TM4C129Xdebugcrc.d
     文件       22756  2014-06-21 16:04  TM4C129Xdebugcrc.o
     文件       30510  2014-06-21 16:04  TM4C129Xdebugdes.crf
     文件         465  2014-06-21 16:04  TM4C129Xdebugdes.d
     文件       43364  2014-06-21 16:04  TM4C129Xdebugdes.o
     文件      122063  2014-06-21 16:04  TM4C129Xdebugeeprom.crf
     文件         649  2014-06-21 16:04  TM4C129Xdebugeeprom.d
     文件      117892  2014-06-21 16:04  TM4C129Xdebugeeprom.o
     文件      119555  2014-06-21 16:04  TM4C129Xdebugemac.crf
     文件         574  2014-06-21 16:04  TM4C129Xdebugemac.d
     文件      123100  2014-06-21 16:04  TM4C129Xdebugemac.o
     文件      122083  2014-06-08 16:15  TM4C129Xdebugepi.crf
............此处省略315个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)