智能车制作

标题: 中断函数的疑惑 [打印本页]

作者: 抽刀断水    时间: 2013-11-12 13:29
标题: 中断函数的疑惑
我看野火K60开发板的一些关于中断的程序,进入中断后都是先禁止中断,再中断执行完成时便又开启中断。主函数中也是这样的思路,显示禁止总中断,让后在主函数最后又开启总中断。  请问:这样做的目的是什么啊?  是不是为了考虑到中断函数执行的时候,不被再次触发吗   但是同样的中断即使再次被触发也是等这条中断执行完了才开始执行下一个的啊

作者: 抽刀断水    时间: 2013-11-12 13:32
void main()
{
    DisableInterrupts;            //禁止总中断

    gpio_init(PORTA, 9, GPO, HIGH);               //初始化PTA9,输出高电平
    LED_INIT();                                  //初始化LED, FTM1_IRQHandler 中断函数里闪烁LED0
    FTM_Input_init(FTM1, CH0, Rising);           //初始化FTM输入捕捉模式,上升沿触发

    EnableInterrupts;                                 //开总中断

    while(1)
    {
        gpio_set(PORTA, 9, LOW);                //PTA9产生低电平

        time_delay_ms(250);                     //延时一下

        gpio_set(PORTA, 9, HIGH);               //PTA9产生高电平

        time_delay_ms(250);                     //延时一下
    }


作者: 野火    时间: 2013-11-12 16:04
可以 删掉 中断里的 关中断 和 开中断。
作者: GoodBye    时间: 2013-11-12 19:04
先关中断时为了防止此时有高一级的中断进入,避免现场被破坏,在现场保护和恢复之后的开中断是为了下一次中断做好准备,也是为了有更高级的中断进入。
作者: 抽刀断水    时间: 2013-11-13 00:37
野火 发表于 2013-11-12 16:04
可以 删掉 中断里的 关中断 和 开中断。

哦哦 谢谢火哥

作者: 抽刀断水    时间: 2013-11-13 00:38
GoodBye 发表于 2013-11-12 19:04
先关中断时为了防止此时有高一级的中断进入,避免现场被破坏,在现场保护和恢复之后的开中断是为了下一次中 ...

嗯 现在有点懂了  谢谢

作者: mnh999    时间: 2014-2-1 20:32





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2