|
发表于 2011-7-10 14:32:25
|
显示全部楼层
//*****************************************************************************
//
// MSP430F5438A
// -----------------
// /|\ | XIN|-
// | | | 32kHz(no capacitors)
// ---|RST XOUT|-
// | |
// | |
// | XT2IN|-
// | | 25MHz(add capacitors 33pF*2)
// | XT2OUT|-
// | |
// | P11.0|--> ACLK = 32kHz Crystal Output
// | |
// | P11.2|--> SMCLK = 25MHz Crystal Output
// | |
// | P11.1|--> MCLK = 25MHz Crystal Output
// | |
// | |
//******************************************************************************
#include "msp430x54x.h"
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P11DIR = BIT2 + BIT1 + BIT0; // P11.2,1,0 to output direction
P11SEL = BIT2 + BIT1 + BIT0; // P11.2 to output SMCLK, P11.1
// to output MCLK and P11.0 to
// output ACLK
P5SEL |= 0x0C; // Port select XT2
P7SEL |= 0x03; // Port select XT1
UCSCTL6 &= ~(XT1OFF + XT2OFF); // Set XT1 & XT2 On
UCSCTL6 |= XCAP_3; // Internal load cap
// Loop until XT1,XT2 & DCO stabilizes
do
{
UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);
// Clear XT2,XT1,DCO fault flags
SFRIFG1 &= ~OFIFG; // Clear fault flags
}while (SFRIFG1&OFIFG); // Test oscillator fault flag
UCSCTL6 &= ~XT2DRIVE0; // Decrease XT2 Drive according to
// expected frequency
UCSCTL4 |= SELS_5 + SELM_5; // SMCLK=MCLK=XT2
while(1); // Loop in place
} |
|