430超低功耗休眠唤醒问题

2019-03-24 09:18发布

我用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晶振

会是哪里的问题呢?

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1条回答
aerwa
2019-03-24 19:34
外部唤醒时所有初始值是不是不一样啊, 加入初上电的代码行吗。

一周热门 更多>

相关问题

    相关文章