自学内容网 自学内容网

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)!