初级会员

- 积分
- 125
- 金钱
- 125
- 注册时间
- 2018-9-7
- 在线时间
- 20 小时
|
1金钱
用keil编辑一段代码,始终要报“#1441-D: nonstandard cast on lvalue的警告,不知道怎么处理?我把代码传上来,警告的地方是这个数据类型的强制转换:((u16)*(USART_TX_BUF+3))=CRC_16(USART_TX_BUF,3);
有人能帮忙看看吗?虽然是警告,运行没有出错,就是想知道这个警告的解决办法。
//Modbus处理函数
void Modbus_Work(void)
{
if(Flag_of_Modbus_Ok==1)
{
if(USART_RX_BUF[0]==0x03) //判断设备地址码是否正确
{
//RS485_Send_Data(USART_RX_BUF,8);
if((CRC_16(USART_RX_BUF,RS485_RX_CNT))==0x0000) //判断CRC校验是否正确
{
switch(USART_RX_BUF[1]) //根据功能码选择服务函数
{
case 0x03: //功能码03
Modbus_03_Solve();
break;
case 0x10: //功能码16
// Modbus_16_Solve();
break;
default: //未定义的功能码
USART_TX_BUF[0]=0x03;
USART_TX_BUF[1]=0x80 | USART_RX_BUF[1];
USART_TX_BUF[2]=0X01;
((u16)*(USART_TX_BUF+3))=CRC_16(USART_TX_BUF,3);
RS485_Send_Data(USART_TX_BUF,5);
break;
}
}
else //CRC校验不正确
{
USART_TX_BUF[0]=0x03;
USART_TX_BUF[1]=0x80 | USART_RX_BUF[1];
USART_TX_BUF[2]=0X04;
((u16)*(USART_TX_BUF+3))=CRC_16(USART_TX_BUF,3);
RS485_Send_Data(USART_TX_BUF,5);
}
}
else
{
memset(USART_RX_BUF,0,sizeof(USART_RX_BUF)); //非设备地址码,清除接收
}
RS485_RX_CNT=0;
Flag_of_Modbus_Ok=0;
}
}
|
-
|