MSP430F449单片机时钟配置详细举例(自己总结的)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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