MSP430单片机__中断服务

发布者:幸福微风最新更新时间:2020-04-21 来源: eefocus关键字:MSP430  单片机  中断服务 手机看文章 扫描二维码
随时随地手机看文章

430的中断优先级顺序定义,有三种中断:1.系统重置、2.不可屏蔽中断(NMI)、3.可屏蔽中断。


部分具体的中断优先级由高到低为:


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] */


其中可屏蔽中断分为系统NMI(SNMI)和用户NMI(UNMI),一般来说,不可屏蔽中断不受GIE标志位的影响。用户不可屏蔽中断的中断源为NMIIE、ACCIE和OFIE,当响应用户不可屏蔽中断后,其他不可屏蔽中断就自动被禁止,以防止同级别的中断发生产生中断嵌套。当同时有多个中断来的时候才有优先级的考虑(优先级顺序可查看向量表)。有中断响应以后自动关闭总中断,这个时候即使来更高优先级的中断都不会响应。要中断嵌套的话,就必须在中断中打开总中断。


关于中断嵌套,资料上是这么讲的:


1)430默认的是关闭中断嵌套的,除非你在一个中断程序中再次开总中断EINT;

2)当进入中断程序时,只要不在中断中再次开中断,则总中断是关闭的,此时来中断不管是比当前中断的优先级高还是低都不执行;

3)若在中断A中开了总中断,则可以响应后来的中断B(不管B的优先级比A高还是低),B执行完再继续执行A。注意:进入中断B后总中断同样也会关闭,如果B中断程序执行时需响应中断C,则此时也要开总中断,若不需响应中断,则不用开中断,B执行完后跳出中断程序进入A程序时,总中断会自动打开;

4)若在中断中开了总中断,后来的中断同时有多个,则会按优先级来执行,即中断优先级只有在多个中断同时到来时才起做用!中断服务不执行抢先原则。

5)对于单源中断,只要响应中断,系统硬件自动清中断标志位,对于TA/TB定时器的比较/捕获中断,只要访问TAIV/TBIV,标志位倍被自动清除;


对于单源中断,只要响应中断,系统硬件自动清中断标志位;

对于TA/TB定时器的比较/捕获中断,只要访问TAIV/TBIV,标志位被自动清除;

对于多源中断要手动清标志位,比如P1/P2口中断,要手工清除相应的标志;如果在这种中断用"EINT();"开中断,而在打开中断前没有清标志,就会有相同的中断不断嵌入,而导致堆栈溢出引起复位,所以在这类中断中必须先清标志再打开中断开关。


对于多源中断,我在应用时遇到了一些问题,程序总是在运行时跑飞。我曾经用过的程序中有两个中断源,但是已经按照要求在中断服务程序中清楚了标志位,但程序还是跑飞了,现在还未找到原因,还要继续修改,要请教一下学长。


官方给的多源中断的例子是:


#pragma vector = PORT2_VECTOR

__interrupt void port2(void)

{

     switch(P2IV)

    {

         case P2IV_P2IFG6:

           P1OUT ^= BIT0;break;           //LED1 亮灭

         case P2IV_P2IFG7:

           P1OUT ^= BIT1;break;           //LED2 亮灭

         default  :break;

      }


}

关键字:MSP430  单片机  中断服务 引用地址:MSP430单片机__中断服务

上一篇:MSP430F149的TIMERA定时中断理解
下一篇:MSP430F5438学习笔记 FLAHS操作

推荐阅读最新更新时间:2024-11-10 21:37

单片机编程初学者之主函数的特点
在给一些单片机初学者解答问题的时候,我发现了一个现象,可能是因为受到电脑上学习C程序设计的影响,很多人会写出类似这样的程序: view plain copy#include void main() { P1=0x00; } 或者是这样的程序 view plain copy#include int main() { P1=0xab; return 0; } 如果是在电脑上运行类似这样的程序,程序执行结束,控制权交给系统,有返回值的返回给系统,是完全可行的,但是在单片机上就不一样了,对于不依靠操作系统的单片机程序,main函数就是操作系统,应该是不能终止运行的,而应该是一个whi
[单片机]
基于单片机的大功率太阳能LED路灯电路设计与仿真
随着社会的发展和人口的增长, 人们需要面对环境和资源的严峻挑战, 于是新一代的照明灯具---太阳能LED 路灯受到了越来越多的关注。本文设计了一具双电源供电模式、具光控和时控功能、具有较强抗干扰能力的功率为40W左右的太阳能LED 路灯。文中介绍了路灯LED 发光面板的设计、太阳能电池与蓄电池的选择, 同时详细讨论分析了路灯各部分驱动电路的工作原理, 并对主要电路用Protues 和keil 软件进行了仿真。仿真结果与理论分析结果相符。 1 引言 LED 作为第四代照明光源, 正以其独有的优越性在城市美化、道路照明、庭院照明、室内照明以及其他各领域中得到越来越广的应用。尤其在偏远无电地区, 太阳能照明灯具以其不可阻挡的优势得到迅速
[电源管理]
基于<font color='red'>单片机</font>的大功率太阳能LED路灯电路设计与仿真
MSP-EXP430G2 LaunchPad学习笔记:MSP430G2231存储器组织
摘要: 本文以MSP430G2231为例,整理了其存储器组织各个部分的内容,包括特殊功能寄存器、外围模块、RAM、FLASH、中断向量表。 PS:本文系学习MSP430的整理笔记,为了是将Contiki移植到LaunchPad。 一、存储器组织 1.1 小模式 从0x0000到0xFFFF分别是:特殊功能寄存器SFR、外围模块、数据存储器、程序存储器、中断向量表。不同型号的存储器组织不尽不同,使用时得具体参考数据手册,但具有以下共性 : (1)特殊功能寄存器、8位外围模块、16位外围模块地址范围一样 特殊功能寄存器 0x0000~0x000F; 8位外围模块 0x0010~00FF 16位外围模块 0x0100~0x
[单片机]
MSP-EXP430G2 LaunchPad学习笔记:<font color='red'>MSP430</font>G2231存储器组织
STC单片机不重新加电烧写方法
###############################main.c############################# #include intrins.h #include myreg.h #include uart.h #include tool.h void RdUART(); void main(void) { volatile unsigned long CNT = 0; UCHAR I=0; UART_init(38400,RdUART); UART_open(); while(1) { while(CNT 10000) {
[单片机]
hx711压力传感器的单片机源码
压力传感器资料 本传感器所附带的hx711程序,仅供参考。 纯属赠送,不提供指导! 用途与特点:适合学生实验,DIY电子设计,广泛用于小型电子计价秤、计重秤等。 传感器量程:10kg,20kg,40kg可选择,其外观、尺寸、参数都一样,只是量程不一样。 参考接线方法: 红线(传感器电源输入) 接E+ 白线(传感器电源地) 接E- 绿线(差分信号输出-) 接A- 黑线(差分信号输出+) 接A+ 特别注意:传感器属于精密部件,剧烈振动、自由落体、碰撞、过载、过压等等,都非常容易造成传感器永久损坏或者影响精度和线性,您如果对该部件没有一定的了解,请慎重购买。毕竟该部件比起电阻 电容 三极管等其它电子部件要脆弱的多。 参数说
[单片机]
hx711压力传感器的<font color='red'>单片机</font>源码
关于双核单片机的常见问题
在市面上的单片机,如果想找出一款支持PWM、ADC、UART中任意一种功能的型号,价格一般都超过人民币1块钱,而且一般都只支持其中的一到两种,除非是价格达到2~3元的型号。而如果选用前面列举参数的单片机,本身硬件已经直接支持ADC,而且还可以通过软件在不影响主程序的前提下实现高速PWM和UART功能。 上图为该双核单片机的内部构架示意图,从图可见该单片机内部有两个核,分别为FPP0和FPP1,每个核自己有独立的程序指针(PC)、堆栈指针(SP)、累加器(ACC)和状态寄存器(CF)。设计原理并不复杂,是让这两个核共享系统时钟,第一个系统时钟周期执行FPP0程序,第二个系统时钟周期执行FPP1程序,依次间隔往复,这样就
[单片机]
关于双核<font color='red'>单片机</font>的常见问题
单片机外部中断源的扩展
设计一个五个外部中断源系统。其中最高级的外部中断源连接到INT0脚,其余中断源连接到INT1脚。画出系统电路原理图,并写出外部中断1的中断服务程序。 案例分析: 中断与查询相结合的方法是把系统中多个外部中断源按它们的重要程度进行排序,把其中最高级别的中断源接到MCS-51的一个外部中断源输入端(例如接到 脚),其余的中断源用线 或 的方法连接到另一个外部中断输入端( ),并同时接到一个I/O口,如图3中所示接到P1口。中断请求由硬件电路产生,而中断源的识别由程序查询来处理,查询顺序由中断源的优先级决定。图3为五个外部中断源的连接电路,其中设备1~4经OC门与 连接,并连接到P1.0~P1.3,均采用电平触发方式。设备0为最高级
[单片机]
<font color='red'>单片机</font>外部<font color='red'>中断</font>源的扩展
基于51单片机的脉搏体温监测仪
一.硬件方案 系统以STC89C52单片机为核心,以光电传感器利用单片机系统内部定时器来计算时间,由光电传感器感应产生信号,单片机通过对信号累加得到脉搏跳动次数,时间由定时器定时而得。系统运行中可以通过观察指示灯闪烁,若均匀闪烁说明测量值准确。系统停止运行时,能够显示总的脉搏次数,此外我们也加了温度传感器DS18B20来检测人体温。 主要由51单片机+1602液晶显示+红外对管采集+按键+蜂鸣组成;如图: 二.设计功能 (1)本设计基于STC89C51/52(与AT89S51/52、AT89C51/52通用)单片机。 (2)LCD1602液晶显示当前的心率和当前体温,心率单位是心率/分钟,温度单位为摄氏度。 (3)手指放到
[单片机]
基于51<font color='red'>单片机</font>的脉搏体温监测仪
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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