430中断总结.doc_第1页
430中断总结.doc_第2页
430中断总结.doc_第3页
430中断总结.doc_第4页
430中断总结.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MSP430的中断分为3种:1.系统复位、2.非屏蔽中断、3.可屏蔽中断。系统复位指向中断向量表(表3-11)的最高地址0xFFFE。非屏蔽中断 和 可屏蔽中断根据能否被SR寄存器中的全局中断使能位GIE禁用来区分,非屏蔽中断不受GIE的控制,具备独立的中断使能;可屏蔽中断除了受本身的中断使能控制,还接受GIE控制。1. 在MSP430中非屏蔽中断主要有3个,分别是来自MSP430外部管脚NMI的触发FLASH非法访问振荡器错误非屏蔽中断都指向中断向量表中的0xFFFC地址。2. MSP430具备大量的 可屏蔽中断,定时器、ADC、DMA、UART、WDT、I/O、比较器等都具备中断功能。不同的可屏蔽中断优先级可根据中断向量表决定。可屏蔽中断的中断向量表从0xFFFA地址开始向低地址扩展,地址越高的中断向量表所对应的中断优先级越高。3. 每个中断向量在中断向量表里面占据一个2Byte空间的表项,这个2Byte的空间用来存储对应中断服务函数的首地址,CPU根据中断向量表里的地址跳转到中断服务函数。仔细观察中断向量表可以看到,一些中断向量对应于多个中断源。例如,地址为0xFFF8的Timer1_A3中断,当TA1CCR1中断标志位CCIFG置位或者TAIFG置位都会跳转到该向量。又如具备中断功能的P1和P2端口,端口中的任意一个管脚发生中断都会跳转到对应的中断向量。这种中断就叫做多源中断。对于多源中断,中断源中任意一个中断发生都会跳转到公用的中断向量表项,这个时候需要通过中断标志位区别具体的中断源。有了这些中断向量表的基础知识,下面介绍中断的处理过程,包括中断的接收和退出过程。4. 微控制器使用过程中一些突发的程序跑飞问题,很多时候都是由于没有正确地处理中断造成的。5. 中断发生的先决条件是对应中断使能位使能,非屏蔽中断要求其独立的中断使能开启;可屏蔽中断要求全局中断使能和自身中断使能同时开启。6. 当中断请求到达,CPU从接受中断请求到开始执行中断服务函数的第一条指令需要56个CPU周期。前面介绍过MSP430有两种CPU,分别是CPU和CPUX。其中CPU处理过程耗费6个CPU周期,而CPUX处理过程耗费5个CPU周期。7. 中断请求接收后,会按照以下顺序处理:1)CPU执行完当前指令。中断和CPU一般不是同步的或者CPU正在执行的指令不是单周期指令,所以CPU先处理完当前指令。2)指向下一条CPU指令的PC被压栈。3)状态寄存器SR压栈。步骤2和步骤3的目的是保护现场,为中断服务函数执行完之后恢复之前运行状态做准备。4)选择最高优先级的中断进行服务。中断优先级在这个时候就会发挥作用。5)单源中断标志位会被自动清零,多源中断标志位需要软件清零。因为具备I/O中断功能的P1、P2端口中断标志位属于多源中断标志位,其中断标志位不会自动清零,需要在代码中手动清零。6)状态寄存器SR被清零,将会终止任何低功耗状态,并且全局中断使能被关闭(GIE)。MSP430在接收了中断后由于SR的清零操作自动关闭全局中断使能,就是说默认状态下是不允许中断嵌套的,若用到中断嵌套的话需要在中断服务函数中,打开全局中断。7)中断向量中存储的中断服务函数地址被装载到PC中开始执行中断服务函数。中断服务函数的最后一条汇编指令是RETI,表示从中断服务函数中返回。MSP430的返回过程比进入过程要快一些,主要是因为返回过程的时候CPU指令已经执行完。返回过程对于CPU需要5个CPU周期,对于CPUX需要3个CPU周期。按照下面的顺序执行返回操作: 状态寄存器SR出栈,SR的设置会立即生效。 PC指针出栈,接着执行中断前的代码。8. 在使用中断时,如果某个中断开启,则一定要写中断服务函数,即便中断服务函数为空操作。这个过程是对中断向量赋值,避免中断发生后,程序跑飞。其中可屏蔽中断分为系统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,标志位倍被自动清除;对于多源中断要手动清标志位,比如P1/P2口中断,要手工清除相应的标志;如果在这种中断用EINT();开中断,而在打开中断前没有清标志,就会有相同的中断不断嵌入,而导致堆栈溢出引起复位,所以在这类中断中必须先清标志再打开中断开关。部分具体的中断优先级由高到低为: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-maskae */RESET_VECTOR (15 * 2u) /* 0xFFFE Reset Highest Priority */中断寄存器:一、P1、P2端口二、开门狗:三、定时器A:TAIE:定时器中断允许位0:禁止定时器溢出中断1:允许定时器溢出中断TAIFG:定时器溢出标志位增计数模式时:当定时器由CCR0计数到0,TAIFG置位;连续计数模式时:当定时器由0FFFFH 计数到0时,TAIFG置位增/减计数模式时:当定时器由CCR0减计数到0时,TAIFG置位。0:没有TA中断请求1:有TA中断请求CCIE:捕获/比较模块中断允许位0:禁止中断(TACCRx)1:允许中断(TACCRx)COV:捕获溢出标志当 CAP=0时,选择比较模式.捕获信号发生复位。没有使COV置位的捕获事件。当 CAP1 时,选择捕获模式。如果捕获寄存器的值被读出前在此发生捕获事件,则COV 置位。程序可检测COV 来判断原值读出前是否又发生捕获事件。读捕获寄存器时不会使溢出标志复位,须用软件复位。0:没有捕获溢出1:发生捕获溢出CCIFG:捕获比较中断标志捕获模式:寄存器CCRx 捕获了定时器TAR 值时置位。比较模式:定时器TAR 值等于寄存器CCRx值时置位。0:没有中断请求(TACCRx)1:有中断请求(TACCRx)CAIES:中断触发沿选择0:上升沿触发1:下降沿触发CAIE:中断允许0:中断禁止1:中断允许CAIFG:比较器中断标志0:没有中断请求1:有中断请求四、UXRCTLURXEIE:接收出错中断允许位0 不允许中断,不接收出错字符并且不改变URXIFG标志位;1 允许中断,出错字符接收并且能够置位URXIFG。URXWIE:接收唤醒中断允许位当接收到地址字符时,该位能够置位URXIFG,当URXEIE=0,如果接收内容有错误,该位不能置位URXIFG。0 所有接收的字符能够置位URXIFG;1 只有接收到地址字符才能置位URXIFG。五、ADC12:ENC:转换允许位0 ADC12为初始状态,不能启动A/D 转换1 首次转换由SAMPCON 的上升沿启动注意:1在CONSEQ=0(单通道单次转换)的情况下,当ADC12BUSY=1时,ENC=0则会结束转换进程,并且得到错误结果。2在CONSEQ0(非单通道单次转换)的情况下,当ADC12BUSY=1时,ENC=0则转换正常结束,得到正确结果ADC12TVIE:转换时间溢出中断允许(多次采样请求)当前转换还没有完成时,又得到一次采样请求,如果ADC12TVIE允许的话,会

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论