您的位置 首页 IOT

MSP430教程9:MSP430单片机时钟模块

MSP430的时钟模块由低速晶体振荡器LFXT1、高速晶体振荡器XT2(MSP430X11X,MSP430X12X没有)、数字控制振荡器DCO、琐相环FLL(MSP430X16X以…

MSP430时钟模块由低速晶体振荡器LFXT1、高速晶体振荡器XT2(MSP430X11X,MSP430X12X没有)、数字操控振荡器DCO、琐相环FLL(MSP430X16X以上包含)和增强型琐相环FLL+等部件组成。

MSP430X1XX根本时钟模块有三个时钟输入源LFXT1CLK(低速32768Hz,高速450Hz到8MHz)、XT2CLK(450Hz到8MHz)、DCOCLK,供给以下三种时钟信号

1.ACLK辅佐时钟:由LFXT1CLK信号经1、2、4、8分频后得到,能够由软件选作各个外围模块的时钟信号,一般用于低速外设。

2.MCLK体系主时钟:MCLK可由软件挑选来自LFXT1CLK、XT2CLK、DCOCLK三者之一,然后经1、2、4、8分频得到,MCLK首要用于CPU和体系。

3.SMCLK子体系时钟:可由软件选自LFXT1CLK和DCOCLK(MSP430X11X、MSP430X12X系列,因其不含XT2),或XT2CLK和DCOCLK,然后经1、2、4、8分频得到。SMCLK首要用于高速外围模块。

体系频率与体系的作业电压密切相关(MSP430作业电压1.8V~3.6V,编程电压2.7V~3.6V),所以不同的作业电压,需求挑选不同的体系时钟。当两个外部振荡器失效时,DCO振荡器会主动被选作MCLK的时钟源。PUC信号之后,DCOCLK被主动选作MCLK和SMCLK的时钟信号,LFXT1CLK被选作ACLK的时钟信号,根据需求MCLK和SMCLK的时钟源能够别的设置。

操控时钟模块的三个寄存器为DCO操控寄存器DCOCTL、根本时钟体系操控寄存器1BCSCTL1、根本时钟操控寄存器2BCSCTL2

1.DCOCTL

76 5432 10
DCO2DCO1 DCO0MOD4MOD3MOD2 MOD1 MOD0

DCO.0~DCO.2界说8种频率之一(DCO=0~DCO=8),可分段调理DCOCLK频率,相领两种频率相差10%。

MOD.0~MOD.4界说在32个DCO周期中刺进的fdco+1周期个数,而余下的周期为fdco周期,操控切换DCO和DCO+1挑选的两种频率,假如DCO常数为7,表明现已挑选最高频率,此刻不能使用MOD.0~MOD.4进行频率调整。

DCOCTL POR后初始值为60H。

2.BCSCTL1

765 4 3210
XT2OFFXTS DIVA1 DIVA0 XT5V RSEL2RSEL1RSEL0

BCSCTL1初始值为84H

XT2OFF操控XT2的敞开和封闭
0XT2振荡器敞开
1XT2振荡器封闭(默许)

XTS操控LFXT1作业形式
0低频形式(默许)
1高频形式

DIVA1、DIVA0操控ACLK分频
00不分频(默许)
01 2分频
10 4分频
11 8分频

XT5V此位设置为0
RSEL0~RSEL2三位操控内部电阻以决议标称频率
0挑选最低标称频率
………
7挑选最高标称频率

3.BCSCLK2

76 543 21 0
SELM1SELM0DIVM1DIVM0SELS DIVS1DIVS0 DCOR
SELM1 SELM0挑选MCLK时钟源
0 0DCOCLK(默许)
0 1DCOCLK
1 0LFXT1CLK关于MSP430F11/12X,XT2CLK关于MSP430F13/14/15/16X
1 1LFXT1CLK
DIVM1DIVM0挑选MCLK分频
0 0不分频
0 12分频
1 04分频
1 18分频
SELS挑选SMCLK时钟源
0 DCLK(默许)
1 LFXT1CLK关于MSP430F11/12X,XT2CLK关于MSP430F13/14/15/16X
DIVS1DIVS0挑选SMCLK分频
00不分频
01 2分频
10 4分频
11 8分频
DCOR挑选DCO电阻
0内部电阻
1外部电阻

时钟模块的使用

一、设置MCLK=XT2,SMCLK=DCOCLK,将MCLK由P5.4输出(MSP430X14X中引脚P5.4和MCLK复用)

#include”msp430x14x.h”
voidmain(void)
{
unsigned int i;
WDTCTL= WDTPW+WDTHOLD;//Stopwatchdog topreventtooverflow
P5DIR| =0X10; //SetP5.4 to output
P5SEL | =0X10; //SetP5.4 to MCLK mode
BCSCTL1 &= ~XT2OFF; //Enable XT2

do{
IFG1 & = ~OFIFG; //Clear OFIFG
for(i=0xff;i>0;i–);//Set a delay
}while(IFG1&OFIFG); //check-up the OFIFG

BCSCTL2 | = SELM_2;//SetXT2CLK the clock of MCLK

for(;;);
}

二、设置ACLK=MCLK=LFXT1=HF,将ACLK用P2.0(复用)输出。

#include “msp430x14x.h”
void main(void)
{
unsigned int i,j;
WDTCTL = WDTPW+ WDTHOLD;
P1DIR =0x02;
P2DIR =0x01;
P2SEL=0x01;
BCSCTL1 | = XTS;

do{
IFG1 & = ~OFIFG;
for(i=0xff;i>0;i–);
}while(IFG1 & OFIFG);

BCSCTL2 | = SELM_3;

for(;;);
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/iot/273177.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部