我是MSP430架构的新手,我将为ARM Cortex M3编写的RTOS移植到这个架构中。在ARM Cortex架构中,有PSP和MSP寄存器来保存执行模式的堆栈值。
据我所知,从MSP430架构中只有一个堆栈指针寄存器(SP)。
以下是我的问题:
- 在中断/执行上下文中是否只有一个SP寄存器库?
- 我可以像在ARM Cortex中那样在MSP430中使用常规C函数进行中断处理吗?
- MSP430在中断执行期间如何处理(保存/恢复)寄存器(特别是SP,SR和PC)?
答案 0 :(得分:1)
MSP430寄存器没有存储区,它是上下文中唯一的一个SP寄存器。
是的,您可以使用C函数进行中断处理链接
__interrupt void MyFuncISR(void)
或者它也可以像
#pragma vector=TIMER0_A0_VECTOR
__interrupt void
ta0cc0_isr (void)
在这种情况下,编译器将通过您提供的define / name设置正确的中断向量
3。 中断逻辑执行以下操作: 1.任何当前正在执行的指令已完成。 2.指向下一条指令的PC被压入堆栈。 3. SR被推入堆栈 等等,见下文: