上期大概给大家汇总介绍了,在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的时钟源
上一篇:单片机MSP430入门--理论①--MSP430简介
下一篇:MSP430单片机软件开发集成环境CCS
推荐阅读最新更新时间:2024-11-03 11:26
设计资源 培训 开发板 精华推荐
- 使用 Infineon Technologies AG 的 OMR7805ST 的参考设计
- LTC2668HUJ-16、16 通道、16 位 ±10V VOUT SoftSpan DAC 的典型应用电路
- #第六届立创电赛#迷你小蓝牙功放
- 如何制作一款温湿度传感器
- 使用 MaxLinear, Inc 的 SPX1587T-3.3-TR 的参考设计
- [有问题]超声波定向喇叭
- 使用 Analog Devices 的 LT1305CS8 的参考设计
- STR710-EVAL,基于 STR71xF ARM7TDMI MCU 的评估板
- 使用 Microchip Technology 的 MIC5330-1.8/1.5YML 的参考设计
- LT3471,一个 1.2MHz、锂离子至 15V (55mA) 和 8V (110mA) 转换器