2463|5

103

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

MSP430F2418在运行的过程中可以更改ACLK的时钟源吗? [复制链接]

我使用的单片机是MSP430F2418,最开始ACLK的时钟源是单片机内部的VLO,在运行的过程中我想把ACLK的时钟源改成外部的32768的晶振,代码如下所示:
#include "msp430.h"
void main(void)
{
  unsigned long i=0xffff;
  _BIC_SR(0xFFFF);                      //将SR中的各位清零,内联函数。通过看它的汇编代码可以知道。一个直接后果是GIE被复位,所有的可屏蔽中断关断。
  
  WDTCTL=WDTPW+WDTHOLD;                 //关闭看门狗定时
  
  BCSCTL1&=~XT2OFF;                     //打开XT2
  BCSCTL2 |= (SELM_2+DIVM_2+SELS);        //MCLK、SMCLK选择xt2(5MHz,所以MCLK=1.25MHz,SMCLK=5MHz
  BCSCTL3 |=  (XT2S_2+LFXT1S_2+XCAP_1);                  //6pF电容
  IFG1 &= ~OFIFG;
  
  P5SEL |= BIT4+BIT6;
  P5DIR |= BIT4+BIT6;
  P1SEL |= BIT4;
  P1DIR |= BIT4;
  
  IFG1&=~(WDTIFG+OFIFG+NMIIFG+PORIFG+RSTIFG);  //中断标志清零
  FCTL3=FWKEY;                          //ACCVIFG清零
  IE1|=OFIE+NMIIE+ACCVIE;               //中断初始化设置
  
  while(i)
  {
    i--;
  }
  BCSCTL3 = (XT2S_2+LFXT1S_0+XCAP_1);
  
  do
  {
    IFG1 &= ~OFIFG;                      // Clear OSCFault flag
    for (i = 0xFF; i > 0; i--);          // Time for flag to set
  }
  while (IFG1 & OFIFG);                 // OSCFault flag still set  
  
  while(1);
}
结果程序一直在  while(i) { i--;}这段代码中,但是只要我将 BCSCTL3 = (XT2S_2+LFXT1S_0+XCAP_1);这句话注释掉,程序又能正常执行,这是怎么回事?

最新回复

i没有初始化,确定不是这个原因?  详情 回复 发表于 2016-4-12 15:18
 
点赞 关注

回复
举报

1976

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 
BCSCTL3 = (XT2S_2+LFXT1S_0+XCAP_1);这一句在while(i)循环语句之后,怎么会有影响?

点评

嗯,刚刚找到原因了,因为我打开了时钟错误中断IE1|=OFIE+NMIIE+ACCVIE。 而开启外部晶振时BCSCTL3 = (XT2S_2+LFXT1S_0+XCAP_1),外部晶振不能马上起振,所以会出现时钟错误,导致程序进入时钟错误中断中。 而  详情 回复 发表于 2016-4-12 12:59
所以说感觉非常奇怪呀  详情 回复 发表于 2016-4-12 12:04
 
 

回复

103

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
bobde163 发表于 2016-4-12 11:25
BCSCTL3 = (XT2S_2+LFXT1S_0+XCAP_1);这一句在while(i)循环语句之后,怎么会有影响?

所以说感觉非常奇怪呀
 
 
 

回复

103

帖子

0

TA的资源

一粒金砂(中级)

4
 
bobde163 发表于 2016-4-12 11:25
BCSCTL3 = (XT2S_2+LFXT1S_0+XCAP_1);这一句在while(i)循环语句之后,怎么会有影响?

嗯,刚刚找到原因了,因为我打开了时钟错误中断IE1|=OFIE+NMIIE+ACCVIE。

而开启外部晶振时BCSCTL3 = (XT2S_2+LFXT1S_0+XCAP_1),外部晶振不能马上起振,所以会出现时钟错误,导致程序进入时钟错误中断中。

而时钟错误中断向量中我没有放置任何代码,所以程序进入复位中断中,导致程序从头开始执行

点评

找到问题了就好  详情 回复 发表于 2016-4-12 13:22
 
 
 

回复

1976

帖子

0

TA的资源

五彩晶圆(初级)

5
 
adam_zhang41 发表于 2016-4-12 12:59
嗯,刚刚找到原因了,因为我打开了时钟错误中断IE1|=OFIE+NMIIE+ACCVIE。

而开启外部晶振时BCSCTL3 =  ...

找到问题了就好
 
 
 

回复

1193

帖子

0

TA的资源

纯净的硅(高级)

6
 
i没有初始化,确定不是这个原因?
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表