TI中文支持网
TI专业的中文技术问题搜集分享网站

IAR操作环境在MSP430单片机中左移16位,24位时 8位转32位时出问题,如何解决。

unsigned long Time;

Time|= buffer[6];
Time|= buffer[7]<<8;
Time|= (unsigned long)(buffer[8]<<16);
Time|= (unsigned long)(buffer[9]<<24);

junpeng li:

问题解决方案如下

ST_INT32 Uint8_To_Uint32(ST_INT8 * buff){ ST_INT8* p; ST_INT32 ulRet;

p = (ST_INT8*)&ulRet;

*p++ = *buff++; *p++ = *buff++; *p++ = *buff++; *p = *buff;

return ulRet;}

HG:

这样移动出什么问题了?打开反汇编,看看编译器把你的指令又化成啥样了

junpeng li:

回复 HG:

高16数据出问题,会被强制置为 FFFF

junpeng li:

回复 HG:

用指针移位的话没有问题,是不是和16位的单片机有关系

灰小子:

回复 junpeng li:

和编译器有关系。建议翻一下iar的手册看看

赞(0)
未经允许不得转载:TI中文支持网 » IAR操作环境在MSP430单片机中左移16位,24位时 8位转32位时出问题,如何解决。
分享到: 更多 (0)