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

msp430g2231基础定时器设置

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

(WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1) /* 16ms " */

B、看门狗模式——在过期时间后重启:

1、看门狗的时钟由FSMCLK(假设为1MHz)

#define WDT_MRST_32 (WDTPW+WDTCNTCL) /* 32ms interval (default) */

#define WDT_MRST_8 (WDTPW+WDTCNTCL+WDTIS0) /* 8ms " */

#define WDT_MRST_0_5 (WDTPW+WDTCNTCL+WDTIS1) /* 0.5ms " */

#define WDT_MRST_0_064 (WDTPW+WDTCNTCL+WDTIS1+WDTIS0) /* 0.064ms " */

2、看门狗的时钟由FACLK(假设为32KHz)

#define WDT_ARST_1000 (WDTPW+WDTCNTCL+WDTSSEL) /* 1000ms " */

#define WDT_ARST_250 (WDTPW+WDTCNTCL+WDTSSEL+WDTIS0) /* 250ms " */

#define WDT_ARST_16 (WDTPW+WDTCNTCL+WDTSSEL+WDTIS1) /* 16ms " */

#define WDT_ARST_1_9 (WDTPW+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0) /* 1.9ms " */

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

P1OUT = 0; // P1关闭 (例1、2、3、4)

其中DIR 和P1OUT分别配置IO口的方向和输出值,这里不在赘述,请参考手册。

三、BCSCTL3 |= LFXT1S_2; // LFXT1 = VLO (例1和例4)

BCSCTL3 |= LFXT1S_0; // LFXT1 = 32768Hz (例2和例3)

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

* Basic Clock Module

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

#define __MSP430_HAS_BC2__

/* Definition to show that Module is available */

SFR_8BIT(DCOCTL); /* DCO Clock Frequency Control */

SFR_8BIT(BCSCTL1); /* Basic Clock System Control 1 */

SFR_8BIT(BCSCTL2); /* Basic Clock System Control 2 */

SFR_8BIT(BCSCTL3); /* Basic Clock System Control 3 */

#define MOD0 (0x01) /* Modulation Bit 0 */

#define MOD1 (0x02) /* Modulation Bit 1 */

#define MOD2 (0x04) /* Modulation Bit 2 */

#define MOD3 (0x08) /* Modulation Bit 3 */

#define MOD4 (0x10) /* Modulation Bit 4 */

#define DCO0 (0x20) /* DCO Select Bit 0 */

#define DCO1 (0x40) /* DCO Select Bit 1 */

#define DCO2 (0x80) /* DCO Select Bit 2 */

#define LFXT1OF (0x01)

/* Low/high Frequency Oscillator Fault Flag */

#define XT2OF (0x02)

/* High frequency oscillator 2 fault flag */

#define XCAP0 (0x04) /* XIN/XOUT Cap 0 */

#define XCAP1 (0x08) /* XIN/XOUT Cap 1 */

#define LFXT1S0 (0x10) /* Mode 0 for LFXT1 (XTS = 0) */

#define LFXT1S1 (0x20) /* Mode 1 for LFXT1 (XTS = 0) */

#define XT2S0 (0x40) /* Mode 0 for XT2 */

#define XT2S1 (0x80) /* Mode 1 for XT2 */

#define XCAP_0 (0x00) /* XIN/XOUT Cap : 0 pF */

#define XCAP_1 (0x04) /* XIN/XOUT Cap : 6 pF */

#define XCAP_2 (0x08) /* XIN/XOUT Cap : 10 pF */

#define XCAP_3 (0x0C) /* XIN/XOUT Cap : 12.5 pF */

#define LFXT1S_0 (0x00)

/* Mode 0 for LFXT1 : Normal operation */

#define LFXT1S_1 (0x10) /* Mode 1 for LFXT1 : Reserved */

#define LFXT1S_2 (0x20) /* Mode 2 for LFXT1 : VLO */

#define LFXT1S_3 (0x30)

/* Mode 3 for LFXT1 : Digital input signal */

#define XT2S_0 (0x00) /* Mode 0 for XT2 : 0.4 - 1 MHz */

#define XT2S_1 (0x40) /* Mode 1 for XT2 : 1 - 4 MHz */

#define XT2S_2 (0x80) /* Mode 2 for XT2 : 2 - 16 MHz */

#define XT2S_3 (0xC0)

/* Mode 3 for XT2 : Digital input signal */

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

__bis_SR_register()是在intrinsics.h这个头文件中定义了,实现的功能是将SR中的位置零。

关于头文件中的代码作用

#ifdef __cplusplus

extern "C"

{

#endif

#ifdef __cplusplus

}

#endif /* extern "C" */

一般用于将C++代码以标准C形式输出(即以C的形式被调用),这是因为C++虽然常被认为是C的超集,但是C++的编译器还是与C的编译器不同的。C中调用C++中的代码这样定义会是安全的。

五、BCSCTL2 |= SELM_3 + divM_3; // MCLK = VLO/8

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

BCSCTL2 |= SELM_0 + divM_3; // MCLK = DCO

BCSCTL2 |= SELM_0 + divM_3; // MCLK = DCO/8

MSP430中有如下定义:

#define RSEL0 (0x01) /* Range Select Bit 0 */

#define RSEL1 (0x02) /* Range Select Bit 1 */

#define RSEL2 (0x04) /* Range Select Bit 2 */

#define RSEL3 (0x08) /* Range Select Bit 3 */

#define divA0 (0x10) /* ACLK Divider 0 */

#define divA1 (0x20) /* ACLK Divider 1 */

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

网站地图

Top