stm32中断抢占问题

chenlei123321   2010-9-2 09:47 楼主
一个是外部中断,一个是时钟中断。
设置如下,
    //PC7
    nvic_init.NVIC_IRQChannel                   = EXTI9_5_IRQChannel;
    nvic_init.NVIC_IRQChannelPreemptionPriority = 0;
    nvic_init.NVIC_IRQChannelSubPriority        = 0;
    nvic_init.NVIC_IRQChannelCmd                = ENABLE;
    NVIC_Init(&nvic_init);        
    //timer3
    nvic_init.NVIC_IRQChannel                   = TIM3_IRQChannel;
    nvic_init.NVIC_IRQChannelPreemptionPriority = 0;
    nvic_init.NVIC_IRQChannelSubPriority        = 0;
    nvic_init.NVIC_IRQChannelCmd                = ENABLE;
    NVIC_Init(&nvic_init);

这2个中断优先级一样吗?
外部中断会在TIM3中断中,在某种条件下关闭中断模式,
EXTI->IMR 相应位置设0。

现在出现一个现象,在外界干扰下,会进入外部中断并且此时外部中断已经被时钟中断关闭(debug可以发现相应位 EXTI->IMR 是0)

}

回复评论 (7)

                                 这是中断抢占引起的吗?还是其他什么原因
点赞  2010-9-2 09:48
                                 两个中断,为何都要设置成相同的 PreemptionPriority 和 SubPriority ? 你应该分配成不同等级的。 并且还应考虑NVIC分配在哪个Group
点赞  2010-9-2 10:26
我知道原因了,我不告诉你们,
我等 香帅 来回复的
点赞  2010-9-2 11:15
我知道原因了,我不告诉你们,
我等 香帅 来回复的
henry_wu001 发表于 2010-9-2 11:15
点赞  2010-9-2 11:42
                                 nvic中断标志没清掉
点赞  2010-9-2 12:22
nvic中断标志没清掉
就是说:错误操作导致的?
点赞  2010-9-2 18:40
就是说:错误操作导致的?
不完全是,在tim中断中,把外部中断的标志清除了,并且在imr位进行屏蔽了,
但是由于没有清除nvic的标志位,离开tim中断后,会再次进入外部中断。

不知道这是否合理。
点赞  2010-9-3 09:01
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复