[经验] STM8 赋值相关 unsigned long长整型赋值问题

仙景   2017-5-8 11:12 楼主
之前在论坛也发过一片求助贴,也感谢网友的指导,指明了方向。
现在一直用stm8做项目,之前有关赋值问题,在实行赋值时,总是丢失16位,时而可以,时而不行,很奇怪。帖子如下:https://bbs.eeworld.com.cn/thread-511666-1-1.html,把一个4位数组赋值给一个长整形数,只能赋值到16位,16~31都是ffff,第一是很奇怪。后面经过排查,是类型长度出现了问题,还有就是编译器强制类型转换有问题,通过移位产生不了想要的结果。后面的解决方法,就是将32位长整型数据拆分为4个数组进行赋值就可以了。代码如下
  1. void BK_TX_ID_CODE(u32 IDcode)[/size]
  2. {
  3.         u8 ID_Buf[4];
  4.    
  5.         ID_Buf[0] = IDcode>>24;
  6.         ID_Buf[1] = IDcode>>16;
  7.         ID_Buf[2] = IDcode>>8;
  8.         ID_Buf[3] = IDcode;
  9.         BEKEN_I2c_Write(0x22,ID_Buf,4);
  10. }

解决了赋值的问题。


回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复