我现在用MSP430G2553处理器,用ACLK时钟实现串口9600波特率和定时器应用,发现有少部分会有出问题的,硬件布局布线感觉没啥大问题,经查发现是32768晶体不起震,无时钟,不知道问题出在哪里,32768负载电容更换6pf、12pf、22pf都无反应,感觉是晶振这出的问题
软件设置如下:
void init_clock(void)
{
BCSCTL1 = CALBC1_8MHZ;
DCOCTL = CALDCO_8MHZ;
BCSCTL3 &= ~0x30; //选择LFXT1CLK为时钟源
BCSCTL3 |= XCAP_3;
}
void init_uart(void)
{
UCA0CTL1 |= UCSWRST; //set UCSWRST //UCA0CTL0 UCA0CTL0 remains in resetted state
UCA0CTL1 &=~ (UCSSEL0+UCSSEL1); //清除之前的时钟设置
UCA0CTL1 |= UCSSEL_1; //ACLK
UCA0BR0 = 3; // ACLK 32768Hz 9600 32768Hz/9600 = 3.41
UCA0BR1 = 0; // 32768Hz 9600
UCA0MCTL = UCBRS1 + UCBRS0; // Modulation UCBRSx = 3
P1SEL|=BIT1+BIT2; //将P1.1 P1.2设为第二功能
P1SEL2|=BIT1+BIT2;
IE2 |= UCA0RXIE; // Enable USCI_A0 RX interrupt 接收中断使能
UCA0CTL1&=~UCSWRST; //禁止软件复位!
}
void timer1_init(void)
{
TA0CTL |= TASSEL_1+MC_2+TACLR; //选择ACLK时钟作为计数时钟源,不分频 必须连续计数模式
TA0CCTL0 = CCIE; //7.8125ms定时
TA0CCTL1 = CCIE;
TA0CCR1 = 327; //10ms 256->7.8125ms定时
}