TI中文支持网
TI专业的中文技术问题搜集分享网站

关于launchpadG2553的URAT模块

今天在调试launchpad UART模块的时候遇到一些问题向大家请教

我先附上我的代码

#include <msp430.h>

int main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
if (CALBC1_16MHZ==0xFF) // If calibration constant erased
{ while(1); // do not load, trap CPU!! }
DCOCTL = 0; // Select lowest DCOx and MODx settings
BCSCTL1 = CALBC1_16MHZ; // Set DCO
DCOCTL = CALDCO_16MHZ;
P1DIR = BIT0+BIT6+BIT3; // P1.0 output, else input
P1OUT = BIT3; // P1.4 set, else reset
P1DIR&=~BIT3;
P1REN = BIT3; // P1.4 pullup // P1.0/6 setup for LED output
P1SEL = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD
P1SEL2 = BIT1 + BIT2; UCA0CTL1 |= UCSSEL_2; // SMCLK
UCA0BR0 = 2; //16-460800
UCA0BR1 = 0; // 1MHz 19200
UCA0MCTL =UCOS16+ UCBRS_3+UCBRF_2; // Modulation UCBRSx = 1
UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
IE2 |= UCA0RXIE + UCA0TXIE; // Enable USCI_A0 TX/RX interrupt
while(1)
{
if((BIT3&P1IN)==0)
{
// while((BIT3&P1IN)==0);
while ((UCA0STAT & UCBUSY)); // USCI_A0 TX buffer ready?
while (!(IFG2 & UCA0TXIFG)); // USCI_A0 TX buffer ready?
UCA0TXBUF = BIT6; // TX -> RXed character
P1OUT^=BIT6;
}
}

// __bis_SR_register(LPM3_bits + GIE); // Enter LPM3 w/ interrupts enabled
}

// USCI A0/B0 Transmit ISR
#pragma vector=USCIAB0TX_VECTOR
__interrupt void USCI0TX_ISR(void)
{
P1OUT|=BIT0;
}

// USCI A0/B0 Receive ISR
#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{
P1OUT= UCA0RXBUF; // Display RX'ed charater
}

调试现象:用示波器看TXD(P1.2)在按键按下时有波形,看urat模块状态寄存器,无动静。

接受和发送采用的是相同的程序,板子都是launchpad g2553。

曾怀疑是否波特率设置太高,但是在9600时依然不成功,更麻烦的是,完全使用官方的例程,依旧不成功。

希望调试成功过urat的大师们,指点一下!谢谢

Jason Wang83:

建议发送和接受分开调试,这也是调程序的基本思想之一。

管脚有波形,建议你可以使用超级终端进行接受实验,先验证发送端是正确的。

Ling Zhu2:

 你好,建议先用官方代码跑一下跟上位机通信的程序。

赞(0)
未经允许不得转载:TI中文支持网 » 关于launchpadG2553的URAT模块
分享到: 更多 (0)