(二)外部中断

1.中断概述

MSP430单片机的中断优先级是固定的,由硬件确定,用户不能更改。当多个中断同时发生中断请求时,CPU按照中断优先级的高低顺序依次响应。MSP430单片机包含3类中断源:系统复位中断源不可屏蔽中断源可屏蔽中断源

可屏蔽中断源是具有中断功能的片上外设所产生的。由状态寄存器SR的GIE位控制,当GIE=0时,所有中断使能。当GIE=1时,所有中断使能

以下是MSP430所有中断

在使用外部中断时,由于其是可屏蔽中断,所以必须要置位GIE

可以通过

1
2
3
_EINT();//开启

_DINT();//关闭

或者

1
2
__bis_SR_register(GIE);//开启
__bic_SR_register(GIE);//关闭

开启或关闭。

2.中断写法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#pragma vector = PORT2_VECTOR   // P2口中断源

__interrupt void Port_2 (void) // 声明一个中断服务程序,名为Port_2()
{
if(GPIO_getInterruptStatus(GPIO_PORT_P2, GPIO_PIN1))
{
delay_ms(10);//按键防抖
if(!GPIO_getInputPinValue(GPIO_PORT_P2, GPIO_PIN1))
{
GPIO_toggleOutputOnPin(GPIO_PORT_P4, GPIO_PIN7);
while(!GPIO_getInputPinValue(GPIO_PORT_P2, GPIO_PIN1));
}

/* 清除中断标志位 */
GPIO_clearInterrupt(GPIO_PORT_P2, GPIO_PIN1);
}
}
1
2
3
4
#pragma vector = 中断向量// P2口中断源 
__interrupt void 函数名(void)
{
}

中断向量见”msp430f5529.h”