微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > msp430g2231基础定时器设置

msp430g2231基础定时器设置

时间:11-13 来源:互联网 点击:

#define XTS (0x40)

/* LFXTCLK 0:Low Freq. / 1: High Freq. */

#define XT2OFF (0x80) /* Enable XT2CLK */

#define divA_0 (0x00) /* ACLK Divider 0: /1 */

#define divA_1 (0x10) /* ACLK Divider 1: /2 */

#define divA_2 (0x20) /* ACLK Divider 2: /4 */

#define divA_3 (0x30) /* ACLK Divider 3: /8 */

#define divS0 (0x02) /* SMCLK Divider 0 */

#define divS1 (0x04) /* SMCLK Divider 1 */

#define SELS (0x08)

/* SMCLK Source Select 0:DCOCLK / 1:XT2CLK/LFXTCLK */

#define divM0 (0x10) /* MCLK Divider 0 */

#define divM1 (0x20) /* MCLK Divider 1 */

#define SELM0 (0x40) /* MCLK Source Select 0 */

#define SELM1 (0x80) /* MCLK Source Select 1 */

#define divS_0 (0x00) /* SMCLK Divider 0: /1 */

#define divS_1 (0x02) /* SMCLK Divider 1: /2 */

#define divS_2 (0x04) /* SMCLK Divider 2: /4 */

#define divS_3 (0x06) /* SMCLK Divider 3: /8 */

#define divM_0 (0x00) /* MCLK Divider 0: /1 */

#define divM_1 (0x10) /* MCLK Divider 1: /2 */

#define divM_2 (0x20) /* MCLK Divider 2: /4 */

#define divM_3 (0x30) /* MCLK Divider 3: /8 */

#define SELM_0 (0x00) /* MCLK Source Select 0: DCOCLK */

#define SELM_1 (0x40) /* MCLK Source Select 1: DCOCLK */

#define SELM_2 (0x80)

/* MCLK Source Select 2: XT2CLK/LFXTCLK */

#define SELM_3 (0xC0)

/* MCLK Source Select 3: LFXTCLK */

六、BCSCTL1 = CALBC1_1MHZ; //设置值 (例3、4)

#ifndef __DisableCalData

SFR_8BIT(CALDCO_16MHZ); /* DCOCTL Calibration Data for 16MHz */

SFR_8BIT(CALBC1_16MHZ); /* BCSCTL1 Calibration Data for 16MHz */

SFR_8BIT(CALDCO_12MHZ); /* DCOCTL Calibration Data for 12MHz */

SFR_8BIT(CALBC1_12MHZ); /* BCSCTL1 Calibration Data for 12MHz */

SFR_8BIT(CALDCO_8MHZ); /* DCOCTL Calibration Data for 8MHz */

SFR_8BIT(CALBC1_8MHZ); /* BCSCTL1 Calibration Data for 8MHz */

SFR_8BIT(CALDCO_1MHZ); /* DCOCTL Calibration Data for 1MHz */

SFR_8BIT(CALBC1_1MHZ); /* BCSCTL1 Calibration Data for 1MHz */

#endif /* #ifndef __DisableCalData */

关于SFR_8BIT的相关说明:

External references resolved by a device-specific linker command file

(外部引用解决的特定于设备的连接器命令文件)

#define SFR_8BIT(address) extern volatile unsigned char address

#define SFR_16BIT(address) extern volatile unsigned int address

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

{

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

} (例3、例4)

请注意这里的陷阱。它可以清除内存段信息。

八、IFG1&= ~OFIFG; // 清除OSCFault 标志 (例1、例4)

时钟系统将强制使用的MCLK作为其源的DCO在一个时钟故障的存在。因此,我们必须清除故障标志。

FG1中断标志寄存器是1。寄存器中的位域是唯一的振荡器故障中断标志 - OFIFG。

九、while(IFG1&OFIFG)

{

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

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

} (例2、例3)

在上面的代码我们把OSCFault标志继续做我们的任务,由于时钟系统将默认为VLO。现在,我们希望确保该标志保持清零,这意味着晶体是启动并运行着的。

如果该故障标志是明确的,我们就退出循环。我们需要等待清算后的标志,直到我们再次测试50微秒。该_delay_cycles(100000)。我们需要它是那么长的时间,所以我们可以看到在代码开头的LED灯。否则,它会这么快,我们的光将无法看到它。

配置:

BCSCTL1

BCSCTL2

BCSCTL3

DCOCTL

IFG1

VLO(12KHz)

SELM_3 + divM_3

LFXT1S_2

32768KHz

SELM_3 + divM_3

LFXT1S_0

While

晶振、DCO

SELM_0+ divM_3

LFXT1S_0

While

DCO

CALBC1_1MHZ

SELM_0+ divM_3

LFXT1S_2

CALDCO_1MHZ

结果:

ACLK

MCLK

LFXT1

VLO(12KHz)

VLO

VLO/8

VLO

32768Hz

32768Hz

32768Hz/8

32768Hz

晶振、DCO

32768Hz

DCO

32768Hz

DCO

VLO

DCO/8

VLO

首先申明一下我也是才刚刚开始接触MSP430的片子,算是和大家一起学习吧,很多地方也不是很清楚。总之希望大家好好体会一下MSP430的头文件(名为:msp430x20x2.h),如果文章中有错误的话希望大家发邮件给我。纯属菜鸟入门级别文档,只是简单的分析了一下MSP430的时钟配置问题,对于一个单片机系统而言时钟可谓是重中之重,可能刚入门多是采用51系列的片子(不包括C8051f系列)所以对时钟也就没有过多的接触,只是涉及速度以及延时程序的时

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top