楼主: lkl0305

[求助] 询问SDK1.2库中的回调函数如何使用?

[复制链接]
  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16714
    最后登录
    1970-1-1
     楼主| 发表于 2015-7-28 13:22:55 | 显示全部楼层

    串口的回调函数你用过没,那个第4个参数怎么用,在我的帖子上有图
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2016-11-24 10:19
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    50

    主题

    1028

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2870
    最后登录
    1970-1-1
    发表于 2015-7-28 14:15:47 | 显示全部楼层
    lkl0305 发表于 2015-7-28 13:22
    串口的回调函数你用过没,那个第4个参数怎么用,在我的帖子上有图

    这个根据你的回调函数,如果你的函数没有使用参数,直接传个空指针就好了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2016-11-4 16:56
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    8

    主题

    602

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1842
    最后登录
    2020-8-25
    发表于 2015-7-28 17:26:26 | 显示全部楼层
    cxtarm 发表于 2015-7-28 12:09
    /*
    * @brief  初始化 LPTMR,产生 1S 周期中断
    * @param  None

    请问:
    1.   lptmr_user_config_t lptmrUserConfig =
    2.   {
    3.     .timerMode            = kLptmrTimerModeTimeCounter,
    4.     .freeRunningEnable    = false,
    5.     .prescalerEnable      = false,
    6.     .prescalerClockSource = kClockLptmrSrcLpoClk,
    7.     .isInterruptEnabled   = true,
    8.   };
    复制代码

    lptmrUserConfig是什么类型的?结构体吗?.timerMode为什么要加.呢?
    谢谢!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2016-11-4 16:56
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    8

    主题

    602

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1842
    最后登录
    2020-8-25
    发表于 2015-7-28 17:35:57 | 显示全部楼层
    回调函数是系统自动调用的函数,系统自动调用也需要“时机”,比如执行一个功能时需要调用一个函数,但这个函数可能根据用户的功能而具有不同的入口(就是函数名),此时需要实现把函数入口指定好,然后系统调用时会自动调用这个入口。
    比如:
    系统内部的处理逻辑:
    1. struct {
    2.    void (*funcCallback)(void);
    3. }aaa;
    4. //系统内部的函数
    5. void system()
    6. {
    7.     aaa.funcCallback();
    8. }
    复制代码
    用户和系统配合时,首先要定义一个回调函数的示例,其实就是定义一个和aaa.funcCallback类型一样的函数就行了,只要类型一样,函数名任意:
    1. void myFunc(void)
    2. {
    3. ...
    4. }
    复制代码
    system不知道funcCallback具体是哪个函数,此时需要用户初始化aaa结构体,此时把myFunc赋值给aaa的funcCallback,这样就和系统建立起了连接:
    1. init()
    2. {
    3.     aaa.funcCallback = myFunc;
    4. }
    复制代码
    这样system函数执行时就会转而执行myFunc了。这就是回调函数的机制:
    1.首先定义一个和回调函数类型一样的函数。
    2.初始化,就是把定义的新函数赋值给函数指针。
    3.系统就可以在必要时自动调用自己定义的回调函数了。





    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16714
    最后登录
    1970-1-1
     楼主| 发表于 2015-7-28 18:02:40 | 显示全部楼层
    moyanming2013 发表于 2015-7-28 17:26
    请问:

    lptmrUserConfig是什么类型的?结构体吗?.timerMode为什么要加.呢?

    这个是结构体,用于配置lptmr
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2016-11-4 16:56
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    8

    主题

    602

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1842
    最后登录
    2020-8-25
    发表于 2015-7-28 18:07:14 | 显示全部楼层
    lkl0305 发表于 2015-7-28 18:02
    这个是结构体,用于配置lptmr

    也可以用这种方式:
    1. .timerMode            = kLptmrTimerModeTimeCounter,
    复制代码

    请问有更多的语法参考吗?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16714
    最后登录
    1970-1-1
     楼主| 发表于 2015-7-28 19:31:24 | 显示全部楼层
    moyanming2013 发表于 2015-7-28 18:07
    也可以用这种方式:

    请问有更多的语法参考吗?

    这个写法是定义时初始化,也可先定义,再分别赋值,你st的库那样
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2016-11-24 10:19
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    50

    主题

    1028

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2870
    最后登录
    1970-1-1
    发表于 2015-7-29 04:05:18 | 显示全部楼层
    moyanming2013 发表于 2015-7-28 17:26
    请问:

    lptmrUserConfig是什么类型的?结构体吗?.timerMode为什么要加.呢?

    是结构体,这个是C99的语法
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2016-11-4 16:56
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    8

    主题

    602

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1842
    最后登录
    2020-8-25
    发表于 2015-7-29 10:56:49 | 显示全部楼层
    cxtarm 发表于 2015-7-29 04:05
    是结构体,这个是C99的语法

    回头仔细学习下
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16714
    最后登录
    1970-1-1
     楼主| 发表于 2015-7-30 21:43:41 | 显示全部楼层
    cxtarm 发表于 2015-7-29 04:05
    是结构体,这个是C99的语法

    为什么有的是用“.”,有的是用“->”
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-28 04:43 , Processed in 0.104198 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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