MSP430F5529——中断理解

简介: MSP430F5529——中断理解

MSP430的中断,需要两个部分,一部分是打开中断,另外一部分是编写中断服务函数

打开中断

_BIS_SR与__bis_SR_register

首先我们得知道__bis_SR_register和_BIS_SR是一个玩意。查看宏定义可知

#define _BIS_SR(x)                      __bis_SR_register(x)

_BIS_SR()可传入的参数

然后我们查看x的值,发现里面有八个可以传入的值

#define C                      (0x0001)
#define Z                      (0x0002)
#define N                      (0x0004)
#define V                      (0x0100)
#define GIE                    (0x0008)
#define CPUOFF                 (0x0010)
#define OSCOFF                 (0x0020)
#define SCG0                   (0x0040)
#define SCG1                   (0x0080)

我们这里只需要关系GIE就可以了,这个GIE表示总中断,如果没有使能GIE,那么你写的中断函数将永远无法进入!

低功耗

我们先看下面这一段宏定义

#define LPM0                   (CPUOFF)
#define LPM1                   (SCG0+CPUOFF)
#define LPM2                   (SCG1+CPUOFF)
#define LPM3                   (SCG1+SCG0+CPUOFF)
#define LPM4                   (SCG1+SCG0+OSCOFF+CPUOFF)


这里我们需要有一个概念了,众所周知MSP430引以为豪的东西就是低功耗。MSP430单片机具有7种低功耗模式(LPM0~4、LPM3.5和LPM4.5,并非全部系列都具有,MSP430F5529就没有),通过不同程度的休眠,可降低系统功耗。


中断服务函数

中断服务函数如下

#pragma vector=PORT1_VECTOR
__interrupt void Port_1 (void)
{
}


#pragma vector= xxx,此处的xxx是表示指定的中断函数。比如我是P1.1采用中断,就写#pragma vector= PORT1_VECTOR。

/*****以下都是我一个一个的从库里面复制粘贴过来的,如有发现少了请评论*****/
RTC_VECTOR
PORT2_VECTOR
TIMER2_A1_VECTOR
TIMER2_A0_VECTOR
USCI_B1_VECTOR
USCI_A1_VECTOR
PORT1_VECTOR
TIMER1_A1_VECTOR
TIMER1_A0_VECTOR
DMA_VECTOR
USB_UBM_VECTOR
TIMER0_A1_VECTOR
TIMER0_A0_VECTOR
ADC12_VECTOR
USCI_B0_VECTOR
USCI_A0_VECTOR
WDT_VECTOR
TIMER0_B1_VECTOR
TIMER0_B0_VECTOR
COMP_B_VECTOR
UNMI_VECTOR
SYSNMI_VECTOR
RESET_VECTOR

__interrupt表示之后的是中断服务函数,中断函数必须是void型!!!后面那个Port_1名字随便取。中断函数不能传参!!!

总结

如果我们有中断一定要使能GIE!!!个人不建议新手使用低功耗!!!代码如下

_BIS_SR(GIE);//开启中断使能


注意:无论是外部中断还是串口中断,都是中断,需要打开GIE!!!

目录
相关文章
|
7月前
【FreeRTOS】中断管理(二)
【FreeRTOS】中断管理
136 0
|
7月前
【FreeRTOS】中断管理(三)
【FreeRTOS】中断管理
MSP430F5529库函数定时器A——定时中断
MSP430F5529库函数定时器A——定时中断
225 0
|
开发工具 git
MSP430F5529库函数定时器A——硬件PWM
MSP430F5529库函数定时器A——硬件PWM
221 0
|
存储 芯片
MSP430F5529库函数——模数转换模块(ADC12)软件触发
MSP430F5529库函数——模数转换模块(ADC12)软件触发
261 0
MSP430F5529库函数定时器B
MSP430F5529库函数定时器B
150 0
MSP430-中断的使用
MSP430-中断的使用
123 0
MSP430-中断的使用
msp430 I/O端口中断实验
单片机的P1.0引脚连接一个LED灯, P1.1引脚连接一个开关。要求 编写程序,利用中断方法检测P1.1引脚处的开关是否被按下。每按一下开关,P1.0连接的LED 亮灭状态就变换一次。
147 0
msp430 I/O端口中断实验
MSP430-定时器的寄存器介绍以及测试应用
MSP430-定时器的寄存器介绍以及测试应用
152 0
MSP430-定时器的寄存器介绍以及测试应用
MSP430-时钟系统和GPIO
MSP430-时钟系统和GPIO
246 0
MSP430-时钟系统和GPIO