Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1612412
  • 博文数量: 245
  • 博客积分: 10378
  • 博客等级: 上将
  • 技术积分: 2571
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-27 08:19
文章分类

全部博文(245)

文章存档

2013年(4)

2012年(8)

2011年(13)

2010年(68)

2009年(152)

分类: 嵌入式

2009-09-26 22:00:06

下边是msp430的时钟管理子函数,使用于大多数的MSP430芯片。
 

void Init_Clk(void)
{
  unsigned char i;

  WDTCTL = WDTPW + WDTHOLD;  //关闭看门狗
  BCSCTL1 &= ~XT2OFF;        //打开XT振荡器
  BCSCTL2 |= SELM_2 + SELS;  //MCLK为8MHZ,SMCLK为1Mhz
  do
  {
     IFG1 &= ~OFIFG;         //清楚震荡错误标志
     for (i = 0xFF; i > 0; i--);   //延时等待
   }
  while ((IFG1 & OFIFG));       //如果标志为1,则继续循环等待
  _NOP();
}


  由于在msp430中,微控制器的时钟单元是可以选择的,可以根据功耗来选择时钟。所以需要选择微控制器的时钟。msp430有3种时钟,分别是ACLK、MCLK、SMCLK。需要注意的是DCO的频率会随着温度和电压的变化而变化,频率精度是非常差的,虽然可以通过一些设置来调整它的频率,从而提高精度,但最好还是选用外部的晶振作为时钟。

   通常情况下,ACLK作为低速设备的时钟,MCLK作为CPU和系统的时钟,SMCLK作为高速设备的时钟,微控制器的功率是和时钟频率成之比的。

阅读(1936) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~