MSP430执行银行

时间:2014-06-17 21:55:57

标签: c interrupt-handling msp430 context-switch

我是MSP430架构的新手,我将为ARM Cortex M3编写的RTOS移植到这个架构中。在ARM Cortex架构中,有PSP和MSP寄存器来保存执行模式的堆栈值。

据我所知,从MSP430架构中只有一个堆栈指针寄存器(SP)。

以下是我的问题:

- 在中断/执行上下文中是否只有一个SP寄存器库?

- 我可以像在ARM Cortex中那样在MSP430中使用常规C函数进行中断处理吗?

- MSP430在中断执行期间如何处理(保存/恢复)寄存器(特别是SP,SR和PC)?

1 个答案:

答案 0 :(得分:1)

  1. MSP430寄存器没有存储区,它是上下文中唯一的一个SP寄存器。 enter image description here

  2. 是的,您可以使用C函数进行中断处理链接

  3. __interrupt void MyFuncISR(void)

    或者它也可以像

    #pragma vector=TIMER0_A0_VECTOR    
    __interrupt void
    ta0cc0_isr (void)
    

    在这种情况下,编译器将通过您提供的define / name设置正确的中断向量

    3。 中断逻辑执行以下操作: 1.任何当前正在执行的指令已完成。 2.指向下一条指令的PC被压入堆栈。 3. SR被推入堆栈 等等,见下文: enter image description here