MSP430学习之时钟
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
MSP430时 相关文章:
- MSP430时钟设置及应用总结(11-25)
- MSP430的时钟周期 机器周期 指令周期(11-13)
- Msp430时钟设计与寄存器说明(11-13)
- MSP430 Value Line MCU学习笔记 - 基础时钟模块(11-13)
- MSP430的时钟系统(11-13)
- MSP430时钟分析(11-13)