MATLAB模拟动力系统:指定中断向量与异常处理

需积分: 49 31 下载量 105 浏览量 更新于2024-08-09 收藏 3.92MB PDF 举报
"MPLAB XC16 C 编译器 用户指南 - 指定中断向量在模拟动力系统吸引子中的应用" 在MATLAB中模拟动力系统吸引子时,可能会涉及到微控制器的中断处理机制,尤其是对于16位器件。在微控制器硬件中,存在一个主中断向量表,部分设备还配备了可选的备用中断向量表。中断向量是处理器在响应中断时跳转到的内存地址,它指向相应的中断服务函数。 14.4.1 中断向量使用的关键在于设置中断处理函数。当INTCON2寄存器的ALTIVT位被置1时,系统将使用备用中断向量表。对于支持可禁止和移动的备用中断向量表的器件,可以通过配置字AIVTDIS和BSLIM进行设置。`#pragma config AIVTDIS = OFF` 可启用向量表,`#pragma config BSLIM = 0x1FFD` 定位向量表的边界。之后,可以定义中断服务函数,如`void __attribute__((interrupt)) _AltT1Interrupt(void) {}`。 中断服务函数需要保护系统资源并在完成后使用RETFIE指令返回到原来的执行流程。C语言可以用来编写中断处理程序,编译器会自动处理资源保护和正确返回。函数命名需遵循向量表中的格式,例如`void __attribute__((interrupt(auto_psv))) _StackError(void);` 将自动填充堆栈错误向量。未指定处理程序的中断会自动连接到默认的中断处理程序,这个默认处理程序通常会导致器件复位。 中断向量表的布局取决于具体器件系列,每个异常向量占用一个程序字。在编程时,可以参照器件系列的中断向量表进行中断函数的命名和分配。需要注意的是,器件复位不通过中断向量表,而是直接将程序计数器设为0,启动执行位于地址0的代码,通常是C运行时启动模块。 在使用MPLAB XC16 C编译器时,用户指南提供了详细的中断处理和配置指导,确保了程序的正确运行和中断服务的高效管理。虽然编译器和微控制器的代码保护功能提供了一定程度的安全性,但用户仍需了解可能存在代码篡改的风险,并遵循最佳实践来保护知识产权。