打印

设置外部中断后定时器中断不进了,什么原因?

[复制链接]
3744|56
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
 /* Configure GPIO pin used as EINT Line */
                //*(volatile uint32_t  *)AFIO_EXTISS0 = 0x0011;
          //*(volatile uint32_t  *)AFIO_EXTISS1 = 0x1021;
                //*(volatile uint32_t  *)AFIO_EXTISS2 = 0xFFF1;
                //*(volatile uint32_t  *)AFIO_EXTISS3 = 0xFF11;
                exti_init(EXTI_0,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
                nvic_irq_enable(EXTI0_IRQn, 1, 1);
                exti_init(EXTI_1,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
                nvic_irq_enable(EXTI1_IRQn, 1, 1);
                exti_init(EXTI_2,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
                nvic_irq_enable(EXTI2_IRQn, 1, 1);
                exti_init(EXTI_3,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
                nvic_irq_enable(EXTI3_IRQn, 1, 1);
                exti_init(EXTI_4,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
                nvic_irq_enable(EXTI4_IRQn, 1, 1);
                exti_init(EXTI_5,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
                nvic_irq_enable(EXTI5_9_IRQn, 1, 1);
                exti_init(EXTI_6,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
                nvic_irq_enable(EXTI5_9_IRQn, 1, 1);
                exti_init(EXTI_7,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
                nvic_irq_enable(EXTI5_9_IRQn, 1, 1);
                exti_init(EXTI_8,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
                nvic_irq_enable(EXTI5_9_IRQn, 1, 1);
                exti_init(EXTI_12,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
                nvic_irq_enable(EXTI10_15_IRQn, 1, 1);
                exti_init(EXTI_13,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
                nvic_irq_enable(EXTI10_15_IRQn, 1, 1);


想读按键,引脚高电平中断,一打开上面的外部中断,定时器中断就没了。

使用特权

评论回复
沙发
Aist2018|  楼主 | 2024-5-7 11:22 | 只看该作者

使用特权

评论回复
板凳
Aist2018|  楼主 | 2024-5-7 11:57 | 只看该作者
   *(volatile uint32_t  *)AFIO_EXTISS0 = 0x0011;
                *(volatile uint32_t  *)AFIO_EXTISS1 = 0x1021;
                exti_init(EXTI_0,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
                nvic_irq_enable(EXTI0_IRQn, 0, 0);
                exti_init(EXTI_1,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
                nvic_irq_enable(EXTI1_IRQn, 0, 0);
                exti_init(EXTI_2,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
                nvic_irq_enable(EXTI2_IRQn, 0, 0);
                exti_init(EXTI_3,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
                nvic_irq_enable(EXTI3_IRQn, 0, 0);
                exti_init(EXTI_4,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
                nvic_irq_enable(EXTI4_IRQn, 0, 0);
               
                exti_init(EXTI_5,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
                nvic_irq_enable(EXTI5_9_IRQn, 0, 0);

                exti_init(EXTI_6,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
                nvic_irq_enable(EXTI5_9_IRQn, 0, 0);


这个定时器中断是有的,一加上                exti_init(EXTI_7,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
                nvic_irq_enable(EXTI5_9_IRQn, 0, 0);就定时器中断没有。这个可是我想读PB7中断,这个还和PA7有关吗?

使用特权

评论回复
地板
Aist2018|  楼主 | 2024-5-7 12:34 | 只看该作者
打开EXTI_7和EXTI_13外部中断就有问题,好像和PA7,PA13有关,可是我想读引脚中断,怎么处理这情况?

使用特权

评论回复
5
Aist2018|  楼主 | 2024-5-7 12:46 | 只看该作者
*(volatile uint32_t  *)AFIO_EXTISS1 = 0x1021; 我已经把中断源设为PB7了,PA7还有影响吗?

使用特权

评论回复
6
qintian0303| | 2024-5-7 13:47 | 只看该作者
没有看出来和定时器中断有什么关系啊?你的外部中断都是如何处理的?

使用特权

评论回复
7
Aist2018|  楼主 | 2024-5-7 14:13 | 只看该作者
外部中断里读GPIO引脚值,EXTI0_IRQHandler到EXTI10_15_IRQHandler都写了,里面清标志位,读引脚值。打开EXTI_7和EXTI_13外部中断就有问题,定时器中断没了,怀疑程序跑飞。其他线的外部中断没问题。麻烦看看上面电路图,这7和13线是怎么回事?

使用特权

评论回复
8
Aist2018|  楼主 | 2024-5-7 14:31 | 只看该作者
或者是打开EXTI_7和EXTI_13外部中断就一直进外部中断吗?

使用特权

评论回复
9
埃娃| | 2024-5-15 22:46 | 只看该作者
这个程序是怎么配置的啊

使用特权

评论回复
10
4c1l| | 2024-6-30 23:28 | 只看该作者
代码调整建议:
// 设置外部中断和中断优先级
exti_init(EXTI_0, EXTI_INTERRUPT, EXTI_TRIG_FALLING);
nvic_irq_enable(EXTI0_IRQn, 2, 1);  // 优先级设置为 2,可以根据需求调整

exti_init(EXTI_1, EXTI_INTERRUPT, EXTI_TRIG_FALLING);
nvic_irq_enable(EXTI1_IRQn, 2, 1);

// 设置定时器中断和中断优先级
nvic_irq_enable(TIMERx_IRQn, 1, 1);  // 优先级设置为 1,确保比外部中断的优先级更高

使用特权

评论回复
11
yorkbarney| | 2024-7-7 13:44 | 只看该作者
中断可能没有正确使能,或者在某些情况下,中断使能位被意外清除。

使用特权

评论回复
12
uytyu| | 2024-7-7 15:08 | 只看该作者
外部中断服务程序的代码,确保没有错误,比如正确处理中断并尽快返回。

使用特权

评论回复
13
jimmhu| | 2024-7-7 16:41 | 只看该作者
如果外部中断的优先级设置得比定时器中断高,那么当外部中断发生时,定时器中断会被阻塞,直到外部中断处理完毕。你需要检查并调整中断优先级设置,确保定时器中断的优先级不低于外部中断。

使用特权

评论回复
14
chenci2013| | 2024-7-9 20:52 | 只看该作者
可以在代码中添加日志输出,帮助定位问题。

使用特权

评论回复
15
backlugin| | 2024-7-9 23:56 | 只看该作者
硬件或软件错误可能导致中断向量表混乱,中断请求无法正确映射到中断服务程序。

使用特权

评论回复
16
10299823| | 2024-7-10 02:58 | 只看该作者
检查定时器的配置是否正确,包括预分频器、计数器模式、自动重载值等。一个错误的配置可能导致定时器***不会溢出,从而不会产生中断。

使用特权

评论回复
17
juliestephen| | 2024-7-10 06:01 | 只看该作者
如果外部中断的优先级设置得比定时器中断高,且外部中断发生时定时器中断正在进行,那么定时器中断会被挂起直到外部中断处理完毕。如果外部中断处理时间过长,可能会造成定时器中断长时间无法执行。

使用特权

评论回复
18
xiaoyaodz| | 2024-7-10 21:10 | 只看该作者
检查定时器的配置是否正确,包括计数模式、预分频器、自动重载等参数。错误的配置可能导致定时器无法正常工作。

使用特权

评论回复
19
sanfuzi| | 2024-7-11 00:15 | 只看该作者
检查定时器中断使能位是否已正确设置。这通常涉及到在相应的寄存器中写入特定的值来使能中断。

使用特权

评论回复
20
abotomson| | 2024-7-12 09:11 | 只看该作者
虽然外部中断本身不应该直接阻止定时器中断的进入,但如果外部中断的处理过程中占用了大量的CPU时间或资源,可能会导致定时器中断的响应时间变长或无法及时响应。

使用特权

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

本版积分规则

15

主题

78

帖子

0

粉丝