TI C2833x介绍---复位与中断(9)

来源:本站
导读:目前正在解读《TI C2833x介绍---复位与中断(9)》的相关信息,《TI C2833x介绍---复位与中断(9)》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《TI C2833x介绍---复位与中断(9)》的详细说明。
简介:TI C2833x介绍---复位与中断(9)

在程序中有多个中断需要处理的时候,几个准则不得不看,以免跳转到莫名其妙的illegalISR还一头雾水找不到原因:

准则1:不要采用直接修改的方法手动清除(或者说编程操作)PIEIFR的位:

对PIEIFR进行人为读操作或者读-修改-写操作时,将要发生的中断请求可能丢失。为了清除一个PIEIFR的位,处于挂起状态的中断必须被响应。如果希望清除PIEIFR位,但是又不执行相应的中断服务子程序,需要执行下面的流程:

1.用EALLOW指令使能对PIE向量表的写操作。

2.修改PIE向量表使得所修改的外设中断向量指向一个暂时的中断服务子程序。这个暂时存在的中断服务子程序只执行IRET操作(return from interrupt,即进入中断之后紧接着退出)。

ISR.

3. 使能这个暂时存在的中断服务子程序

4. 在上述的中断完成IRET操作之后,PIEIFR位被清除.

5. 别忘了修改PIE向量表,将向量表的映射状态改为正常状态,这样才能使得中断服务子程序响应正确的外设中断事件.

6.清除EALLOW位,恢复PIE向量表的写保护状态。

准则2:处理不同优先级的软件中断(即不是有硬件事件触发的中断,而是我们自己定义的中断)

在《C2833x C/C++ Header Files and Peripheral Examples in C》即TI网站的SPRC530软件包中有一些这样的例子。操作的步骤为:

1. 使用CPU IER寄存器判断全局优先级,单独的PIEIER寄存器判断中断在组中的优先级,此时PIEIER寄存器只能在中断中读写,且在此中断中只能修改同一个组的PIEIER。PIEACK 此时可以阻止CPU响应其它的中断(除非清除这个应答位)。

(b) 在中断服务子程序处理一个组的中断事件时,注意不要不要不小心禁止了其余组的PIEIER位(在赋值时用“或”操作会保险一些)。

提醒:《TI C2833x介绍---复位与中断(9)》最后刷新时间 2024-03-14 01:13:23,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《TI C2833x介绍---复位与中断(9)》该内容的真实性请自行鉴别。