使用MSP430F1121中断须要注意的问题

发布者:shtlsw最新更新时间:2021-05-14 来源: eefocus关键字:MSP430F1121  中断  Flash单片机 手机看文章 扫描二维码
随时随地手机看文章

MSP430F1121(下面简称F1121)是TI公司新近推出的一款廉价的20引脚低功耗16位Flash单片机。它所具备的多种中断功能使其应用灵活,并适用于各种不同的应用领域。


不过,我们在应用开发中发现,厂家提供的技术文件虽然不少,但是对有关中断的说明却不那么详尽,这就给应用开发造成了诸多不便。为此,我们专门用程序进行了一些试验,并从中明确了一些问题。在这里,我们就把这些问题说明一下,供大家参考。


在说明这些问题之前,有必要先来看一下F1121的中断,如表1所列。


表1 F1121中断


F1121的各个中断都有对应的中断向量和中断优先级,通常被分为三类:系统复位、(非)屏蔽中断和可屏蔽中断。此外,F1121的各中断又分单源中断和多源中断,对应的中断标志称为单源中断标志和多源中断标志。


一、 系统复位


从形式上讲,可以把系统复位看成一种中断,但这是一种特殊的中断,虽然它也有中断向量(复位向量)和中断优先级,但与通常意义的中断有明显的区别:系统复位导致系统进入初始状态,并迫使程序从头开始运行。


1. 导致系统复位的情况及POR和PUC信号


有4种情况能够导致系统复位,并且产生POR(Power-On Reset)和PUC(Power-Up Clear)信号:


· 上电复位——产生POR和PUC;

· RST复位(外部复位信号复位)——产生POR和PUC;

· 看门狗中断——仅产生PUC;

· 关键码错误中断——仅产生PUC。


POR和PUC都是系统复位时产生的芯片内部信号,负责对寄存器进行初始化。在F1121提供的技术文件中,由PUC信号负责初始化的那些寄存器位,其初始状态用“0”和“1”来表示,而由POR信号负责的,用“(0)”和“(1)”来表示。


不同的系统复位情况产生不同的PUC和POR,因而产生不同的系统初始化结果。例如,对于BCSCTL1寄存器,不管是什么原因造成了系统复位,其低4位都将回到初始状态上;高4位只有在上电复位和RST复位这两种情况下才会回到初始状态,而在其他情况下(除非芯片掉电)其状态保持不变。


2. 看门狗中断标志WDTIFG


看门狗定时器有两种工作方式,且都使用中断标志WDTIFG,但它们的表现却有明显的区别。在看门狗工作方式下(产生导致系统复位的看门狗中断),其表现为:当发生看门狗中断而导致系统复位时,WDTIFG将置“1”(其他复位情况下为“0”)。这时的WDTIFG不能自动清“0”,只有等待软件(程序指令)将其清“0”。不过即使不清“0”(无论WDTIFG是“1”还是“0”),也不会影响程序的运行,而且也不会妨碍再次产生看门狗中断。实际上,这时的WDTIFG仅仅是标记一下是否产生了看门狗中断的作用,以便区分系统复位的原因。另一个导致系统复位的关键码错误中断的中断标志KEYV的情况也是如此。


另外,中断使能位WDTIE对看门狗中断不起任何作用。


二、 中断


中断分为可屏蔽中断和非屏蔽中断,区分它们的惟一准则是GIE(可屏蔽中断使能总控制位)能否禁止其中断。凡是能被GIE禁止的就是可屏蔽中断,不能被禁止的就是非屏蔽中断。


但是在F1121中,真正的非屏蔽中断只有看门狗中断和关键码错误中断。这两种中断却不是普通意义的中断,因为它们会导致系统复位。除此之外,还有三种中断属于非屏蔽中断的范畴,但它们却不是真正的非屏蔽中断,因为它们各自都有自己的中断使能控制位,这些中断使能控制位能够屏蔽它们的中断。所以,对这三种中断用“(非)屏蔽中断”来表示。


1. 中断标志


无论可屏蔽中断还是(非)屏蔽中断都有自己的中断标志,其共同特点是:① 中断标志的状态与该中断源能否产生中断无关。或者说,不管是否允许其中断,只要满足了中断的条件,中断标志就会置“1”。另外,也可以用软件将中断标志置“1”或清“0”。② 中断源就是通过中断标志请求中断的(当允许其中断时)。下面以(看门狗)定时器中断(不同于看门狗中断,它产生可屏蔽中断,中断向量为FFF4h,中断优先级是10)为例进行说明。


· 在允许其中断的情况下,无论什么原因,只要WDTIFG置“1”就会产生中断。例如,定时器溢出(这时WDTIFG置“1”)会产生中断,用软件强行将WDTIFG置“1”也会产生中断。

· 如果在中断被禁止的情况下WDTIFG已经置“1”,那么一旦允许,它就会产生中断。

· 如果在中断被禁止的情况下WDTIFG已经置“1”,但是,假如在允许它中断之前将其清“0”,那么,即使允许,它也不会产生中断。


中断标志分为两种——单源中断标志和多源中断标志,它们有不同的特性。


(1) 单源中断标志

如果一个中断向量(也就是中断处理程序)只对应惟一的一个中断源,那么,这个中断就被称为单源中断,其中断标志就是单源中断标志。例如,(看门狗)定时器中断的WDTIFG、比较器A中断的CAIFG和定时器A中断的CCIFG0都是单源中断标志。

单源中断标志的特性是:当单源中断被响应时,其单源中断标志将会自动清“0”。

但须注意,如果在中断处理过程中(中断返回之前)这个单源中断标志又重新被置“1”,那么,它就不会自动清“0”了,只有用软件才能将其清“0”。


(2) 多源中断标志

如果一个中断向量对应于多个中断源(即多个中断共用一个中断处理程序),那么这些中断都称为多源中断,对应的各个中断标志都是多源中断标志。例如,三个(非)屏蔽中断的NMIIFG、OFIFG、ACCVIFG以及定时器A中断的CCIFG1、CCIFG2、TAIFG和P1及P2口的所有中断标志都是多源中断标志。

多源中断标志的特性是:当多源中断被响应时,多源中断标志不能自动清“0”,只能用软件才能将其清“0”。因此,一定不要忘记在中断返回之前将多源中断标志清“0”;否则,当中断返回后,这个没有被清“0”的中断标志马上就会再次请求中断。


2. (非)屏蔽中断


一共有三个(非)屏蔽中断:NMI中断、振荡器故障中断和Flash读写错误中断。它们不受GIE状态的影响,但各自都有中断使能位:NMIIE、OFIE和ACCVIE,只有当中断使能位被置位后,才能允许对应的中断源产生中断。


注意:对这三个(非)屏蔽中断来说,只要响应了其中的一个中断,所有这三个中断使能位就会全部自动复位,而且一直保持在复位状态上,即使中断返回后它们也不会自动恢复为先前的状态,所以,需要用软件才能将它们重新置位。另外须注意的是,这三个中断都是多源中断。


3. 可屏蔽中断和GIE


能够被GIE禁止的中断都是可屏蔽中断,其中有的是单源中断(单源中断标志),有的是多源中断(多源中断标志)。所有这些中断都有各自的中断使能位,只有当中断使能位被置位并且GIE置位后,才能允许对应的中断源产生中断。除了系统复位或者用软件进行改写之外,其他任何情况(包括中断响应或中断返回等)都不会对这些中断使能位的状态产生影响。


GIE是可屏蔽中断使能总控制位,当它复位时禁止所有可屏蔽中断源请求中断,当它置位时才有可能允许它们请求中断(能否允许还取决于它们各自的中断使能位的状态)。


注意:当响应了任何一个中断时,包括可屏蔽中断和(非)屏蔽中断,GIE将会自动复位;当中断返回时它又会自动恢复为中断前的状态(除非在中断处理期间改写了保存在堆栈中的GIE的内容)。


如果在中断处理期间用软件将已经复位的GIE重新置位,这时就可以形成可屏蔽中断嵌套。


4. 中断优先级


F1121的中断优先级与其他微处理器中的概念略有不同:它只对同时发生多个中断的情况有效(级别高的中断优先被响应),而对中断嵌套的情况没有任何限制。


5. 中断嵌套


如果在处理某一中断期间又响应了其他中断请求,这时就会形成中断嵌套。中断嵌套时,前一中断处理过程被暂停,当后一中断被处理完之后才会继续处理前一中断。


注意:只有在中断处理期间将GIE重新置位,可屏蔽中断才能够嵌入到这个中断的处理之中;但(非)屏蔽中断却不受此限制,它们可以随时嵌入到任何处理之中(如果允许其中断的话)。另外,F1121的中断嵌套不受中断优先级的任何限制。也就是说,高级别中断可以嵌入到低级别中断的处理过程中;反过来,低级别中断也可以嵌入到高级别的中断处理过程中,甚至可以形成自身嵌套。这些情况对(非)屏蔽中断也不例外。因此,在使用F1121时须特别注意这一点,即使不是有意使用中断嵌套,也必须考虑这一问题,因为这时仍会存在发生中断嵌套的可能,而且,如果嵌套会影响中断的某一(些)状态的话,就有可能造成系统运行错误。


关键字:MSP430F1121  中断  Flash单片机 引用地址:使用MSP430F1121中断须要注意的问题

上一篇:ADC0832模数转换MSP430单片机程序+电路图
下一篇:一张图理解MSP430f4371的低功耗模式

推荐阅读最新更新时间:2024-11-12 12:00

Linux驱动学习笔记之触摸屏驱动
触摸屏归纳为输入子系统,这里主要是针对电阻屏,其使用过程如下 当用触摸笔按下时,产生中断。 在中断处理函数处理函数中启动ADC转换x,y坐标。 ADC结束,产生ADC中断 在ADC中断处理函数里上报(input_event)启动定时器 再次启动定时器(可以处理滑动、长按) 松开按键 其驱动程序的写法和之前写输入子系统的写法基本上一致。 写出入口函数,出口函数并加以修饰,加入相关头文件,然后开始完善各函数,在入口函数中分配input_dev结构体,设置(能产生哪类事件,能产生这类事件中的哪些事件),注册设备,硬件相关的操作等。出口函数中主要对之前注册、分配的一些资源进行释放。 还应根据2440数据手册ADC转换和触摸屏那一章,对
[单片机]
51单片机学习之路 —— 1.6 单片机中断(1)
这一次我们来单片机中很重要的一个概念 :  中断   今天讲的是一些中断的概念和关于中断的知识点 1 :  什么是中断?      理解下生活中的中断 再对比下单片机中断          中断的嵌套          中断优先级 2 : 中断源           52系列为6个中断源 51只有5个      下降沿 : 逻辑电平从高电平到低电平的转换被称为下降沿    默认中断级别 :          中断允许寄存器IE :          这里主要记:  EA  - 全局中断允许位           ET0 - 定时器/计数器0中断允许位
[单片机]
51<font color='red'>单片机</font>学习之路 —— 1.6 <font color='red'>单片机</font>的<font color='red'>中断</font>(1)
2A 单电感器双向后备电源在输入电源中断时提供连续供电
凌力尔特公司 (Linear Technology Corporation) 推出双向、高压升压型电容器充电器 LTC3643,该器件可自动转换为降压型稳压器以提供系统后备电源。专有的单电感器拓扑集成了电源通路 (PowerPath ) 功能,可完成两个独立的开关稳压器工作,从而减小了尺寸、成本和复杂性。LTC3643 以两种模式运行:升压充电模式和降压后备模式。在充电模式时,器件在 3V 至 17V 输入电源电压范围内以 2A 内部开关电流额定值和高达 40V 电压给电解质电容器阵列充电。在后备模式时,当输入电源电压降至低于可编程的电源故障 (PFI) 门限时,升压型充电器反向运作以用作一个同步降压型稳压器,从后备电容器供电并保
[电源管理]
PIC16F917 RB0(INT)外部中断练习程序
/*************PIC16F917单片机程序*********************/ /*************************************************************/ /*****File Function : 中断练习程序 *****/ /*****Program Author : ZhengWen(ClimberWin) *****/ /*****MCU : PIC16F917 内部晶振 *****/ /*****Compile Date : 2010/08/17 *****/ /*****Edition Inf
[单片机]
PIC16F917 RB0(INT)外部<font color='red'>中断</font>练习程序
STM32串口中断接收一个完整的数据帧
代码运行条件: (1) 大端发送; (2) 上位机发送一帧数据的时间间隔不能大于主循环周期; (3)数据帧满足下面格式: 帧头部(Head) 类型(Type) 长度(Length) 值(Value) CRC校验 2字节 1字节 1字节 X字节 2字节 0xaa 0x55 X void USART6_Init (void) { GPIO_InitTypeDef GPIO_InitStructur
[单片机]
C51编程13-中断篇(外部中断
CPU在执行的过程中,一般来说都是在执行主程序(main函数里面的代码)。如果希望处理其他的功能,可以通过查询的方式进行,判断是否需要处理或者通过中断的方式,进入中断服务函数程序里面执行。 前者是在主程序中判断条件是否成立,如果成立则执行其他功能,否则不执行;后者是CPU在执行过程中,判断是否有中断标志位,响应中断进入中断服务函数,执行相关功能。 MCS-51 单片机中,有两个外部中断(INT0与INT1),中断有两种方式低电平触发与负跳变(下降沿)触发。 下面通过讲INT0说明外部中断,INT1同理。 原理图: P0连接8个LED,INT0引脚连接一个按钮连接到地。 在中断系统中,INT0设计的寄存器中
[单片机]
C51编程13-<font color='red'>中断</font>篇(外部<font color='red'>中断</font>)
STM32GPIO外部中断总结
1 STM32中断分组 STM32 的每一个GPIO都能配置成一个外部中断触发源,这点也是 STM32 的强大之处。STM32 通过根据引脚的序号不同将众多中断触发源分成不同的组,比如:PA0,PB0,PC0,PD0,PE0,PF0,PG0为第一组,那么依此类推,我们能得出一共有16 组,STM32 规定,每一组中同时只能有一个中断触发源工作,那么,最多工作的也就是16个外部中断。STM32F103 的中断控制器支持 19 个外部中断/事件请求。每个中断设有状态位,每个中断/事件都有独立的触发和屏蔽设置。STM32F103 的19 个外部中断为: 线 0~15:对应外部 IO 口的输入中断。 线 16:连接到 PVD
[单片机]
定时中断控制灯的亮灭
TM1 EQU 5 TM2 EQU 10 ORG 0000H; AJMP START ORG 000BH; AJMP TIME0; ORG 30H; START: MOV P1,#0FFH; MOV R7,#00H; MOV R6,#00H; MOV TMOD,#00000001B;定时器0开启 MOV TH0,#3CH;定时50MS MOV TL0,#0B0H; SETB EA ;开启中断 SETB ET0;使能定时/计数中断0 SETB TR0;开启定时0 LOOP: AJMP LOOP TIME0:
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved