上期大概给大家汇总介绍了,在MSP430环境下的时钟寄存器DOCCTL和BCSCTL1寄存器,每个位代表的意义以及他们的设置方法
本期将重点介绍下,在MSP430环境下的时钟寄存器BCSCTL2,他每个位的意义以及他们的设置方法
1.0 BCSCTL2(Basic Clock System Control2)寄存控制器(用来设置SMCLK子时钟,MCLK主时钟),地址为58H,初始值为00H
SELM0-SELM1: 选择MCLK的时钟源,0和1为DCOCLK,2为XT2CLK,3为LFXT1CLK
DIVM0-DIVM1: 选择MCLK的分频因子,DIVM=0,1,2,3,对应MCLK的分频因子1,2,4,8
SELS: 选择SMCLK的时钟源,0为DCOCLK,1为XT2CLK/LFXTCLK
DIVS0-DIVS1: DIVS = 0,1,2,3,对应SMCLK的分频因子为1,2,4,8
DCOR: 选择电阻,0为内部电阻,1为外部电阻
示例:
设置BCSCTL2,选定MCLK和SMCLK的时钟源XT2,并设置其分频因子
①DCOR一般设置为默认值内部电阻
②选择MCLK的时钟源,BCSCTL2 = SELM_2;
选择SMCLK的时钟源,BCSCTL2 = SELS;
选择MCLK跟SMCLK的时钟源XT2,BCSCTL2 = SELM_2 + SELS;
③设置MCLK的分频因子,
BCSCTL2 = DIBM_0;//不分频
BCSCTL2 = DIBM_1;//2分频
BCSCTL2 = DIBM_2;//4分频
BCSCTL2 = DIBM_3;//8分频
④设置SMCLK的分频因子,
BCSCTL2 = DIVM_0; //不分频
BCSCTL2 = DIVM_1; //2分频
BCSCTL2 = DIVM_2; //4分频
BCSCTL2 = DIVM_3; //8分频
3.0 OFIFG是振荡器标志失效标志位,当用外部晶振时,如果外部晶振正常起震了,那OFIFG就会变成0,默认为1,所以没起震的话要继续循环等待,具体源程序如下:
在PUC信号后,由DCOCLK作MCLK的时钟信号,根据需要可将MCLK的时钟源另外设置为LFXT1或XT2,设置顺序如下:
(1)清OSCOFF/XT2
(2)清OFIFG
(3)延时等待至少50uS
(4)再次检查OFIFG,如果仍置位,则重复(1)-(4)步,直到OFIFG=0为止。
(5)设置BCSCTL2的相应SELM。
具体主要代码如下:
WDTCTL=WDTPW+WDTHOLD;//关闭看门狗
/*------选择系统主时钟为8MHz-------*/
BCSCTL1&=~XT2OFF;//打开XT2高频晶体振荡器
do
{
IFG1&=~OFIFG;//清除晶振失败标志
for(i=0xFF;i》0;i--);//等待8MHz晶体起振
}
while((IFG1&OFIFG));//晶振失效标志仍然存在,只有跳出循环的时候才认为晶振起震了
BCSCTL2|=SELM_2+SELS;//主时钟和从时钟都选择高频晶振
BCSCTL2=SELM_2+SELS;语句必须放在while之后,因为当XT2没有起振之前,XT2处于错误阶段,因此在XT2没有起振之前将它设定为主时钟与子系统时钟后,单片机会自动的将DCO设定为SMCLK MCLK的时钟源
设计资源 培训 开发板 精华推荐
- 蓝桥杯完整平替版
- #第六届立创电赛#LA3600 5段前级均衡器
- LT3740,一个正负转换器
- 使用 ROHM Semiconductor 的 BD48K27G-TL 的参考设计
- 使用肖特基二极管为 VN02N 高端智能功率固态继电器提供反向电源保护的典型应用
- LT1072CS8 正降压转换器的典型应用
- 具有附加迟滞的 MC33164 低压检测微处理器复位的典型应用电路
- 用于 LCD 背光的 8-LED 白光 LED 驱动器
- 使用 ROHM Semiconductor 的 BD48E39G-TR 的参考设计
- RT8024 1.5MHz、400mA、高效PWM降压DC/DC转换器的典型应用,适用于可调电压调节器