CH32v20x单片机risc-v内核uint64_t类型移位后变量为0解决办法
CH32v20x单片机编写程序时遇到uint64_t 变量移位后为0。
uint64_t temp1 = 0;
uint64_t temp2 = 0;
temp1 = (pData[0]<<24)|(pData[1]<<16)|(pData[2]<<8)|pData[3];
myResControlBoard.rcSetRes = temp1<<32;
temp2 = (pData[4]<<24)|(pData[5]<<16)|(pData[6]<<8)|pData[7];
myResControlBoard.rcSetRes |= temp2;
CH32v20x默认支持32位的扩展。所以在做超过32位的扩展时,需要添加(unsigned long long int)
进行强制扩展 。
下面程序可以正常运行
temp1 = (pData[0]<<24)|(pData[1]<<16)|(pData[2]<<8)|pData[3];
myResControlBoard.rcSetRes = (unsigned long long int)temp1<<32;
temp2 = (pData[4]<<24)|(pData[5]<<16)|(pData[6]<<8)|pData[7];
myResControlBoard.rcSetRes |= temp2;
原文地址:https://blog.csdn.net/songisgood/article/details/144093450
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!