MSP430F149共有三个振荡器:
(1)LF/XT1振荡器,提供ACLK时钟信号;
(2)XT2振荡器,提供MCLK时钟信号;
(3)片内DCO振荡器,提供SMCLK时钟信号;
其中,能够影响到振荡器失效标志OFIFG置位的有两个:
LF/XT1工作于HF模式时失效以及XT2振荡器失效。
疑问:如果设计一个系统,只安装了一个LF/XT1振荡器 (6MHZ),没有安装XT2振荡器。
想把LF/XT1工作于HF模式时产生的ACLK做为系统时钟。
那么:上电后初始化程序中必然要先切换LF/XT1工作于HF模式,就得有打开振荡器以及切换
时钟的操作:
BCSCTL1|=XTS; //LF/XT1工作于HF模式
for(i=0;i<65535;i++){;} //延时
do
{IFG1 &= ~OFIFG;} //清除失效标志
while(OFIFG & IFG1); //等待LF/XT1起振
BCSCTL2 |= SELM1+SELM0; //选ACLK做系统时钟
疑问之处:此时,OFIFG不仅受LF/XT1的影响,还受到XT2
是否起振的影响,因为没有安装XT2振荡器,程序岂不永远
无法走出循环了?
哪位朋友指点一下,多谢了! |