首页 > 应用 > 单片机应用
[导读]时钟初始化和GPIO概述:本实验的目的是了解用于执行对MSP430 Value Line设备的初始化过程的步骤。在这个练习中,您将编写初始化代码,并运行该设备使用各种时钟资源。1、写初始化代码2、运行CPU的MCLK的来源方式:VL

时钟初始化和GPIO

本文引用地址: http://www.21ic.com/app/mcu/201807/783424.htm

概述:

本实验的目的是了解用于执行对MSP430 Value Line设备的初始化过程的步骤。在这个练习中,您将编写初始化代码,并运行该设备使用各种时钟资源。

1、写初始化代码

2、运行CPU的MCLK的来源方式:VLO 、32768晶体、DCO

3、主体程序部分

4、观察LED闪光灯速度

MSP430时钟:

1、在MSP430单片机中一共有三个或四个时钟源:

(1)LFXT1CLK,为低速/高速晶振源,通常接32.768kHz,也可以接(400kHz~16Mhz);

(2)XT2CLK,可选高频振荡器,外接标准高速晶振,通常是接8Mhz,也可以接(400kHz~16Mhz);

(3)DCOCLK,数控振荡器,为内部晶振,由RC震荡回路构成;

(4)VLOCLK,内部低频振荡器,12kHz标准振荡器。

2、在MSP430单片机内部一共有三个时钟系统:

(1)ACLK,Auxiliary Clock,辅助时钟,通常由LFXT1CLK或VLOCLK作为时钟源,可以通过软件控制更改时钟的分频系数;

(2)MCLK,Master Clock,系统主时钟单元,为系统内核提供时钟,它可以通过软件从四个时钟源选择;

(3)SMCLK,Sub-Main Clock,系统子时钟,也是可以由软件选择时钟源。

Basic Clock Module Registers(基础时钟寄存器)

DCO control register DCOCTL

Basic clock system control 1 BCSCTL1

Basic clock system control 2 BCSCTL2

Basic clock system control 3 BCSCTL3

SFR interrupt enable register 1 IE1

SFR interrupt flag register 1 IFG1

3、MSP430的时钟设置包括3个寄存器,DCOCTL、BCSCTL1、BCSCTL2、BCSCTL3

DCOCTL,DCO控制寄存器,地址为56H,初始值为60H

DCO2

DCO1

DCO0

MOD4

MOD3

MOD2

MOD1

MOD0

DCO0~DCO2: DCO Select Bit,定义了8种频率之一,而频率由注入直流发生器的电流定义。

MOD0~MOD4: Modulation Bit,频率的微调。

一般不需要DCO的场合保持默认初始值就行了。

BCSCTL1,Basic Clock System Control 1,地址为57H,初始值为84H

XT2OFF

XTS

DIVA1

DIVA0

XT5V

RSEL2

RSEL1

RSEL0

RSEL0~RSEL2: 选择某个内部电阻以决定标称频率.0最低,7最高。

XT5V: 1.

DIVA0~DIVA1:选择ACLK的分频系数。DIVA=0,1,2,3,ACLK的分频系数分别是1,2,4,8;

XTS: 选择LFXT1工作在低频晶体模式(XTS=0)还是高频晶体模式(XTS=1)。

XT2OFF: 控制XT2振荡器的开启(XT2OFF=0)与关闭(XT2OFF=1)。

正常情况下把XT2OFF复位就可以了.

BCSCTL2,Basic Clock System Control 2,地址为58H,初始值为00H

SEM1

SELM0

DIVM1

DIVM0

SELS

DIVS1

DIVS0

DCOR

DCOR: Enable External Resistor. 0,选择内部电阻;1,选择外部电阻

DIVS0~DIVS1: DIVS=0,1,2,3对应SMCLK的分频因子为1,2,4,8

SELS: 选择SMCLK的时钟源, 0:DCOCLK; 1:XT2CLK/LFXTCLK.

DIVM0~1: 选择MCLK的分频因子, DIVM=0,1,2,3对应分频因子为1,2,4,8.

SELM0~1: 选择MCLK的时钟源, 0,1:DCOCLK, 2:XT2CLK, 3:LFXT1CLK

我用的时候一般都把SMCLK与MCLK的时钟源选择为XT2。

其它:

1. LFXT1: 一次有效的PUC信号将使OSCOFF复位,允许LFXT1工作,如果LFXT1信号没有用作SMCLK或MCLK,可软件置OSCOFF关闭LFXT1.

2. XT2: XT2产生XT2CLK时钟信号,如果XT2CLK信号没有用作时钟MCLK和SMCLK,可以通过置XT2OFF关闭XT2,PUC信号后置XT2OFF,即XT2的关闭的。

3. DCO振荡器:振荡器失效时,DCO振荡器会自动被选做MCLK的时钟源。如果DCO信号没有用作SMCLK和MCLK时钟信号时,可置SCG0位关闭DCO直流发生器。

4. 在PUC信号后,由DCOCLK作MCLK的时钟信号,根据需要可将MCLK的时钟源另外设置为LFXT1或XT2,设置顺序如下:

(1)清OSCOFF/XT2

(2)清OFIFG

(3)延时等待至少50uS

(4)再次检查OFIFG,如果仍置位,则重复(1)-(4)步,直到OFIFG=0为止。

(5)设置BCSCTL2的相应SELM。

实例分析

1、CPU运行在VLO时钟下:

这是最慢的时钟,在约12千赫兹下运行。因此,我们将通过可视化的LED闪烁的红色慢慢地在约每3秒钟率。我们可以让时钟系统默认这种状态,设置专门来操作VLO。我们将不使用任何ALCK外设时钟在此实验室工作,但你应该认识到,ACLK来自VLO时钟。

#include

void main(void)

{

WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗定时器

P1DIR = 0x40; // P1.6 配置输出

P1OUT = 0; // 关闭LED

BCSCTL3 |= LFXT1S_2; // LFXT1 = VLO

IFG1 &= ~OFIFG; // 清除OSCFault 标志

__bis_SR_register(SCG1 + SCG0); // 关闭 DCO

BCSCTL2 |= SELM_3 + DIVM_3; // MCLK = VLO/8

while(1)

{

P1OUT = 0x40; // 开启LED

_delay_cycles(100);

P1OUT = 0; // 关闭 LED

_delay_cycles(5000);

}

}

2、CPU运行在晶振(32768Hz)时钟下:

晶体频率为32768赫兹,约3倍的VLO。如果我们在前面的代码中使用晶振,指示灯应闪烁大约每秒一次。你知道为什么32768赫兹是一个标准?这是因为这个数字是2的15次方,因此很容易用简单的数字计数电路,以每秒一次获得率 ——手表和其他时间时基。认识到ACLK来自外部晶振时钟。

#include

void main(void)

{

WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗定时器

P1DIR = 0x41; // P1.0 和P1.6配置输出

P1OUT = 0x01; // 开启P1.0

BCSCTL3 |= LFXT1S_0; // LFXT1 = 32768Hz 晶振

while(IFG1 & OFIFG)

{

IFG1 &= ~OFIFG; // 清除 OSCFault 标志

_delay_cycles(100000); // 为可见的标志延时

}

P1OUT = 0; // 关闭P1

__bis_SR_register(SCG1 + SCG0); // 关闭 DCO

BCSCTL2 |= SELM_3 + DIVM_3; // MCLK = 32768/8

while(1)

{

P1OUT = 0x40; // 开启 LED

_delay_cycles(100);

P1OUT = 0; / / 关闭LED

_delay_cycles(5000);

}

}

3、CPU运行在晶振(32768Hz)和DCO时钟下:

最慢的频率,我们可以运行DCO约在1MHz(这也是默认速度)。因此,我们将开始切换MCLK到DCO下。在大多数系统中,你会希望ACLK上运行的VLO或32768赫兹晶振。由于ACLK在我们目前的代码是在晶体上运行,我们会打开DCO计算。

#include

void main(void)

{

WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗定时器

if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)

{

while(1); // If cal const erased, 挂起

}

BCSCTL1 = CALBC1_1MHZ; // Set range

DCOCTL = CALDCO_1MHZ; //设置DCO模式

P1DIR = 0x41; // P1.0 和P1.6配置输出

P1OUT = 0x01; // P1.0 开启

BCSCTL3 |= LFXT1S_0; // LFXT1 = 32768Hz

while(IFG1 & OFIFG)

{

IFG1 &= ~OFIFG; // 清除OSCFault 标志

_delay_cycles(100000); // 为可见标志延时

换一批

延伸阅读

[新鲜事] 嵌入式时钟管理器在设计中困扰工程师的几大问题

嵌入式时钟管理器在设计中困扰工程师的几大问题

 目前,在嵌入式产品的研发中,低档微处理器软件多采用裸机开发模式实现。在这种开发模式中,常有如下需求:  (1) 在经历特定的时间段后,执行特定操作;  (2) 根据给定周期执行特定操作。  传统的作法是利用......

关键字:嵌入式 工程师 时钟管理器

[趣科技] 时钟也玩磁悬浮,你还能看懂时间吗?

时钟也玩磁悬浮,你还能看懂时间吗?

一名来自英国爱丁堡名叫Tony Adams的设计师最近设计出了一种非常独特而有趣的悬浮式数码时钟Nixie Clock,并且已经开始在Kickstarter寻求资金的支持。这个磁悬浮时钟无需电池,也不用充电,完全依靠电磁系统提供电量......

关键字:磁悬浮 时钟

[通信技术] Silicon Labs发布业界最广泛的56G/112G SerDes时钟产品系列

Silicon Labs发布业界最广泛的56G/112G SerDes时钟产品系列

Silicon Labs(亦称 “芯科科技” )日前宣布扩展其时钟产品系列,以满足56G PAM-4 SerDes和新兴112G串行应用对于高性能时钟的要求。通过此次产品系列的扩展,Silicon Labs成为唯一一家可为100/200/4......

关键字:Silicon Labs 时钟产品

[单片机新闻] TI新型可靠、抗干扰电容式感应MCU将触摸控制技术引入成本敏感型工业应用

TI新型可靠、抗干扰电容式感应MCU将触摸控制技术引入成本敏感型工业应用

采用CapTIvate™技术的MSP430™微控制器为暴露于电磁干扰、油、水和油脂的应用提供价值和性能 ......

关键字:CapTIvate™ MSP430 单片机

[EDA] 25美分获得25项功能:如何使用MCU进行简单的功能增强

25美分获得25项功能:如何使用MCU进行简单的功能增强

您现在可能已经使用固定功能的集成电路(IC)很长一段时间了,并且在某些情况下,已经适应了它们有限的灵活性。一个简单的通用异步收发器(UART)到串行外设接口(SPI)桥接器、一个复位控制器或一个带有后备存储器的外部实时控制器(RTC)在自身......

关键字:集成电路 MCU MSP430

[单片机新闻] Silicon Labs PCI Express Gen 4时钟为数据中心 和消费类产品设计确立新的性能标杆

Silicon Labs PCI Express Gen 4时钟为数据中心 和消费类产品设计确立新的性能标杆

中国,北京 - 2017年9月28日 - Silicon Labs日前宣布针对PCI Express®(PCIe®) Gen 1/2/3/4应用推出一系列具有业界最低抖动、最高集成度、最低功耗的时钟发生器产品。Sili......

关键字:Silicon 数据中心 时钟发生器

[消费类电子新闻] Flyte推出悬浮时钟 可为你显示生命旅程

Flyte推出悬浮时钟 可为你显示生命旅程

国外创意设计公司Flyte曾经推出过悬浮灯具、悬浮花瓶和音箱等各种新奇的悬浮装置,而最近该公司利用其标志性的磁力悬浮技术打造了一款悬浮时钟,这款悬浮时钟甚至可以变换三种悬浮方向,水平悬浮、垂直悬浮和45°倾斜放置。......

关键字:Flyte 悬浮时钟

[真心话] 国企4年,民企2年,港企7年,意企5年..谈谈我在电子业的这20年

国企4年,民企2年,港企7年,意企5年..谈谈我在电子业的这20年

89年毕业,国企4年,民企2年,港企7年,意企5年,日韩合资企业2年,经历非标设备、玩具、电子、自动化设备行业。......

关键字:外企 国企 电子业
条评论

我 要 评 论

网友评论

热门关键词

技术子站

更多

人才招聘

更多

项目外包

更多

推荐博客