使用MSP430F1121中断须要注意的问题
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)”来表示。例如,图1所示的BCSCTL1寄存器,高4 位由POR负责,低4位由PUC负责。
图1 BCSCTL1寄存器
不同的系统复位情况产生不同的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”,那么,即使允许,它也不会产生中断。
中断标志分为两种——单源中断标志和多源中断标志,它们有不同的
MSP430F1121 中断 系统复位 相关文章:
- MSP430F1121与液晶驱动芯片PCF8576的连接程序(06-27)
- 超低功耗奶牛发情期监测器的设计(01-07)
- LPC2292的伪中断与伪中断处理(03-25)
- Linux 2.4.x内核软中断机制(04-06)
- 嵌入式系统开发之中断控制的实现(04-18)
- uC/OS-II的任务切换机理及中断调度优化(05-11)