我用MSP430F149休眠时,切换到外部低频32.768
void Switch_to_LFXT(void) //切换到外部低频
{
int i;
do
{
IFG1 &= ~OFIFG;
for (i = 0xFF; i > 0; i--);
}
while ((IFG1 & OFIFG));
BCSCTL2 |= SELM_3;//选择钟表时钟
BCSCTL1 |= XT2OFF; // 关闭XT2
}
正常工作采集数据时 由外部中断唤醒切换回外部高频8M
void Switch_to_XT2(void) //切换到外部高频晶振
{
int i;
BCSCTL1&=~XT2OFF; /* 打开XT2振荡器 */
do {
IFG1 &= ~OFIFG; /* 清除振荡器失效标志 */
for (i = 0xFF; i > 0; i--); /* 延时,等待XT2起振 */
} while ((IFG1 & OFIFG) != 0);
BCSCTL2 |= SELM_2 + SELS ; /* MCLK=XT2 =8MHz SMCLK=XT2/8=1MHz*/
}
每次上电开始工作时是外部高频
切换到外部低频休眠功耗也正常
就是每次通过外部中断唤醒时 切换不回高频外部8M晶振
会是哪里的问题呢?
此帖出自
小平头技术问答
一周热门 更多>