一个简单的程序,我发现数据右移,哪怕只右移一位,实际得到的数据也不是理论计算出来的值。
我监控数据的方式,是用串口助手读取。不过数据实际上是高速USB发送的,用一个USB3300的模块。
[C] 纯文本查看 复制代码 void SEND(uint32_t value)
{
uint32_t valu_un = 0;
uint8_t val[3] = {0};
valu_un = value;
val[0] = (valu_un >> 30);
val[1] = (valu_un >> 22);
val[2] = (valu_un >> 14);
CDC_Transmit_HS(val, sizeof(val)); //通过USB3300模块把数据发送到上位机
}
哪怕我直接给这个valu_un 赋一个确定的值,右移之后给val[],读取的值也不对。
我在想,是编译器的问题吗?这个右移的写法应该没有问题吧
|