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也不太明白
那位指点一下 |