MSP430F449单片机时钟配置详细举例(自己总结的)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

// MSP430-TEST44X Demo - FLL+ clock, Runs internal DCO at 2.45Mhz

//

//

//

// MSP430F449

// -----------------

// /|\| XIN|-

// | | | 32khz xtal

// --|RST XOUT|-

// | |

// | P1.1|--> MCLK = 2.4576Mhz

// | |

// | P1.5|--> ACLK = 32khz

// | |

//

//

// 程序功能:该程序是通过设置不同的时钟源输出模式,具体是P1.5=ACLK=32.768Khz;P1.1=MCLK=4.9Mhz,

// 通过本实验了解MSP430内部的时钟来源和不同频率的设置。

// 硬件连接:在必须连接P1.1、P1.5短接器,

// MSP430F449复位后,MCLK和SMCLK的驱动源为DCO,SMCLK=MCLK=32*ACLK=32*32768=1048576Hz。

//////fDCOCLK = D x (N + 1) x fACLK。

//////N的设置为SCFQCTL = N(N取值1~127);

/////D的设置为SCFI0 = D(D取值FLLD_1,FLLD_2,FLLD_4,FLLD_8,即D=1,2,4,8),默认值D 取2;

/////还要设置FLL_CTL0 |= DCOPLUS,D才会生效

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

#include "msp430x44x.h"

void main(void)

{

WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer

SCFI0 |= 2; // 可取1.2.4.8

FLL_CTL0 = XCAP18PF+DCOPLUS; // set load capacitance for xtal

SCFQCTL = 74; // (可取1~127) (74+1) x 32768*2 = 4.9Mhz

P1DIR = 0x22; // P1.1 & P1.5 to output direction

P1SEL = 0x22; // P1.1 & P1.5 to output MCLK & ACLK

while(1); // loop in place

}

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

//

//

// MSP430F449

// -----------------

// /|\| XIN|-

// | | | 32khz xtal

// --|RST XOUT|-

// | |

// | P1.1|--> MCLK = 8Mhz

// | |

// | P1.5|--> ACLK = 32khz

// | |

//

//

// 程序功能:该程序是通过设置不同的时钟源输出模式,具体是P1.5=ACLK=32.768Khz;P1.1=MCLK=8Mhz,

// 通过本实验了解MSP430内部的时钟来源和不同频率的设置。

// 硬件连接:在必须连接P1.1、P1.5短接器,

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

#include "msp430x44x.h"

void main(void)

{

WDTCTL = WDTPW + WDTHOLD; // stop watchdog timer

SCFI0 |= FN_2; // x2 DCO frequency, 8MHz nominal DCO SCFQCTL = 121; // (121+1) x 32768 x 2 = 7.99 Mhz

FLL_CTL0 = DCOPLUS + XCAP18PF; // DCO+ set so freq = xtal x D x N+1

P1DIR = 0x22; // P1.1 & P1.5 to output direction

P1SEL = 0x22; // P1.1 & P1.5 to output MCLK & ACLK

while(1); // loop in place

}

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

//

//

// MSP430F44x

// -----------------

// /|\ | XIN|-

// | | | 32kHz crystal

// ---|RST XOUT|-

// | |

// | |

// | XT2IN|-

// | | HF XTAL or resonator (add capacitors)

// | XT2OUT|-

// | |

// | P1.5|--> ACLK = 32khz crystal out

// | |

// | P1.4|--> SMCLK = 1Mhz high freq xtal or resonator out

// | |

// | P1.1|--> MCLK = DCO frequency

// | |

// | |

//

// 程序功能:该程序是通过设置不同的时钟源输出模式,具体是P1.5=ACLK=32.768k;

// P1.4=SMCLK=1Mhz; P1.1=MCLK=1Mhz,通过本实验了解MSP430内部的时钟源。

// 硬件连接:在必须连接P1.1,P1.4,P1.5短接器,

//

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

#include "msp430x44x.h"

void main(void)

{

unsigned int i;

WDTCTL = WDTPW + WDTHOLD; // stop watchdog timer

FLL_CTL0 = XCAP18PF; // 系统配置

FLL_CTL1 = FLL_CTL1 & ~XT2OFF; // 使高频振荡器有效,XT2默认是关闭的

do

{

FLL_CTL0 = FLL_CTL0 & ~XT2OFF; // 清除振荡器失效标志

for (i = 50000; i; i--); // 延时等待

}

while (FLL_CTL0 & XT2OFF); // 检测振荡器是否失效

FLL_CTL1 = SELS; // 选择SMCLK = HF xtal(1 Mhz)设置MCLK FLL_CTL1 = SELM_XT2/SELM_A 。默认都是SELM_DCO

P1DIR = 0x32; // P1.1, P1.4 & P1.5 to outputs

相关文档
最新文档