谁能详说一下(u8)((u16)&DmaTxBuffer >> 8);这一段
u8 xdata DmaTxBuffer;DMA_I2CT_TXAH = (u8)((u16)&DmaTxBuffer >> 8); //I2C发送数据存储地址
DMA_I2CT_TXAL = (u8)((u16)&DmaTxBuffer);
谁能详说一下(u8)((u16)&DmaTxBuffer >> 8);这一段。
(u8)((u16)&DmaTxBuffer >> 8)
从里面开始解释,首先是&DmaTxBuffer为取地址操作,(u16)为强制转换无符号16位数据。防止被系统转成8位数据,而在后面的>>8中清零。
>>8是为了取到高8位,最前面的(u8)则是重新将数据强制转换成无符号8位数据 本帖最后由 阿当 于 2024-9-21 17:37 编辑
王昱顺 发表于 2024-9-21 16:53
(u8)((u16)&DmaTxBuffer >> 8)
从里面开始解释,首先是&DmaTxBuffer为取地址操作,(u16)为强制转换无符号16 ...
秒懂了,因为32G的DMA最大传输为U16,而这里IIC用不了那么大,所以把低8位数据清除只用到高8位, 没有系统学习过C语言就是老火,自学的{:cry:}
页:
[1]