打印
[技术问答]

清理中断标识什么时候清理合适?

[复制链接]
360|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
21mengnan|  楼主 | 2019-12-30 23:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void TMR0_IRQHandler(void)
{
    static uint32_t u32Sec = 1;

    printf("%d sec\n", u32Sec++);

    /* clear timer interrupt flag */
    TIMER_ClearIntFlag(TIMER0);
}
比如这个例子中,先处理了任务,然后才清理了那个定时器中断标识。

void GPIOP0P1_IRQHandler(void)
{
    /* To check if P1.3 interrupt occurred */
    if(GPIO_GET_INT_FLAG(P1, BIT3))
    {
        GPIO_CLR_INT_FLAG(P1, BIT3);
        printf("P1.3 INT occurred.\n");
    }
    else
    {
        /* Un-expected interrupt. Just clear all PORT0, PORT1 interrupts */
        P0->ISRC = P0->ISRC;
        P1->ISRC = P1->ISRC;
        printf("Un-expected interrupts.\n");
    }
}
这个例子中是先确认中断标识对不对再清理,之后干其他事情。

使用特权

评论回复
沙发
21mengnan|  楼主 | 2019-12-30 23:44 | 只看该作者
是不是在中断函数中,任意位置清理中断标识都行呢?

使用特权

评论回复
板凳
mintspring| | 2019-12-31 00:02 | 只看该作者
所以任何时候清理这个都行的,只要结束后保证被清理就行。一般建议最后清理。

使用特权

评论回复
地板
jasontu| | 2019-12-31 07:46 | 只看该作者
看个人操作中断习惯。
如果中断向量有开多个中断源,需要多个判断,处理再清。
中断向量有只有一个中断源,可以直接清。

使用特权

评论回复
5
ayb_ice| | 2019-12-31 10:57 | 只看该作者
这也取决于需求

比如不想那么灵敏,先处理,再清除
但如果不能丢失中断,先清除,再处理(清除后可以立马再次有效,退出中断后又立马进入中断了)

使用特权

评论回复
6
天灵灵地灵灵| | 2019-12-31 11:46 | 只看该作者
因为只要退出后再执行就行了,所以肯定要先紧着要紧事办事了。最后再清。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

78

主题

980

帖子

1

粉丝