Measuring our success is your success !
1
HELLODSP 版权所有 请勿用于商业用途 违者必究
第 5 课 F2812 中断系统的理解
作者:顾卫钢
接触过单片机的朋友应该都知道中断这个词汇,我想在任何一款事件驱动型的 CPU 里面都应该会有
中断,因为中断就是为响应某种事件而存在的。写过程序的朋友也应该知道,中断对于我们软件编程的意
义,中断的灵活使用不仅可以实现我们想要实现的功能,而且合理的中断安排可以提高事件执行的效率,
因此中断在 DSP 应用中的地位是很重要的。今天,我们就和大家一起来探讨 F2812 中的中断系统及其如何
正确编写外设的中断程序,以保证中断正确执行。
1. 什么是中断?
中断(Interrupt)是硬件和软件驱动事件,它使得 CPU 暂停当前的主程序,并转而去执行一个中断
服务程序。我们以办公时接电话为例来阐述一下中断的概念,通过这个例子大家也可以体会一下 CPU 执行
中断时候的一些流程的原理。
中断理解
假如您正在办公桌前专心致志的写程序,突然电话铃响了(很显然,电话是不可错过的,相比手中的活
而言肯定是更加重要和紧急的,电话事件相当于产生了一个中断请求,因为某种需要不得不请求您打断
手中正在做的事情),您拿起了电话进行交谈(您响应了电话的请求,相当于 CPU 响应了一个中断,停
下了正在执行的主程序,并转向执行中断服务程序)。电话很快就讲完了,您挂上了电话,又接着刚才
停下来的地方开始写程序了(中断服务子程序执行完成之后,CPU
当然,CPU 执行中断的时候肯定要比上面的例子复杂的多,但是通过这个简单的生活实例,我想大家
应该能比较感性的理解什么是中断,以及中断产生时 CPU 是如何去执行的一些步骤。
2.2812 的中断系统
如下面的图 1 所示,2812 的 CPU 能够支持一个不可屏蔽中断 NMI 和 16 个可屏蔽的中断 INT1-INT14、
RTOSINT 和 DLOGINT,今天我们主要讨论的是可屏蔽中断中的 INT1-INT12,这也是我们平时使用时经常要
用到的中断。
2812 内部具有很多外设,每个外设又可以产生一个或者多个中断请求,对于 2812 的 CPU 而言,它没有
足够的能力去同时处理所有外设的中断请求。这就好比一个公司,每天会有很多员工向老总提交文件,请
求老总处理,老总一般事务繁忙,他一个人没有能力同时去处理所有的事情,那怎么办呢?一般老总都会
配有秘书,由秘书们将内部员工或者公司外部人员提交的事情进行分类筛选,然后再提交到老总那处理,
这样效率就提高上来了,老总也能忙的过来了。同样的,2812 的 CPU 为了能够及时有效的处理好各个外设
的中断请求,特别设计了一个专门处理外设中断的扩展模块(the Peripheral Interrupt Expansion block),
叫做外设中断控制器 PIE,它能够对各种中断请求源(例如来自于外设或者其他外部引脚的请求)做出判
断以及相应的决策。
评论3