主题中讨论的其他部件: MSP430G2553
您好,
我尝试在DCO上实施1 MHz频率,以便使用Argenox教程实现UART (我已将其代码附在底部)。 但它们使用MSP430G2微控制器。 在查看msp430fr2311.h文件和数据表后,我发现它没有DCOCTL寄存器。 我在数据表中发现,为了获得1 MHz的DCO,可以设置以下内容:
在头文件中查找了其中的几个后,我发现它们位于CSCTL1寄存器中。
我的问题是如何设置CSCTL1寄存器以获得1 MHz频率。 我在数据表中找不到寄存器的布局,也不知道哪个位对应什么。
Argenox代码:
#include <MSP430-h>
int main (void)
{
WDTCTL = WDTPW + WDTHOLD;//停止WDT
/*使用1MHz时钟DCO的校准值*/
DCOCTL = 0;
BCSCTL1 = CALC1_1MHz;
DCOCTL = CALDCO_1MHz;
/*配置Pin Muxing WFP 1.1 RXD和WFP 1.2 TXD*/
P1SEL = BIT1 | BIT2;
P1SEL2 = BIT1 | BIT2;
/*将UCA0置于"重置"中以进行配置*/
UCA0CTL1 = UCSWRST;
/*配置*/
UCA0CTL1 |= UCSSEL_2;// SMCLK
UCA0BR0 = 104;// 1MHz 9600
UCA0BR1 = 0;// 1MHz 9600
UCA0MCTL = UCBRS0;//调制UCBRSx = 1
/*使UCA0退出复位*/
UCA0CTL1 &=~UCSWRST;
/*启用USI_A0 RX中断*/
IE2 |= UCA0RXIE;
__bis_sr_register(LPM0_bits + GIE);//输入LPM0,启用中断
}
/*回显RXed字符,确认TX缓冲区首先准备就绪*/
#pragma vector=USCIAB0RX_vector
__interrupt void USCI0RX_ISR(void){
当(!(IFG2&UCA0TXIFG);// USI_A0 TX缓冲器就绪?
UCA0TXBUF = UCA0RXBUF;// tx - amp;gt; RXed字符
}
任何帮助都很棒! 谢谢。
