打印

外部晶振不焊接ACLK时钟源仍能工作不

[复制链接]
1500|31
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lizye|  楼主 | 2018-3-19 14:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
jiahy| | 2018-3-19 14:41 | 只看该作者
你把代码贴出来看看

使用特权

评论回复
板凳
lizye|  楼主 | 2018-3-19 14:44 | 只看该作者
//初始化时调用函数,初始化DCO为8MHZ

void InitClk()

{

  /*等待电压稳定*/

  DelayN(30);

  

  IE1 |= OFIE;                              /*Ena××e osc fault int (NMI)*/

  BCS1_Fren_Addr=(uchar*)CALBC1_8MHZ_;

  BCSCTL1 = *BCS1_Fren_Addr;

  DCO_Fren_Addr=(uchar*)CALDCO_8MHZ_;

  DCOCTL = *DCO_Fren_Addr;

}

//中断函数检测OSC 错误

#pragma vector=NMI_VECTOR

__interrupt void OscFault(void)

{

  volatile uint uiCnt;

#ifdef ALARMLED

  LedR_1;

#endif

  do                                        /* Loop until flag is clear*/

  {

    IFG1 &= ~OFIFG;                         /* Clear fault flag*/

    for (uiCnt = 0xFFFF; uiCnt; uiCnt--);                /* Delay for crystal to start*/

  }

  while (IFG1 & OFIFG);                     /* Test LF oscillator fault flag*/

  IE1 |= OFIE;                              /* Re-ena××e osc fault int*/

#ifdef ALARMLED

  LedR_0;

#endif  

}

//TimerA初始化函数

void InitTimer()

{

  uint uiResultInteger;

  TACTL = TASSEL0 + TACLR + ID0;  /*TimerAClock=ACLK ,divided by 2,clear TAR*/

  TACTL |= MC0;

  uiResultInteger = rand();

  uiResultInteger &= 0x00ff;

  CCR0 = (uiResultInteger + uiWorkFrequence)<<3;  /*woke interval = (CCR0)*0.061ms */

  CCTL0 |= CCIE;                   /*CCR0 interrupt ena××e*/

}

使用特权

评论回复
地板
shimx| | 2018-3-19 14:48 | 只看该作者

什么片子

使用特权

评论回复
5
lizye|  楼主 | 2018-3-19 14:52 | 只看该作者

芯片是是430f2121

使用特权

评论回复
6
jiaxw| | 2018-3-19 14:57 | 只看该作者

看user's guide上说MCLK的时钟源如果选择外部XT2,XT2失效后会自动切换到DCO,那是不是ACLK也会有LFXT1切换为其他的时钟源呢?

使用特权

评论回复
7
spark周| | 2018-3-19 15:00 | 只看该作者
晶振失效时,DCO接替.
TimerA3中断函数据中,

////////TimerA初始化函数

void InitTimer()

{

uint uiResultInteger;

TACTL = TASSEL0 + TACLR + ID0; /*TimerAClock=ACLK ,divided by 2,clear TAR*/

TACTL |= MC0;

uiResultInteger = rand();

uiResultInteger &= 0x00ff;

CCR0 = (uiResultInteger + uiWorkFrequence)<<3; /*woke interval = (CCR0)*0.061ms */

CCTL0 |= CCIE; /*CCR0 interrupt ena××e*/

}///////////////////////





"TACTL = TASSEL0 + TACLR + ID0; "没有将TA的时钟源选为你想要的ACLK,TACTL仍为0,实际选了TACLK.

使用特权

评论回复
8
liliang9554| | 2018-3-19 15:02 | 只看该作者

我用的MSP430F5328.
ACLK默认是XT1CLK(32768Hz),如果晶振不工作,会自动切换到内部的REFOCLK(32768Hz).

使用特权

评论回复
9
午夜粪车| | 2018-3-19 15:08 | 只看该作者

会自动切换到内部时钟的

使用特权

评论回复
10
zhaoxqi| | 2018-3-19 15:08 | 只看该作者

内部时钟rc震荡还是起作用的。

使用特权

评论回复
11
dengdc| | 2018-3-19 15:11 | 只看该作者
先检查硬件方面的,看晶振是否正常起振的。

使用特权

评论回复
12
shimx| | 2018-3-19 15:26 | 只看该作者

这个就跟你的程序的时钟工作设置有关系的。

使用特权

评论回复
13
lizye|  楼主 | 2018-3-19 15:28 | 只看该作者

嗯,我再好好缕一缕吧,有了好消息及时通知大家,结贴喽

使用特权

评论回复
14
smilingangel| | 2018-3-20 22:40 | 只看该作者
这个是用到了内部的时钟源的

使用特权

评论回复
15
chuntian2016| | 2018-3-21 20:47 | 只看该作者
这个如楼上说的,外部时钟没启用的时候,会自动切换到内部晶振的

使用特权

评论回复
16
fentianyou| | 2018-3-21 22:28 | 只看该作者
仍能工作

使用特权

评论回复
17
xiaoyaodz| | 2018-3-21 22:30 | 只看该作者
你这个是什么芯片?

使用特权

评论回复
18
febgxu| | 2018-3-21 22:30 | 只看该作者
不是有内部的时钟信号吗

使用特权

评论回复
19
sdlls| | 2018-3-21 22:32 | 只看该作者
时钟还精准吗

使用特权

评论回复
20
pixhw| | 2018-3-21 22:33 | 只看该作者
你的实现代码呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

852

主题

9757

帖子

2

粉丝