ZStack2.5.1a协议栈的HAL_BOARD_INIT()中为什么用while (!(SLEEPSTA & XOSC_STB)); 来判断时钟是否已经稳定?
时间:10-02
整理:3721RD
点击:
XOSC_STB定义如下:
/* SLEEPSTA bit definitions */
#define XOSC_STB BV(6) /* XOSC: powered, stable=1 */
而寄存器SLEEPSTA的描述是这样的:
也就是说第六位是保留的,为什么要用这一位来判定时钟是否稳定呢?
SLEEPCMD &= ~OSC_PD; /* turn on 16MHz RC and 32MHz XOSC */
这一句也是类似的情况,看的很不明白!
其实TI 2540/2541指南里没说清楚,详见http://jingyan.baidu.com/album/e3c78d646084893c4d85f553.html
对于SLEEPSTA寄存器中BIT6/BIT5说明在cc2530说明书中也并没有说明,可以参考cc2430说明书中内容,其中第6位XOSC_STB表明外部高速32M晶振是否上电并稳定起振,当稳定时该位为1;同样对于第5位HFRC_STB则表明内部16MHz高速RC振荡器是否起振,并是否稳定,当16MHz RC振荡器稳定时该位为1。