当前位置:首页 > 嵌入式 > 嵌入式硬件

  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负责。

  不同的系统复位情况产生不同的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时须特别注意这一点,即使不是有意使用中断嵌套,也必须考虑这一问题,因为这时仍会存在发生中断嵌套的可能,而且,如果嵌套会影响中断的某一(些)状态的话,就有可能造成系统运行错误。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

为增进大家对嵌入式的认识,本文将对嵌入式开发以及学习嵌入式需要注意的事项予以介绍。

关键字: 嵌入式 指数 嵌入式开发

中国上海,2025年4月7日 — 全球领先的嵌入式系统开发软件解决方案供应商IAR正式发布全新云就绪平台,为嵌入式开发团队提供企业级的可扩展性、安全性和自动化能力。该平台于在德国纽伦堡举办的embedded world...

关键字: 自动化 嵌入式开发 RISC-V

在嵌入式系统开发领域,VS Code(Visual Studio Code)作为一款轻量级但功能强大的代码编辑器,正逐渐成为开发者的首选工具。本文将详细介绍如何在VS Code上搭建嵌入式开发环境,并分享一些调试技巧。

关键字: VS Code 嵌入式开发

随着汽车电子化、智能化程度的不断提高,车载以太网(Automotive Ethernet)作为新一代车载网络通信技术,正逐渐成为汽车内部通信的主干网络。它以其高带宽、低延迟和强抗干扰能力,为汽车提供了更加高效、可靠的数据...

关键字: 车载以太网 嵌入式开发

随着物联网技术的飞速发展,嵌入式系统对实时性、低功耗和可扩展性的要求越来越高。Zephyr RTOS(实时操作系统)作为一款专为资源受限设备设计的开源RTOS,凭借其轻量级、模块化和高可扩展性,在嵌入式开发领域得到了广泛...

关键字: 嵌入式开发 Zephyr RTOS 物联网

嵌入式开发,作为电子工程和计算机科学交叉领域的重要分支,对于构建稳定、高效的软件系统提出了独特挑战。本文将深入探讨嵌入式开发的可靠方法论,结合实例与代码,为开发者提供一套系统化的指导原则。

关键字: 嵌入式开发 计算机科学

嵌入式开发,作为电子工程和计算机科学的交汇点,对软件系统的稳定性和效率提出了极高的要求。本文将结合具体案例,深入探讨嵌入式开发中的可靠方法论,为开发者提供一套系统化的指导原则。

关键字: 嵌入式开发 智能家居

在科技日新月异的今天,嵌入式开发作为连接硬件与软件的桥梁,在物联网、智能设备、工业自动化等领域扮演着至关重要的角色。对于许多技术爱好者而言,自学嵌入式开发既是一个充满魅力的挑战,也是一条通往创新实践的必由之路。然而,这条...

关键字: 嵌入式开发 物联网

在科技日新月异的今天,嵌入式开发与Java开发作为软件开发领域的两大重要分支,各自展现出了独特的发展轨迹和市场前景。近年来,关于嵌入式开发是否会像Java开发一样“卷”的讨论日益增多,这背后既反映了市场对技术趋势的敏锐洞...

关键字: 嵌入式开发 Java开发

现在在嵌入式开发MCU中,八块MCU仍占据三分之一以上的份额,在工业控制,安全,物联网,消费电子等诸多领域,八块MCU依然随处可见。

关键字: 嵌入式开发 MCU
关闭