外部中断标志位清除不了

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了外部中断标志位清除不了相关的知识,希望对你有一定的参考价值。

MSP430程序,在IO口初始化时设置P2IE|=BIT3;P2IES=0;P2IFG =0;此时能清除中断标志位,但进入中断以后用P2IFG =0清除中断标志位清除不了,中断标志位一直为P2IFG=0x08,求高手指教

参考技术A 2.
引脚设置

PxDIR
输入
/
输出方向寄存器

PxIN
输入寄存器

PxOUT
输出寄存器

PxIFG
中断标志寄存器

PxIE
中断使能寄存器

PxSEL
功能选择寄存器


1
)若使用
P1
口的部分引脚作为中断方式,在开总中断之前务必
设置好
P1IFG

P1IES

P1IE
寄存器的相应位,并确保相应引
脚为输入方向。


2

为了尽量降低功耗,
对连接引脚应设定为
IO
功能并设为输出。


3
)中断标志需要软件清除!可以用软件置位产生中断。

MSP430

IO
中断由
P1
口和
P2
口输入变化的电平触发,
P1

P2

有八个输入
IO

P1
的八个
IO
共用一个中断向量,
P2
的八个
IO
共用
另一个中断向量。
在中断服务程序中判断到底是哪个
IO
口触发中断。

STM32的RTC中断标志只能手动清除

背景:

  最近在做一个stm32的项目,其中用到RTC的实时时钟功能。时钟源采用外部32.768K晶振,时钟预分频设置为32767,目的是为了产生1秒的中断,然后在中断处理函数中更新实时年月日时分秒。

解决方案:

  但是由于缺乏经验,RTC中断处理函数中并没有使用RTC_ClearITPendingBit(RTC_IT_SEC)将中断标志位清除,导致程序在NVIC_Init()之后一直跳转到中断函数中,无法执行接下来的代码。

结论:

  通过手动清除秒中断标志位之后,问题迎刃而解。说明STM32的RTC中断标志位无法自动清除,必须要手动清除,否则会出现上述情况。

以上是关于外部中断标志位清除不了的主要内容,如果未能解决你的问题,请参考以下文章

MCS-51系列单片机的有几个中断源?各中断标志是如何产生的?如何清除各中断标志?

STM32F411:清除外部中断标志真的有必要吗?

stm32中外部中断进入中断以后,把中断线挂起位清0以后,在检测还有意义吗,不是已经clear了吗

STM32的RTC中断标志只能手动清除

请教一个关于51单片机外部中断的问题

嵌入式单片机,外部中断,中断标志位介绍