m88 188bet uedbet 威廉希尔 明升 bwin 明升88 bodog bwin 明升m88.com 18luck 188bet unibet unibet Ladbrokes Ladbrokes casino m88明升 明升 明升 m88.com 188bet m88 明陞 uedbet赫塔菲官网 365bet官网 m88 help
188bet www.188bet.com bwin 平博 unibet 明升 188bet uk Ladbrokes 德赢vwin 188bet m88.com w88 平博88 uedbet体育 188bet 188bet 威廉希尔 明升体育app 平博88 M88 Games vwin德赢 uedbet官网 bodog fun88 188bet
打印

[技术问答] 请教 s_I2C0HandlerFn = (I2C_FUNC)I2C_MasterTx;是函数调用吗?

[复制链接]
336|12
跳转到指定楼层
楼主
本帖最后由 sunhhl 于 2019-3-31 16:17 编辑

在看新唐IIC例程时,这行不明白什么意思,特请教一下,这是函数调用吗? s_I2C0HandlerFn = (I2C_FUNC)I2C_MasterTx;怎么不用写参数吗?
沙发
| 2019-3-31 22:58 | 只看该作者
        /* I2C function to write data to slave */
        s_I2C0HandlerFn = (I2C_FUNC)I2C_MasterTx;
板凳
| 2019-3-31 22:58 | 只看该作者
编译后,你可以定位一下这个原型。
地板
| 2019-3-31 22:58 | 只看该作者
看看原型具体是个什么。
5
| 2019-3-31 23:10 | 只看该作者
你注意到没有,回调函数。
6
| 2019-3-31 23:11 | 只看该作者

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
7
| 2019-3-31 23:12 | 只看该作者

这里定义了一个函数指针。
然后那两句是将回调函数传递给执行函数。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
8
| 2019-3-31 23:16 | 只看该作者
回调函数是被中断函数调用了。
9
| 2019-3-31 23:16 | 只看该作者

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
10
| 2019-3-31 23:18 | 只看该作者
请注意上面这个中断函数的else分支。
意思是发生了中断,执行后面的s_I2C0HandlerFn(u32Status);
而你问的那两个就是给这个函数传递回调函数的地址的,指针,请注意指针。
11
| 2019-3-31 23:19 | 只看该作者
所以这个例子里采用了高级的C语言成分:函数指针,回调函数,通过指针调用函数。
12
| 2019-3-31 23:22 | 只看该作者
多亏你没有去学STM32,那个系列的更坑,遇到中断就是用回调的。搞晕人。函数套函数,还有功能冲突的。坑爹的很,新唐这个其实如果你认真看一遍例子,再懂一点指针,和函数指针的概念,基本上是没有难度的。
13
| 2019-4-1 20:09 | 只看该作者
原来是函数指针啊,多谢上面高手讲解。
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

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