OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3989|回复: 0

warning: #1441-D: nonstandard cast on lvalue

[复制链接]

1

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2018-9-7
在线时间
20 小时
发表于 2019-9-22 17:19:30 | 显示全部楼层 |阅读模式
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;
        }
}

QQ截图20190922171624.jpg
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 19:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表