- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
430中断总结
MSP430的中断分为3种:
1. HYPERLINK /os/ \t _blank 系统复位、
2.非屏蔽中断、
3.可屏蔽中断。
HYPERLINK /os/ \t _blank 系统复位指向中断向量表(表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从接受中断请求到开始执行中断服务函数的第一条指令需要5~6个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)当进入中断程序时,只要不在中断中再次开中断,则总中断是关闭的,
文档评论(0)