13 MSP430低功耗模式及中断

学习笔记
作者: MingXiao

13.1 低功耗模式

MSP430的每个模块可以独立运行,因此CPU的活跃时间很短

进入和退出

进入:设置LPM0 - LPM4SR寄存器中的CPUOFF, OSCOFF, SCG0, SCG1来实现

退出:任何使能的中断和非屏蔽中断将使CPU进行Active Mode

进入中断:PC, SR被保存在Stack中,CPUOFF, SCG1, SCG0, OSCOFF自动置零

中断返回:PC, SR弹栈,CPU重新进入低功耗模式

在中断例程中可以修改Stack中的SRbit,使得中断返回后修改低功耗状态

初始化

13.2 中断原理

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

MSP430不希望发生中断嵌套,因为很多中断进行嵌套时,堆栈等资源会大量消耗,导致效率不如没有嵌套

级别越高的中断,中断例程的处理速度要越快(牛老师的工程师经验)

中断响应机制

  1. 当前正在进行的指令要完成
  2. PC进栈
  3. SR进栈(低功耗模式类型)
  4. 多个中断排队,最高优先级先处理
  5. 正在处理的中断对应的中断请求标志位IRF置0,其余保持为1
  6. 除了SCG0外其他SR的bit置0,这一步清除了低功耗模式,并了关闭中断GIE=0,防止嵌套
  7. 中断向量装入PC,进行中断例程

中断优先级别只在进入中断前的排队系统里起作用

13.3 中断例程

写法如下

// P4中断
#pragma vector=PORT4_VECTOR
__interrupt void Port_4(void)
{
	P4OUT ^= BIT5;	
	P4IFG &= ~BIT0;				// 清除P4.0的中断标志位
}

因为P4口8个bit都能作为中断,因此系统不会自动清0(因为可能别的口有中断输入),故需要手动清0



Comments