找回密码
 立即注册
查看: 435|回复: 2

谁能详说一下(u8)((u16)&DmaTxBuffer >> 8);这一段

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-10-09 08:52:11

2

主题

5

回帖

44

积分

新手上路

积分
44
发表于 2024-9-21 16:26:27 | 显示全部楼层 |阅读模式
u8 xdata DmaTxBuffer[256];

DMA_I2CT_TXAH = (u8)((u16)&DmaTxBuffer >> 8);        //I2C发送数据存储地址
        DMA_I2CT_TXAL = (u8)((u16)&DmaTxBuffer);




谁能详说一下(u8)((u16)&DmaTxBuffer >> 8);这一段。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:499
  • 最近打卡:2025-06-16 10:06:31
已绑定手机
已实名认证

112

主题

2391

回帖

6016

积分

版主

积分
6016
发表于 2024-9-21 16:53:52 | 显示全部楼层
(u8)((u16)&DmaTxBuffer >> 8)
从里面开始解释,首先是&DmaTxBuffer为取地址操作,(u16)为强制转换无符号16位数据。防止被系统转成8位数据,而在后面的>>8中清零。
>>8是为了取到高8位,最前面的(u8)则是重新将数据强制转换成无符号8位数据
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-10-09 08:52:11

2

主题

5

回帖

44

积分

新手上路

积分
44
发表于 2024-9-21 17:35:12 | 显示全部楼层
本帖最后由 阿当 于 2024-9-21 17:37 编辑
王*** 发表于 2024-9-21 16:53
(u8)((u16)&DmaTxBuffer >> 8)
从里面开始解释,首先是&DmaTxBuffer为取地址操作,(u16)为强制转换无符号16 ...

秒懂了,因为32G的DMA最大传输为U16,而这里IIC用不了那么大,所以把低8位数据清除只用到高8位, 没有系统学习过C语言就是老火,自学的
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-17 00:13 , Processed in 0.128646 second(s), 60 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表