现在一直用stm8做项目,之前有关赋值问题,在实行赋值时,总是丢失16位,时而可以,时而不行,很奇怪。帖子如下:http://bbs.**/thread-511666-1-1.html,把一个4位数组赋值给一个长整形数,只能赋值到16位,16~31都是ffff,第一是很奇怪。后面经过排查,是类型长度出现了问题,还有就是编译器强制类型转换有问题,通过移位产生不了想要的结果。后面的解决方法,就是将32位长整型数据拆分为4个数组进行赋值就可以了。代码如下
void BK_TX_ID_CODE(u32 IDcode)
{
u8 ID_Buf[4];
ID_Buf[0] = IDcode>>24;
ID_Buf[1] = IDcode>>16;
ID_Buf[2] = IDcode>>8;
ID_Buf[3] = IDcode;
BEKEN_I2c_Write(0x22,ID_Buf,4);
}
解决了赋值的问题。 |