打印

stm32 中断抢占问题

[复制链接]
2615|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 | 只看该作者
我知道原因了,我不告诉你们,
我等 香帅 来回复的

使用特权

评论回复
5
香水城| | 2010-9-2 11:42 | 只看该作者
我知道原因了,我不告诉你们,
我等 香帅 来回复的
henry_wu001 发表于 2010-9-2 11:15


等待楼主揭晓答案,:time:

使用特权

评论回复
6
henry_wu001|  楼主 | 2010-9-2 12:22 | 只看该作者
nvic中断标志没清掉

使用特权

评论回复
7
香水城| | 2010-9-2 18:40 | 只看该作者
nvic中断标志没清掉
henry_wu001 发表于 2010-9-2 12:22


就是说:错误操作导致的?

使用特权

评论回复
8
henry_wu001|  楼主 | 2010-9-3 09:01 | 只看该作者
就是说:错误操作导致的?
香水城 发表于 2010-9-2 18:40


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

不知道这是否合理。

使用特权

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

本版积分规则

15

主题

81

帖子

0

粉丝