STM32如何在我需要的时候关闭或打开外部中断EXTI?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32如何在我需要的时候关闭或打开外部中断EXTI?相关的知识,希望对你有一定的参考价值。
我用这条指令 EXTI->IMR &= ~(EXTI_Line5) 关闭了外部中断,后面用这条指令 EXTI->IMR != EXTI_Line5 来打开外部中段,发现无法打开外部中断了,就是经不去中断了,求解!!!
好像我打开外部中断的语句错了,改成 EXTI->IMR |= EXTI_Line5 就可以了
EXTI_ClearITPendingBit(EXTI_Line14);
EXTI_ClearFlag(EXTI_Line14);
非要关的话,我觉得这样就关了
EXTI_InitStructure.EXTI_Line = EXTI_Line14;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd = DISABLE; //ENABLE
EXTI_Init(&EXTI_InitStructure); 参考技术A 有一个中断屏蔽寄存器EXTI->IMR,只要将相关通道清零就可屏蔽了。
STM32F407关闭总中断
我们在写程序的时候,有的器件时序不允许被中断打断,这时候我们就需要在执行某段程序时,先把全部中断都关闭,执行完毕后,再打开。
由于STM32F407的库函数的版本不同,所以关闭总中断的函数也不相同,这就给我们开发者带来一定的困扰,那么我们此时应该怎么办呢?
其实在KEIL编程环境中,有一个KEIL专用的关闭/打开总中断的函数,这个函数定义在KEIL中找不到,但是就是可以用;如下:
__disable_irq() ; //关闭总中断
__enable_irq() ; //打开总中断
以上是关于STM32如何在我需要的时候关闭或打开外部中断EXTI?的主要内容,如果未能解决你的问题,请参考以下文章