MSP430单片机中断系统
文章目录
- MSP430单片机中断系统
- 1.中断的基本概念
- 1.1中断的定义
- 1.2中断源
- 1.3中断向量表
- 1.4中断优先级
- 2.MSP430单片机中断源
- 3.中断响应过程
- 3.1中断响应设置
- 3.2中断与主程序结构
- 4.中断返回过程
- 5.中断应用(实操)
- 5.1中断函数
1.中断的基本概念
1.1中断的定义
- 终端系统是一个现代微处理器的一个重要组成部分。
- 充分利用中断,可以简化程序和提高执行效率
简言之,就是暂停正在运行的程序,转去执行中断程序,处理完中断后又继续执行主程序的过程
1.2中断源
把引起中断的原因或者能够发出中断请求的信号源统称为中断源。
现场保护:在转去执行中断服务程序前,程序需保护中断现场;在执行完中断服务程序后,应恢复中断现场。
1.3中断向量表
中断向量是指中断服务程序的入口地址。为了让CPU方便查找对应的中断向量,就需要在内存中建立一张查询表,即中断向量表。
中断向量表:
1.4中断优先级
在单片机中每个中断源指定一个优先级,称为中断优先级。(中断优先级仅用于裁决同时产生的中断请求)
多个同时触发——按照优先级进行响应
高优先级可中断低优先级的中断;同优先级不能互相中断。
(详细见上图中断向量表)
2.MSP430单片机中断源
MSP430单片机包含3类中断:系统复位中断源、不可屏蔽中断源和可屏蔽中断源
系统复位中断源:用于将系统硬件和软件状态恢复到初始设定值,实现系统初始化与故障恢复。
不可屏蔽中断源:产生优先级极高,不可被软件屏蔽的中断,用于处理电源故障等紧急事件。
屏蔽中断源:中断请求可由CPU决定是否响应,用于处理如外部设备I/O等非紧急且可按需处理的事件。
中断非为单源中断和共源中断:
单源:一个事件触发一个中断(标志位会自动清零)
共源:一个事件触发多个中断(标志位需要手动清零)
提示:中断事件发生后,相应的标志位会发生变化。所以在执行完中断服务函数前,要清除中断标志位。
3.中断响应过程
3.1中断响应设置
- 中断通道设置(开启自身中断使能位、清除中断标志位、开启总中断使能位)
- 中断响应(当前程序存储,数据记录,优先级裁,中断请求标志位清0,SR清零,确认中断向量,执行终端服务程序)
3.2中断与主程序结构
4.中断返回过程
通过执行RETI(return from interrupt)指令进行中断返回。
主要过程:
- 从堆栈中弹出之前保存的状态寄存器给SR;
- 从堆栈中弹出之前保存的程序计数器给PC;
- 继续执行中断时的下一条指令。
5.中断应用(实操)
5.1中断函数
- 中断函数固定的格式
如下:
#pragma = 中断向量 //指定中断入口地址(即中断向量)
__interrupt void 自定义函数名(void)//为中断向量定义一个中断函数
{//中断服务程序的主体
}
- 中断触发方式设置
以P1.3为例
P1IES
的每一位对应 P1 端口的一个引脚,为 0 时表示上升沿触发,为 1 时表示下降沿触发。
P1IES |= BIT3; // 设置P1.3引脚为下降沿触发中断
- 中断标志位寄存器操作
由中断发生时该位被置1,通常需要手动清零,避免重复触发中断。
// 检查P1.3引脚的中断标志位,如果置位则清除
if (P1IFG & BIT3)
{P1IFG &= ~BIT3; //清零
}
- 中断使能寄存器操作
中断使能寄存器用于允许或禁止特定的中断源。为1 表示允许中断,为 0 时表示禁止。
P1IE |= BIT3; // 使能P1.3引脚的中断
}