OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3882|回复: 7

中断优先级的大问题,不理解寻求帮助

[复制链接]

52

主题

247

帖子

0

精华

高级会员

Rank: 4

积分
997
金钱
997
注册时间
2017-8-19
在线时间
160 小时
发表于 2022-4-9 10:17:57 | 显示全部楼层 |阅读模式
1金钱
今天尝试了一下使用外部中断不配置中断优先级,直接使能中断。我用的是外部中断0和中断1,在正点原子的战舰开发板上!我发现居然EXTI0打断不了EXTI4的程序,我人傻了。这是为什么?按中断表来看EXTI0默认比EXTI4高,居然打断不了!!!!!!!!!!!!!!!!!!!!!!!!!!有师傅能解释一下吗!两个中断是可以运行的!

void Exti_Init(void)
{
        RCC->APB2ENR |= 1 << 0;                                                //开启AFIO时钟
        AFIO->EXTICR[0] &= ~(0xf << 0);                //配置PA0引脚
        AFIO->EXTICR[1] &= ~(0xf << 0);                //清空GPIO.4引脚
        AFIO->EXTICR[1] |= (0x4 << 0);                //配置PE4引脚
        EXTI->IMR |= (0x1 << 0);                                        //开放EXTI0中断请求
        EXTI->IMR |= (0x1 << 4);                                        //开放EXTI4中断请求
        EXTI->RTSR |= (0x1 << 0);                                        //EXTI0上升沿触发
        EXTI->FTSR |= (0x1 << 4);                                        //EXTI4下降沿触发
        NVIC_EnableIRQ(EXTI0_IRQn);
        NVIC_EnableIRQ(EXTI4_IRQn);
}

void EXTI0_IRQHandler(void)
{
        LED_Switch(LED0,LED_On);
        while(1);
        EXTI->PR |= 1 << 0;                        //清除中断标志位
}

void EXTI4_IRQHandler(void)
{
        LED_Switch(LED1,LED_On);
        while(1);
        EXTI->PR |= 1 << 4;                        //清除中断标志位       
}


最佳答案

查看完整内容[请看2#楼]

默认情况下,0位抢占4位响应,抢占优先级相同无法中断嵌套
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

456

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1072
金钱
1072
注册时间
2021-4-26
在线时间
352 小时
发表于 2022-4-9 10:17:58 | 显示全部楼层
默认情况下,0位抢占4位响应,抢占优先级相同无法中断嵌套
回复

使用道具 举报

52

主题

247

帖子

0

精华

高级会员

Rank: 4

积分
997
金钱
997
注册时间
2017-8-19
在线时间
160 小时
 楼主| 发表于 2022-4-9 10:18:53 | 显示全部楼层
while(1)我是故意塞进去的,验证能不能打断,但是这个方法靠不靠谱我心里没底
回复

使用道具 举报

52

主题

247

帖子

0

精华

高级会员

Rank: 4

积分
997
金钱
997
注册时间
2017-8-19
在线时间
160 小时
 楼主| 发表于 2022-4-9 10:52:42 | 显示全部楼层
zzk111 发表于 2022-4-9 10:49
默认情况下,0位抢占4位响应,抢占优先级相同无法中断嵌套

请问这个是在哪个手册看到的,我早上一直在找这个内容没找到!很有可能看漏眼!谢谢
回复

使用道具 举报

80

主题

931

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3345
金钱
3345
注册时间
2013-5-28
在线时间
468 小时
发表于 2022-4-9 10:55:51 | 显示全部楼层
bbq 发表于 2022-4-9 10:52
请问这个是在哪个手册看到的,我早上一直在找这个内容没找到!很有可能看漏眼!谢谢

这个在内核的说明中会有就是那个NVIC的说明
设置了优先级的话,按优先级.
通优先级按硬件顺序
回复

使用道具 举报

52

主题

247

帖子

0

精华

高级会员

Rank: 4

积分
997
金钱
997
注册时间
2017-8-19
在线时间
160 小时
 楼主| 发表于 2022-4-9 11:06:34 | 显示全部楼层
聚东风 发表于 2022-4-9 10:55
这个在内核的说明中会有就是那个NVIC的说明
设置了优先级的话,按优先级.
通优先级按硬件顺序

感激不尽
回复

使用道具 举报

2

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2022-3-18
在线时间
13 小时
发表于 2022-4-11 13:33:28 | 显示全部楼层
中断有个优先级,在程序里面,内部设置好了,也可以修改
回复

使用道具 举报

52

主题

247

帖子

0

精华

高级会员

Rank: 4

积分
997
金钱
997
注册时间
2017-8-19
在线时间
160 小时
 楼主| 发表于 2022-4-11 16:59:13 | 显示全部楼层
xzhluck2010 发表于 2022-4-11 13:33
中断有个优先级,在程序里面,内部设置好了,也可以修改

恩,原来不设置应该就是跟同抢占,不同响应优先级一样,就看谁快
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 13:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表