打印
[AVR单片机]

1段modbus程序的问题

[复制链接]
840|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也不太明白

那位指点一下

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

855

主题

1044

帖子

4

粉丝