[资料分享] MSP430 时钟模块时钟管理子函数

灞波儿奔   2020-2-4 22:00 楼主

下边是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作为高速设备的时钟,微控制器的功率是和时钟频率成之比的。

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复