历史上的今天
今天是:2025年08月06日(星期三)
2020年08月06日 | MSP430的中断分为哪3种?MSP430的中断优先级顺序是什么样的?
2020-08-06 来源:elecfans
MSP430的中断分为3种:系统复位、不可屏蔽中断、可屏蔽中断。

(1)系统复位的中断向量为0xFFFE。
(2)不可屏蔽中断的中断向量为0xFFFC。响应不可屏蔽中断时,硬件自动将OFIE、NMIE、ACCVIE复位。软件首先判断中断源并复位中断标志,接着执行用户代码。退出中断之前需要置位OFIE、NMIE、ACCVIE,以便能够再次响应中断。需要特别注意点:置位OFIE、NMIE、ACCVIE后,必须立即退出中断相应程序,否则会再次触发中断,导致中断嵌套,从而导致堆栈溢出,致使程序执行结果的无法预料。
(3)可屏蔽中断的中断来源于具有中断能力的外围模块,包括看门狗定时器工作在定时器模式时溢出产生的中断。每一个中断都可以被自己的中断控制位屏蔽,也可以由全局中断控制位屏蔽。
多个中断请求发生时,响应最高优先级中断。响应中断时,MSP430会将不可屏蔽中断控制位SR.GIE复位。因此,一旦响应了中断,即使有优先级更高的可屏蔽中断出现,也不会中断当前正在响应的中断,去响应另外的中断。但SR.GIE复位不影响不可屏蔽中断,所以仍可以接受不可屏蔽中断的中断请求。
中断响应的过程:(1)如果CPU处于活动状态,则完成当前指令;(2)若CPU处于低功耗状态,则退出低功耗状态;(3)将下一条指令的PC值压入堆栈;(4)将状态寄存器SR压入堆栈;(5)若有多个中断请求,响应最高优先级中断;(6)单中断源的中断请求标志位自动复位,多中断源的标志位不变,等待软件复位;(7)总中断允许位SR.GIE复位。SR状态寄存器中的CPUOFF、OSCOFF、SCG1、V、N、Z、C位复位;(8)相应的中断向量值装入PC寄存器,程序从此地址开始执行。
中断返回的过程:(1)从堆栈中恢复PC值,若响应中断前CPU处于低功耗模式,则可屏蔽中断仍然恢复低功耗模式;(2)从堆栈中恢复PC值,若响应中断前CPU不处于低功耗模式,则从此地址继续执行程序。
MSP430的中断优先级顺序从高到低为:
PORT2_VECTOR (1 * 2u) /* 0xFFE2 Port 2 */
PORT1_VECTOR (4 * 2u) /* 0xFFE8 Port 1 */
TIMERA1_VECTOR (5 * 2u) /* 0xFFEA Timer A CC1-2, TA */
TIMERA0_VECTOR (6 * 2u) /* 0xFFEC Timer A CC0 */
ADC_VECTOR (7 * 2u) /* 0xFFEE ADC */
USART0TX_VECTOR (8 * 2u) /* 0xFFF0 USART 0 Transmit */
USART0RX_VECTOR (9 * 2u) /* 0xFFF2 USART 0 Receive */
WDT_VECTOR (10 * 2u) /* 0xFFF4 Watchdog Timer */
COMPARATORA_VECTOR (11 * 2u) /* 0xFFF6 Comparator A */
TIMERB1_VECTOR (12 * 2u) /* 0xFFF8 Timer B CC1-2, TB */
TIMERB0_VECTOR (13 * 2u) /* 0xFFFA Timer B CC0 */
NMI_VECTOR (14 * 2u) /* 0xFFFC Non-maska××e */
RESET_VECTOR (15 * 2u) /* 0xFFFE Reset [Highest Priority] */
当同时有多个中断来的时候才有优先级的考虑(优先级顺序可查看向量表)
有中断响应以后自动关闭总中断,这个时候即使来更高优先级的中断都不会响应
要中断嵌套的话,就必须在中断中打开总中断
msp430的指令中,DINT和EINT分别指关和开所有中断,也就是包涵P1IE、P2IE、WDTIE、TAIE、TBIE、ADC12IE、串口中断允许的所有中断允许位为“0”和为“1”。
史海拾趣
|
火线、零线两之间,我用一只红色发光二极管串接一个100K电阻并在火线零线之间后,发光二极管正常工作; 可是我用一蓝色发光二极管串接一个100K电阻并在火线零线之间后,为什么就不能正常工作了呢? 着急啊?请教各位大侠,用蓝灯如何接才能正常、 ...… 查看全部问答> |
|
据金鹰网报道 现年39岁的Vasyl Lazarenko是一位来自乌克兰西部的工匠。由于女友非常喜欢坐敞篷车去兜风,而他自己又觉得硬顶车篷很实用,于是突发奇想,决定自己打造一款世界上独一无二的“双面车”。 这辆车的左边是现代轿车的造型,而右边则 ...… 查看全部问答> |
|
老弟最近在开发过程遇到一个问题,就是开发出的vxworks程序 1、跨网段无法ping通,报文也过不去。 现象与现状: 同网段可以ping通,报文也可以过去。 目前的所跨的两个采用B类地址,从第二位开始有区别区分子网。分 ...… 查看全部问答> |
|
我在学习单片机输出到蜂鸣器的时候有这样一段程序 bb bit p2.4 ;定义bb在下面程序中代表p2.4,连接蜂鸣器 star: clr bb ;使v1 9015导通 &n ...… 查看全部问答> |
|
想用ARM7+RTL8019做一个网络方面的东西.功能是将这个产品接入一个局域网中通过一个服务器件(192.168.1.3)发送数据(没分钟一个包大概几百字节)到另一个服务器(192.168.2.8)所在的局域网中的某一个产品. 见下图: A(ARM+8019) 192.168.1.3 192.168. ...… 查看全部问答> |
|
关于2440 WINCE5.0 BSP中EBOOT的一点疑问,谢谢解疑 我在三星官方下了个SMDK2440A WINCE5.0的BSP,弄NBOOT+EBOOT启动的时候发现个问题: 在EBOOT中的main.c文件: void main(void) { // Clear LEDs. // ...… 查看全部问答> |
|
【 低功耗】利用 Xilinx 功耗估计器分七步精确分析最坏情况下的功耗使用 利用 Xilinx 功耗估计器分七步精确分析最坏情况下的功耗使用 [ 本帖最后由 hangsky 于 2011-11-8 13:26 编辑 ]… 查看全部问答> |
|
本系列全部文章已整理成电子文档,下载地址: https://download.eeworld.com.cn/detail/tiankai001/13375 《那年,一步一步学linux c》全系列(目录索引) 几点说明:该系列文章中所用结构数据代码均来自linux2.6.39.文章中若有不对或某些功 ...… 查看全部问答> |




