MSP430时钟设置程序.docx

上传人:b****5 文档编号:6479780 上传时间:2023-01-06 格式:DOCX 页数:13 大小:162.38KB
下载 相关 举报
MSP430时钟设置程序.docx_第1页
第1页 / 共13页
MSP430时钟设置程序.docx_第2页
第2页 / 共13页
MSP430时钟设置程序.docx_第3页
第3页 / 共13页
MSP430时钟设置程序.docx_第4页
第4页 / 共13页
MSP430时钟设置程序.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

MSP430时钟设置程序.docx

《MSP430时钟设置程序.docx》由会员分享,可在线阅读,更多相关《MSP430时钟设置程序.docx(13页珍藏版)》请在冰豆网上搜索。

MSP430时钟设置程序.docx

MSP430时钟设置程序

MSP430时钟设置程序

1/

voidmain(void)

{

unsignedinti;

WDTCL=WDTPW+WDTHOLD;//停止看门狗

P5DIR=0x10;//设置P5.4输出

P5SEL=0x10;//设置P5.4口为外围模块用作MCLK信号输出

BCSCTL1&=~XT2OFF;//使TX2有效,TX2上电时默认为关闭的.

do

{

IFG1&=~OFIFG;//清振荡器失效标志

for(i=0xff;i>;0;i--);//延时,待稳定.

}

while((IFG1&OFIFG)!

=0);//若振荡器失效标志有效

BCSCTL2|=SELM1;//使MCLK=XT2

for(;;);

}

2/

#include;

voidmain(void)

{

unsignedinti;

WDTCTL=WDTPW+WDTHOLD;//停止看门狗

BCSCTL1|=XTS;

//设置时基寄存器1,使ACLK=LFXT1=HFXTAL,也就是高频模式.

P2DIR|=0x01;//设置P2.0方向寄存器为输出

P2SEL|=0x01;//设置P2.0口为外围模块用作ACLK信号输出

P1DIR|=0x02;//设置P1.1方向寄存器为输

do

{

IFG1&=~OFIFG;//清振荡器失效标志

for(i=0xFF;i>;0;i--);//延时,待稳定

}

while((IFG1&OFIFG));//若振荡器失效标志有效?

BCSCTL2|=SELM_3;//设置时基寄存器2,使主时钟信号MCLK=LFXT1(可靠的)

for(;;)//无穷循环

{

P1OUT|=0x02;//P1.1=1

P1OUT&=~0x02;//P1.1=0

}

}

1-LFXT1CLK:

低频/高频时钟源.由外接晶体振荡器,而无需外接两个振荡电容器.较常使用的晶体振荡器是32768HZ。

2-XT2CLK:

高频时钟源.由外接晶体振荡器。

需要外接两个振荡电容器,较常用的晶体振荡器是8MHZ。

3-DCOCLK:

数字可控制的RC振荡器。

d

/*******************************************************************************************************************/

BCSCTL基本时钟系统控制寄存器1

D7

D6

D5

D4

D3

D2

D1

D0

DCO.2

DCO.1

DCO.0

MOD.4

MOD.3

MOD.2

MOD.1

MOD.0

BCSCTL|=DCOx;//位选择,x为0,1,2。

DCO0=0x20;DCO1=0x40;DCO2=0x80;

BCSCTL|=MODx;//模块选择,x为0,1,2,3,4;MOD0=0x01,MOD1=0x2;MOD2=0x04;MOD3=0x08,MOD4=0x10;

/********************************************************************************************************************/

BCSCTL1基本时钟系统控制寄存器1

D7

D6

D5

D4

D3

D2

D1

D0

XT2OFF

TXS

DIVA.1

DIVA.0

XT5V

Rsel.2

Resl.1

Resl.0

BCSCTL1|=XT2OFF;//使能启用XT2CLK

BCSCTL1|=TXS;//启用高频;BCSCTL1&=~TXS;//启用低频

BCSCTL1|=DIVA_x;//ACLK时钟源分频,x为0,不分频,1是2分频,2是4分频,3是8分频

BCSCTL1|=XT5V;//

BCSCTL1|=RSELx;//x可选0,1,2,3,频率范围选择

/*********************************************************************************************************************/

BCSCTL2基本时钟系统控制寄存器2

D7

D6

D5

D4

D3

D2

D1

D0

SELM.1

SELM.0

DIVM.1

DIVM.0

SELS

DIVS.1

DIVS.0

DCOR

BCSCTL2寄存器默认为0x00,需要哪个时钟源,几分频,按下列相加即可。

BCSCTL2|=SELM_x;//MCLK时钟源选择,x为0,1选内部时钟DCOCLK,2选XT2,3选LFXTCLK

BCSCTL2|=DIVM_x;//MCLK时钟源分频,x为0,不分,1是2分频,2是4分频,3是8分频

BCSCTL2|=SELS;//SMCLK时钟源选XT2CLK,默认选DCOCLK

BCSCTL2|=DIVS_x;//SMCLK时钟源分频,x为0,不分,1是2分频,2是4分频,3是8分频

BCSCTL2|=DCOR;//使能外部电阻,默认使能内部电阻。

宏定义DCOR=0x01;

对于辅助时钟的分频,设置BCSCTL1

/**********************************************************************************/

MSP430单片机时钟模块提供3个时钟信号输出,以供给片内各部电路使用。

1-ACLK:

辅助时钟信号.由图所示,ACLK是从LFXT1CLK信号由1/2/4/8分频器分频后所得到的.由BCSCTL1寄存器设置DIVA相应为来决定分频因子.ACLK可用于提供CPU外围功能模块作时钟信号使用.

2-MCLK:

主时钟信号.由图所示,MCLK是由3个时钟源所提供的。

他们分别是LFXT1CLK,XT2CLK(F13、F14,如果是F11,F11X1则由LFXT1CLK代替),DCO时钟源信号提供.MCLK主要用于MCU和相关系统模块作时钟使用。

同样可设置相关寄存器来决定分频因子及相关的设置。

3-SMCLK:

子系统时钟,SMCLK是由2个时钟源信号所提供.他们分别是XT2CLK(F13、F14)和DCO,如果是F11、F11X1则由LFXT1CLK代替TX2CLK。

同样可设置相关寄存器来决定分频因子及相关的设置。

DCOCTLDCO控制寄存器

7

6

5

4

3

2

1

0

DCO.2

DCO.1

DCO.0

MOD.4

MOD.3

MOD.2

MOD.1

MOD.0

DCO.0-DCO.4定义8种频率之一,可以分段调节DCOCLK频率,相邻两种频率相差10%。

而频率由注入直流发生器的电流定义。

MOD.0-MOD.4定义在32个DCO周期中插入的Fdco+1周期个数,而在下的DCO周期中为Fdco周期,控制改换DCO和DCO+1选择的两种频率。

如果DCO常数为7,表示已经选择最高频率,此时不能利用MOD.0-MOD.4进行频率调整。

BCSCTL1基本时钟系统控制寄存器1

7

6

5

4

3

2

1

0

XT2OFF

TXS

DIVA.1

DIVA.0

XT5V

Rsel.2

Resl.1

Resl.0

XT2OFF控制XT2振荡器的开启与关闭。

TX2OFF=0,XT2振荡器开启。

TX2OFF=1,TX2振荡器关闭(默认为TX2关闭)

XTS控制LFXT1工作模式,选择需结合实际晶体振荡器连接情况。

XTS=0,LFXT1工作在低频模式(默认)。

XTS=1,LFXT1工作在高频模式(必须连接有高频相应的高频时钟源)。

DIVA.0DIVA.1控制ACLK分频。

0不分频(默认)

12分频

24分频

38分频

XT5V此位设置为0。

Resl1.0,Resl1.1,Resl1.2三位控制某个内部电阻以决定标称频率。

Resl=0,选择最低的标称频率。

……..

Resl=7,选择最高的标称频率。

BSCCTL2|=DIVM_x(x=0,1,2,3)MCLK分频(x=0,不分频;x=1,2分频;x=2,4分频;x=3,8分频)

DIVS_0

BCSCTL2基本时钟系统控制寄存器2

7

6

5

4

3

2

1

0

SELM.1

SELM.0

DIVM.1

DIVM.0

SELS

DIVS.1

DIVS.0

DCOR

SELM.1SELM.0选择MCLK时钟源

0时钟源为DCOCLK(默认)

1时钟源为DCOCLK

2时钟源为LFXT1CLK(对于MSP430F11/12X),时钟源为XT2CLK(对于MSP430F13/14/15/16X);

3时钟源为LFTXTICLK。

DIVM.1DIVM.0选择MCLK分频

01分频(默认)

12分频

24分频

38分频

SELS选择SMCLK时钟源

0时钟源为DCOCLK(默认)

1时钟源为LFXT1CLK(对于MSP430F11/12X),时钟源为XT2CLK(对于MSP430F13/14/15/16X)。

DIVS.1DIVS.0选择SMCLK分频。

01分频

12分频

24分频

48分频

DCOR选择DCO电阻

0内部电阻

1外部电阻

PUC信号之后,DCOCLK被自动选择MCLK时钟信号,根据需要,MCLK的时钟源可以另外设置为LFXT1或者XT2。

设置顺序如下:

[1]复位OscOff

[2]清除OFIFG

[3]延时等待至少50us

[4]再次检查OFIFG,如果仍然置位,则重复[3]、[4]步骤,直到OFIFG=0为止。

低功耗设置的技巧问题:

1、LPM4:

在振荡器关闭模式期间,处理机的所有部件工作停止,此时电流消耗最小。

此时只有在系统上电电路检测到低点电平或任一请求异步响应中断的外部中断事件时才会从新工作。

因此在设计上应含有可能需要用到的外部中断才采用这种模式。

否则发生不可预料的结果。

2、LPM3:

在DC发生器关闭期间,只有晶振是活动的。

但此时设置的基本时序条件的DC发生器的DC电流被关闭。

由于此电路的高阻设计,使功耗被抑制。

注:

当从DC关闭到启动DC0要花一端时间(ns-us)

3、LPM2:

在此期间,晶镇振和DC发生器是工作的,所以可实现快速启动。

4、LPM1:

在此振荡器已经工作,所以不存在启动时间延时问题。

Timer_A的寄存器

寄存器

缩写

读定类型

地址

初态

Timer_A控制寄存器

TACTL

R/W

160H

POR复位

Timer_A计数器

TAR

R/W

170H

POR复位

捕捞/比较控制寄存器0

CCTL0

R/W

162H

POR复位

捕捞/比较寄存器0

CCR0

R/W

172H

POR复位

捕捞/比较控制寄存器1

CCTL1

R/W

164H

POR复位

捕捞/比较寄存器1

CCR1

R/W

174H

POR复位

捕捞/比较控制寄存器2

CCTL2

R/W

166H

POR复位

捕捞/比较寄存器2

CCR2

R/W

176H

POR复位

中断向量寄存器

TAIV

R/W

12EH

POR复位

TACTL控制寄存器

15--10

9

8

7

6

5

4

3

2

1

0

未用

SSEL1

SSEL0

ID1

ID0

MC1

MC0

未用

CLR

TAIE

TAIFG

SSEL1、SSEL0选择定时器输入分频器的时钟源

Timer_A时钟源

SSEL1

SSEL0

输入时钟源

说明

0

0

TACLK

用特定的外部引脚信号

0

1

ACLK

辅助时钟

1

0

SMCLK

子系统时钟

1

1

INCLK

见器件说明

ID1,ID0输入分频选择

00不分频

012分频

104分频

118分频

MC1,MC0计数模式控制位

00停止模式

01增计数模式

10连续计数模式

11增/减计数模式

CLR定时器清除位

POR或CLR置位时定时器和输入分频器复位。

CLR由硬件自动复位,其读出始终为0。

定时器在下一个有效输入沿开始工作。

如果不是被清除模式控制暂停,则定时器以增计数模式开始工作。

TAIE定时器中断允许位

0禁止定时器溢出中断

1允许定时器溢出中断

TAIFG定时器溢出标志位

增计数模式:

当定时器由CCR0计数到到0时,TAIFG置位。

连续计数模式:

当定时器由0FFFFH计数到0时,TAIFG置位。

增/减计数模式:

当定时器由CCR0减计数到0时,TAIFG置位。

CCTLx捕获/比较控制寄存器

1514

1312

11

10

9

8

765

4

3

2

1

0

CAPTMOD1-0

CCIS1-0

SCS

SCCIx

CAP

OUTMODx

CCIEx

CCIx

OUT

COV

CCIFx

TIMER_A有多个捕获比较模块,每个模块都有自己的控制寄存器CCTLx

CAPTMOD1-0选择捕获模式

00禁止捕获模式

01上升沿捕获

10下降沿捕获

11上升沿与下降沿都捕获

CCISI1-0在捕获模式中用来定提供捕获事件的输入端

00选择CCIxA

01选择CCIxB

10选择GND

11选择VCC

SCS选择捕获信号与定时器时钟同步、异步关系

0异步捕获

1同步捕获

异步捕获模式允许在请求时立即将CCIFG置位和捕获定时器值,适用于捕获信号的周期远大于定时器时钟周期的情况。

但是,如果定时器时钟和捕获信号发生时间竞争,则捕获寄存器的值可能出错。

在实际中经常使用同步捕获模式,而且捕获总是有效的。

SSCIx比较相等信号EQUx将选择中的捕获、比较输入信号CCIx(CCIxA,CCIxB,Vcc和GND)进行锁存,然后可由SCCIx读出。

CAP选择捕获模式还是比较模式。

0比较模式

1捕获模式

注意:

同时捕获和捕获模式选择

如果通过捕获比较寄存器CCTLx中的CAP使工作模式从比较模式变为捕获模式,那么不应同时进行捕获;否则,在捕获比较寄存器中的值是不可预料的,推荐的指令顺序为:

[1]修改控制寄存器,由比较模式换到捕获模式。

[2]捕获

OUTMODx选择输出模式

000输出

001置位

010PWM翻转/复位

011PWM置位/复位

100翻转/置位

101复位

110PWM翻转/置位

111PWM复位/置位

CCIx捕获比较模的输入信号

捕获模式:

由CCIS0和CCIS1选择的输入信号通过该位读出。

比较模式:

CCIx复位。

OUT输出信号

0输出低电平

1输出高电平

如果OUTMODx选择输出模式0(输出),则该位对应于输入状态。

COV捕获溢出标志

0输出低电平

1输出高电平

[1]当CAP=0时,选择比较模式。

捕获信号发生复位,没有使COV置位的捕获事件。

[2]当CAP=1时,选择捕获模式,如果捕获寄存器的值被读出再次发生捕获事件,则COV置位。

程序可检测COV来断定原值读出前是否又发生捕获事件。

读捕获寄存器时不会使溢出标志复位,须用软件复位。

CCIFGx捕获比较中断标志

捕获模式:

寄存器CCRx捕获了定时器TAR值时置位。

比较模式:

定时器TAR值等于寄存器CCRx值时置位。

#include;

voidmain(void)

{

WDTCTL=WDTPW+WDTHOLD;//停止看门狗定时器

P1DIR|=0x01;//设P1.0为输出

TACTL=TASSEL_1+MC_2+TAIE;//ACLK,定时器A计数模式,且开中断功能

_BIS_SR(LPM3_bits+GIE);//进入LPM3低功耗模式和开总中断允许

}

//Timer_A3中断向量(TAIV)处理程序

#pragmavector=TIMERA1_VECTOR

__interruptvoidTimer_A(void)

{

switch(TAIV)//应用switch语句来处理多中断源的向量

{//向量列表通过case语句来分多中断源的入口

case2:

break;//CCR1比较/捕获寄存器的中断入口,

//本例子未用到。

case4:

break;//CCR2比较/捕获寄存器的中断入口,

微控网为你准备的MSP430F单片机入门必修课//

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 政史地

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1