stm32 中断抢占问题

[复制链接]
3710|7
 楼主| henry_wu001 发表于 2010-9-2 09:47 | 显示全部楼层 |阅读模式
STM32, vi, ic, ni, AN
一个是外部中断,一个是时钟中断。
设置如下,
    //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)

}
 楼主| henry_wu001 发表于 2010-9-2 09:48 | 显示全部楼层
这是中断抢占引起的吗?还是其他什么原因
hjiongh 发表于 2010-9-2 10:26 | 显示全部楼层
两个中断,为何都要设置成相同的 PreemptionPriority 和 SubPriority ? 你应该分配成不同等级的。 并且还应考虑NVIC分配在哪个Group
 楼主| henry_wu001 发表于 2010-9-2 11:15 | 显示全部楼层
我知道原因了,我不告诉你们,
我等 香帅 来回复的
香水城 发表于 2010-9-2 11:42 | 显示全部楼层
我知道原因了,我不告诉你们,
我等 香帅 来回复的
henry_wu001 发表于 2010-9-2 11:15


等待楼主揭晓答案,:time:
 楼主| henry_wu001 发表于 2010-9-2 12:22 | 显示全部楼层
nvic中断标志没清掉
香水城 发表于 2010-9-2 18:40 | 显示全部楼层
nvic中断标志没清掉
henry_wu001 发表于 2010-9-2 12:22


就是说:错误操作导致的?
 楼主| henry_wu001 发表于 2010-9-3 09:01 | 显示全部楼层
就是说:错误操作导致的?
香水城 发表于 2010-9-2 18:40


不完全是,在tim中断中,把外部中断的标志清除了,并且在imr位进行屏蔽了,
但是由于没有清除nvic的标志位,离开tim中断后,会再次进入外部中断。

不知道这是否合理。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

81

帖子

0

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