为何还加了一个判断?

[复制链接]
1191|25
 楼主| dingy 发表于 2020-3-1 15:46 | 显示全部楼层 |阅读模式
PIC定时器中断服务函数清标志位后
zhanglli 发表于 2020-3-1 15:49 | 显示全部楼层

还有什么现象?能再详细描述下吗?
 楼主| dingy 发表于 2020-3-1 15:55 | 显示全部楼层
void TMR2_ISR(void)
{

    // clear the TMR2 interrupt flag
    PIR1bits.TMR2IF = 0;

    if(TMR2_InterruptHandler)
    {
        TMR2_InterruptHandler();
    }
}
yufe 发表于 2020-3-1 15:58 | 显示全部楼层
关键词
 楼主| dingy 发表于 2020-3-1 16:01 | 显示全部楼层
只找到这个:void (*TMR2_InterruptHandler)(void);
因为不熟悉XDE的开发环境,所有应该就只有着吧。
zhanglli 发表于 2020-3-1 16:06 | 显示全部楼层

你有什么打算呢?或者你想知道什么?
 楼主| dingy 发表于 2020-3-1 16:13 | 显示全部楼层

本帖子中包含更多资源

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

×
zwll 发表于 2020-3-1 16:16 | 显示全部楼层
那个是中断处理吧
stly 发表于 2020-3-1 16:20 | 显示全部楼层
那是个函数指针,先判断是否有效
zhanglli 发表于 2020-3-1 16:31 | 显示全部楼层
嗯,如果有效则调用,否则不能调用(会导致未知错误)
 楼主| dingy 发表于 2020-3-1 16:37 | 显示全部楼层
那怎么知道有没有效,调用的话,调用的是哪个?或者说指向了哪里?????? 似乎都是空的哎
houcs 发表于 2020-3-1 16:41 | 显示全部楼层

if就是判断有没有效的;
你想指向那都可以,只要函数不带参数就可以;
llia 发表于 2020-3-1 16:44 | 显示全部楼层
当然是指向你需要的中断处理函数
 楼主| dingy 发表于 2020-3-1 16:47 | 显示全部楼层

那没有效,还 if 它干什么?
不是浪费时间,浪费的代码。
lium 发表于 2020-3-1 16:51 | 显示全部楼层
那到底指向哪里去?
xxmmi 发表于 2020-3-1 16:59 | 显示全部楼层
那本来就是中断函数,就在中断里面加程序段就好了呀。
 楼主| dingy 发表于 2020-3-1 17:02 | 显示全部楼层
干嘛还要搞去另外一个地方?
chenho 发表于 2020-3-1 17:05 | 显示全部楼层
这很正常,这就是回调机制,框架不需要改动,又可以满足不同应用的需求
 楼主| dingy 发表于 2020-3-1 17:08 | 显示全部楼层
还是不懂~~~~~~
chenjunt 发表于 2020-3-1 17:11 | 显示全部楼层
好的程序驱动框架一般不改动,但又要满足不同的需求,所以一般采用回调机制,回调函数一般都是函数指针,这是用户需要定制的功能,由用户去定义
您需要登录后才可以回帖 登录 | 注册

本版积分规则

745

主题

10920

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部