CH32v20x单片机risc-v内核uint64_t类型移位后变量为0解决办法

CH32v20x单片机编写程序时遇到uint64_t 变量移位后为0。

cpp 复制代码
    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)进行强制扩展 。

下面程序可以正常运行

cpp 复制代码
    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;
相关推荐
-一杯为品-33 分钟前
【STM32单片机】#4 OLED调试&外部中断
stm32·单片机·mongodb
ty_sj40 分钟前
【FreeRtos】任务调度器可以被挂起吗?
c语言·嵌入式硬件
@迷糊1 小时前
关于产生PWM波的发生电路的学习记录
单片机·嵌入式硬件
不被定义的~wolf1 小时前
【STM32】编写程序控制开发板的RGB LED灯
stm32·单片机·嵌入式硬件
二年级程序员2 小时前
51单片机的五类指令(五)——位操作类指令
单片机·嵌入式硬件·51单片机
firewood20242 小时前
初学STM32系统时钟设置
stm32·单片机·嵌入式硬件
Caramel_biscuit3 小时前
STM32 CAN学习
stm32·嵌入式硬件·学习
最后一个bug3 小时前
教你快速理解linux中的NUMA节点探测是干什么用的?
linux·c语言·开发语言·arm开发·嵌入式硬件
坏柠4 小时前
深入浅出SPI通信协议与STM32实战应用(W25Q128驱动)(理论部分)
stm32·单片机·嵌入式硬件
Invinciblenuonuo6 小时前
STM32八股【5】----- TIM定时器
stm32·单片机·嵌入式硬件