标签: c embedded microcontroller endianness
我正在进行一些微控制器编程,我必须在运行时加载DSP芯片的固件。 DSP芯片要求寄存器地址以不同的字节顺序写入,因此地址1024变为0x04, 0x00。我在2元素uint8_t数组中有地址,最高有效字节为0位,最低有效字节为1位。但是,我需要运行一个循环,每次迭代我将每个寄存器地址递增一次。微控制器是一个不同的字节序,因此我不能简单地将数组转换为uint16_t*并递增。
1024
0x04, 0x00
uint8_t
uint16_t*
我如何增加地址?
答案 0 :(得分:3)
我会使用普通的int计数器,然后在将其发送到DSP之前转换为正确的字节序。您可以在byteorder或endian系列中使用宏。这将更容易调试和更便携。
答案 1 :(得分:0)
你在寻找我们的是什么?
1) swap before sending 2) increment the lower byte, add the carry to the upper byte (asm makes this easy) 3) endian swap and increment (x=(upper<<8)|lower; x++)