下边是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作为高速设备的时钟,微控制器的功率是和时钟频率成之比的。
阅读(1976) | 评论(0) | 转发(0) |