什么是中断
在这之前如果有接触过单片机,那么应该对中断的概念很清楚了,所谓中断,是指计算机在运行过程中,出现某些意外或紧急情况急需处理,CPU能自动停止正在执行的程序转而去执行发生的意外或紧急情况的程序,处理完毕后又返回被暂停的程序继续运行
中断过程
- 中断源发出中断请求
- CPU判断该中断是否可以被响应,也就是是否允许中断和该中断源是否被屏蔽
- 中断优先级排队,因为可能不止一个中断,所以需要进行中断优先级排队,CPU再对各中断优先级进行裁决
- CPU执行完当前指令或者当前指令无法执行完,则立即停止当前程序,保护断电地址和CPU当前状态,转入相应的中断服务程序
- 执行中断服务程序
- 恢复被保护的状态,执行”中断返回”指令回到被中断的程序或者转入其它程序
一个中断流程的话是很简单的:
下面是51单片机的中断流程图有助于我们理解中断流程,51单片机中断系统有两个优先级,5个中断源,可以实现二级中断嵌套
其它嵌入式芯片的中断流程,诸如STM32、TMS320X281x等,不过是中断更多,其实流程都差不多
TMS320X281x的中断系统
下面几张图对TMS320X281x的中断系统进行了生动而详细的展示:
8个PIE块中断被分组为一个CPU中断。 总共有12个CPU中断组,用每组8个中断等于96个可能的中断。 在F281x和C281x上,其中45个被使用
总结一下:TMS320X281x的中断系统采用的是三级中断机制,分别为外设级、PIE级和CPU级;对于某一个具体的外设中断请求而言,只要任意一级中断不许可,CPU最终都不会响应该外设请求
CPU-TIMER0中断实例
具体的应用代码可以参考Ti官方例程,里面有详细的注释足以让我们学通并且使用,可以去TI官方下载或者看我的Github链接