微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > MSP430学习之时钟

MSP430学习之时钟

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

eWDT_ADLY_1000 (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL) /* 1000ms " */

#defineWDT_ADLY_250 (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS0) /* 250ms " */

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

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

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

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

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

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

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

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

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

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

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

#defineWDT_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 */

#defineMOD0 (0x01) /* Modulation Bit 0 */

#defineMOD1 (0x02) /* Modulation Bit 1 */

#defineMOD2 (0x04) /* Modulation Bit 2 */

#defineMOD3 (0x08) /* Modulation Bit 3 */

#defineMOD4 (0x10) /* Modulation Bit 4 */

#defineDCO0 (0x20) /* DCO Select Bit 0 */

#defineDCO1 (0x40) /* DCO Select Bit 1 */

#defineDCO2 (0x80) /* DCO Select Bit 2 */

#defineLFXT1OF (0x01)

/* Low/high Frequency Oscillator Fault Flag */

#defineXT2OF (0x02)

/* High frequency oscillator 2 fault flag */

#defineXCAP0 (0x04) /* XIN/XOUT Cap 0 */

#defineXCAP1 (0x08) /* XIN/XOUT Cap 1 */

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

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

#defineXT2S0 (0x40) /* Mode 0 for XT2 */

#defineXT2S1 (0x80) /* Mode 1 for XT2 */

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

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

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

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

#defineLFXT1S_0 (0x00)

/* Mode 0 for LFXT1 : Normal operation */

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

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

#defineLFXT1S_3 (0x30)

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

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

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

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

#defineXT2S_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中有如下定义:

#defineRSEL0 (0x01) /* Range Select Bit 0 */

#defineRSEL1 (0x02) /* Range Select Bit 1 */

#defineRSEL2 (0x04) /* Range Select Bit 2 */

#defineRS

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

网站地图

Top