TI工程师您好:
我公司使用msp430f1232芯片使用外部4M晶振,4M晶振可以正常起振(在没有进入LPM4前),进入LPM4后再通过外部中断出低功耗后4M晶振就不起振(不工作)。
时钟配置程序
void OSC_INIT()
{
int i;
BCSCTL1|= XTS;
do
{
IFG1&=~OFIFG;
for(i=500;i>0;i--);
P2DIR |= BIT2; //red
P2OUT |= BIT2;
}
while((IFG1&OFIFG)!=0);
BCSCTL2|=SELM_2+SELS;
P2OUT &=~ BIT2;
}
进入低功耗
_BIS_SR(LPM4_bits);
出低功耗
#pragma vector = PORT1_VECTOR
__interrupt void Port_1(void)
{
P1IFG = 0;
_BIC_SR_IRQ(LPM4_bits); // 退出休眠模式
}
我公司怀疑是OSCOFF有关系,在LPM4模式会关闭OSCOFF,但是在出低功耗却不能开OSCOFF,在程序中写 _BIS_SR(OSCOFF);也不能使晶振起振。目前我们解决方法在每次出低功耗后重新运行一遍时钟配置程序,总感觉这种方法不合适,因为我们让芯片1秒钟进出5次低功耗。现在的关键点为什么不能打开OSCOFF。