打印
[应用相关]

【转】STM8 赋值相关 unsigned long长整型赋值问题

[复制链接]
1177|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lefeng|  楼主 | 2017-6-29 11:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在一直用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);
}
解决了赋值的问题。
沙发
mmuuss586| | 2017-6-29 17:53 | 只看该作者
定义个联合体好了,简单些

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

200

主题

1087

帖子

0

粉丝