13 MSP430低功耗模式及中断
作者:
MingXiao
13.1 低功耗模式
MSP430的每个模块可以独立运行,因此CPU的活跃时间很短
进入和退出
进入:设置LPM0 - LPM4的SR寄存器中的CPUOFF, OSCOFF, SCG0, SCG1来实现
退出:任何使能的中断和非屏蔽中断将使CPU进行Active Mode
进入中断:PC, SR被保存在Stack中,CPUOFF, SCG1, SCG0, OSCOFF自动置零
中断返回:PC, SR弹栈,CPU重新进入低功耗模式
在中断例程中可以修改Stack中的SRbit,使得中断返回后修改低功耗状态
初始化

13.2 中断原理
可以用GIE=0进行屏蔽的中断为可屏蔽,其余为非屏蔽中断

MSP430不希望发生中断嵌套,因为很多中断进行嵌套时,堆栈等资源会大量消耗,导致效率不如没有嵌套
级别越高的中断,中断例程的处理速度要越快(牛老师的工程师经验)
中断响应机制
- 当前正在进行的指令要完成
- PC进栈
- SR进栈(低功耗模式类型)
- 多个中断排队,最高优先级先处理
- 正在处理的中断对应的中断请求标志位IRF置0,其余保持为1
- 除了
SCG0外其他SR的bit置0,这一步清除了低功耗模式,并了关闭中断GIE=0,防止嵌套 - 中断向量装入PC,进行中断例程
中断优先级别只在进入中断前的排队系统里起作用
13.3 中断例程
写法如下
// P4中断
#pragma vector=PORT4_VECTOR
__interrupt void Port_4(void)
{
P4OUT ^= BIT5;
P4IFG &= ~BIT0; // 清除P4.0的中断标志位
}
因为P4口8个bit都能作为中断,因此系统不会自动清0(因为可能别的口有中断输入),故需要手动清0