中断在实时嵌入式系统中起着至关重要的作用,但是很少有中断控制与应用程序编程接口(API)相关联。汇编语言代码或编译器内在函数通常散布在整个代码中,使得使用中断函数很危险且难以理解。本文将探讨中断API的外观。
可以定义六种不同的功能来处理任何微控制器上的大多数中断行为。这些功能的摘要可以在下面看到。
Isr_Enable(IsrType)
Isr_Disable(IsrType)
Isr_GlobalEnable()
Isr_GlobalDisable()
Isr_CriticalSectionStart()
Isr_CriticalSectionEnd()
前两个功能用于启用和禁用单个中断。例如,在ARM Coretex-M0 +上,IsrType将允许在嵌套矢量中断控制器(NVIC)中控制多达32个不同的中断。这些功能被分为两个不同的功能,以通过防止任何需要刷新指令管道的分支代码来提高性能。
全局功能用于在全局或系统级别禁用和启用中断。这些功能通常会在初始化期间使用。在这里,可以使用汇编级指令或编译器内部指令将CPU控制在最低级别。
最后两个控制中断的功能旨在开始和结束代码的关键部分。当需要原子操作时,开发人员通常会在关键部分之前禁用中断,然后在之后启用它们。问题在于,假定首先启用了中断!最后两个功能跟踪中断是否被启用和禁用,并在关键部分之后恢复中断的状态。
这六个简单的API函数的使用可以大大提高嵌入式软件的可读性和清晰度。可以下载API的可下载模板 这里 或单击本文末尾的下载图像。这些是开发嵌入式系统时应使用的一小部分API的简单示例。对于其他API,请考虑适用于MCU的API标准’s located 这里 。与API标准相关的模板将很快在商店中提供。
下载ISR API: