TI中文支持网
TI专业的中文技术问题搜集分享网站

IO中断的问题

P2的中断,不知道为什么不能触发?

#include "msp430.h"

int main(void)

{P1DIR|=0X01   : // P1.0管脚输出,用来控制告警灯

P2DIR&=~0X03;  //P2.0,1输入,用来触发中断

P2REN|=0X03;

P2OUT|=0X02;//P2.1拉高

P2OUT&=~0X01;//p2.0拉低

P2IE|=0X03;

P2IES|=0X02;//p2.1下降沿触发

P2IES&=~0X01;//P2.0上升沿触发

 __bis_SR_register( GIE);

}

#pragma vector=PORT2_VECTOR
__interrupt void Port2_ISR(void)
{

switch (P2IV)
{
case 0x02:{if(P2IN &0X01)     //上升沿触发,检测开关是否处于闭合,闭合不告警,否则告警亮灯

                          P1OUT&=~0X01;//P1.0输出低电平亮灯告警

                       else

                      P1OUT|=0X01;灭灯

} break;                            //用来检测开关状态,一旦打开就告警,闭合就取消,不知道这样写对不对

case 0x04: P1OUT&=~0X01;

break;      //下降沿触发,连接一个震动传感器,震动后导通接地,亮灯告警
default: break;

 P2IFG = 0X00;

}

这里中断会有冲突吗

Lina Lian:

BETTER ZHU,

试着在打开全局中断前,增加清除flag

P2IFG &= ~0x0x; // P2.0, P2.1 IFG cleared

_BIS_SR(LPM4_bits + GIE); // Enter LPM4 w/interrupt

另外,

在中断处理函数中清除flag,也分别在自己的case中清,不要最后统一清,这样可能导致丢失某些中断。 P2IFG = 0X00;

希望对你有帮助!O(∩_∩)O~

Eric Fu:

你好,

请问P2所有的中断都不能触发吗?试试外加一个下降沿或上升沿的信号去触发一下。

Xutong Han2:

可以在仿真状态下,或者在中断中设置一个端点看看到底可否进入中断函数,或者如果有示波器捕获一下IO管脚的电平看是否有上升或者下降沿。

赞(0)
未经允许不得转载:TI中文支持网 » IO中断的问题
分享到: 更多 (0)