[AVR单片机] 1段modbus程序的问题

[复制链接]
968|0
 楼主| chuandaoxy 发表于 2018-7-28 13:21 | 显示全部楼层 |阅读模式
uint16_t g_HolReg[HOLD_REG_SIZE] __attribute__((section(".noinit"))); //保持寄存器

void mbReadReg(void)

{
  uint8_t i,len;
  uint16_t addr,size;
   
  addr=BufToReg(g_mbBuf+2);
  size=BufToReg(g_mbBuf+4);
  
  if(size<1 || size>=0x007d)
  {
    mbSendError(0x03);
    return ;
  }
  if(addr+size > HOLD_REG_SIZE)
  {
    mbSendError(0x02);
    return ;
  }
  
  g_mbBuf[2]=size*2;
  
  for(i=0;i<size;i++)

    RegToBuf(g_mbBuf+3+(i*2),g_HolReg[addr+i]);
  
  len=3+(size*2);

  addr=mbCRC16(g_mbBuf,len);

  RegToBuf(g_mbBuf+len,addr);

  len+=2;

  uart_send(g_mbBuf,len);
}

上面的保持寄存在后面程序里引用了,但是不太理解是啥意思,查了datasheet也不太明白

那位指点一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

856

主题

1046

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部