工具/软件:
您好专家
客户是 C2000 器件的新用户、他们在测试期间会看到一些输出、想要讨论以下内容:
1.在操作中:DVB =(uint32_t)((level-1)*(0x7FF-0x0c))、DVB 类型是 Uint32、级别类型是 Uint32、预期输出是 0x0007E31A、但实际输出是 0x0000E31A、数字 7 由于溢出而被忽略。 问题是为什么无论什么级别类型都是 uint16 或 uint16。 运算 (LEVEL-1)*(0x7FF-0x0c) 的返回值始终看起来像 uint16 结果?
2.在操作 (uint32_t) pData[3]<<24 | pData[2]<<16 | pData[1]<<8 | pData[0];最终返回值是 uint16 类型、这会导致 pData[3]和 pData[2]丢失。 pData 是一个 uint_8 数组。 CPU 如何在寄存器中处理此操作?
谢谢
Joe