msp40G2553串口通信问题

2019-03-24 11:03发布

在调试串口通信的时候,发现,有定时器模拟的可通信,。但是换作使用内置UART通信的时候发现不能通信,用的是TI的官方历程,在调试时,发现无法进入,接收中断,同样用的TI的官方历程,,在检查问题的时候,看过l其他类型的芯片的UART MODE,发现在多设置了 ME1 |= UTXE0 + URXE0;                     // Enable USART0 TXD/RXD
传说中的串口模块接收使能寄存器,但是在对照G2553的使用指南时并没有这个寄存器的描述,在相应的头文件中并没有定义。
开始时没有接转串口的板子后来   ,于是,另外使用usb 转串口的模块,直接连接芯片的RD TD,引脚。好奇怪的是,仍然进不去串口接收中断,只是PC发什么数据,返回什么数据显示,就像是,RD 与TD直接连载一起。顺便说一句,不连接芯片也是这样的。

思来想去,觉得TI官方的历程应该没有问题,如果用问题,应该是板字的问题,或者是我连接的问题,或者就是芯片的问题,用的V1.5 版本板子,看过资料,已经修正过。不知在使用的时候,有什么地方还需注意,
不知哪位用过G2553 内置串口通信,望不吝赐教,悉听指导,感激之至。

QQ截图20120726211705.png
下为历程,官方
//******************************************************************************
//   MSP430G2xx3 Demo - USCI_A0, 9600 UART Echo ISR, DCO SMCLK
//
//   Description: Echo a received character, RX ISR used. Normal mode is LPM0.
//   USCI_A0 RX interrupt triggers TX Echo.
//   Baud rate divider with 1MHz = 1MHz/9600 = ~104.2
//   ACLK = n/a, MCLK = SMCLK = CALxxx_1MHZ = 1MHz
//
//                MSP430G2xx3
//             -----------------
//         /||              XIN|-
//          | |                 |
//          --|RST          XOUT|-
//            |                 |
//            |     P1.2/UCA0TXD|------------>
//            |                 | 9600 - 8N1
//            |     P1.1/UCA0RXD|<------------
//
//   D. Dang
//   Texas Instruments Inc.
//   February 2011
//   Built with CCS Version 4.2.0 and IAR Embedded Workbench Version: 5.10
//******************************************************************************
#include  "msp430g2553.h"
void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  BCSCTL1 = CALBC1_1MHZ;                    // Set DCO
  DCOCTL = CALDCO_1MHZ;
  P1SEL = BIT1 + BIT2 ;                     // P1.1 = RXD, P1.2=TXD
  P1SEL2 = BIT1 + BIT2 ;                     // P1.1 = RXD, P1.2=TXD
  UCA0CTL1 |= UCSSEL_2;                     // SMCLK
  UCA0BR0 = 104;                            // 1MHz 9600
  UCA0BR1 = 0;                              // 1MHz 9600
  UCA0MCTL = UCBRS0;                        // Modulation UCBRSx = 1
  UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  IE2 |= UCA0RXIE;                          // Enable USCI_A0 RX interrupt
  __bis_SR_register(LPM0_bits + GIE);       // Enter LPM0, interrupts enabled
}
//  Echo back RXed character, confirm TX buffer is ready first
#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{
  while (!(IFG2&UCA0TXIFG));                // USCI_A0 TX buffer ready?
  UCA0TXBUF = UCA0RXBUF;                    // TX -> RXed character
}


补充一句,直接用班上的设置也不可以

[ 本帖最后由 曾忆往昔 于 2012-7-26 21:59 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
曾忆往昔
2019-03-25 15:35
确实是这个样子的,也是这么处理的,就可以用了

一周热门 更多>

相关问题

    相关文章