OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10557|回复: 1

return (*(u16 *)(*((u32 *)&I2Cx) + I2C_Register))的理解疑问

[复制链接]

3

主题

6

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2013-8-11
在线时间
0 小时
发表于 2013-8-21 19:59:37 | 显示全部楼层 |阅读模式
u16 I2C_ReadRegister(I2C_TypeDef* I2Cx, u8 I2C_Register)
{
  /* Check the parameters */
  /*I2C_Register相当于地址偏移量*/
  assert_param(IS_I2C_REGISTER(I2C_Register));

  /* Return the selected register value */
  return (*(u16 *)(*((u32 *)&I2Cx) + I2C_Register));
}
这个是I2C函数库里面的的一个子函数,个人觉得(*((u32 *)&I2Cx) + I2C_Register))之后就可以得到寄存器的值了,为什么还要加(*(u16 *),感觉应该是return ((u16 )(*((u32 *)&I2Cx) + I2C_Register));才对
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
发表于 2013-8-21 21:11:46 | 显示全部楼层
i2cx的地址  右结合 +  I2C_Register  ----》的内容是指针转成16指针,返回指针指向的东西。
一直努力就很好。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-17 05:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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