想问一下,430F5438是如何响应中断的?
发生中断后,完成各种PC、SR入栈等,是直接到FF80-FFFF地址寻找中断函数的地址然后跳转执行么?
我现在吧lnk430f5438a.xcl中最后一段
// -------------------------------------
// Interrupt vectors
//
-Z(CODE)INTVEC=FF80-FFFF
-Z(CODE)RESET=FFFE-FFFF
改成
// -------------------------------------
// Interrupt vectors
//
-Z(CODE)INTVEC=45B80-45BFF
-Z(CODE)RESET=45BFE-45BFF
就是把中断向量表放到45B80-45BFF地址段,(上电复位是总到FFFE-FFFF去找程序开始地址么?)
我们拿串口中断举例,430如何得知我中断向量表放到了45B80-45BFF地址段,是在main函数之前的初始化中把中断向量表的地址加载到(SYS中断向量发生器?)中么?
我现在在做一个串口升级APP的程序。bootloader和APP为两个工程,通过修改lnk430f5438a.xcl实现。
把bootloader放到5C00-FFFF地址段,并且占用FF80-FFFF段中断向量表。
把APP放到10000-45BFF地址段,中断向量表为45B80-45BFF。
bootloader擦写APP程序到10000-45BFF地址段,跳转到APP程序开始地址。
现已知cstartup.s43为main函数之前的初始化过程,会有看门狗、堆栈等初始化,所以跳转到APP程序可以顺序执行。只是中断向量表这块有点疑问,请指点一下。还有就是我这样做还会有其他问题吗?