MSP430F149的程序,每次运行到while ((IFG2 & UTXIFG1) == 0);就停止

2019-07-15 16:31发布

为什么我用的这个程序,每次运行到while ((IFG2 & UTXIFG1) == 0);就停在了这里?是串口配置的问题吗?




/*使用MSP430F149开发板向和PC机进行串口通信单片机向PC发送字符串
unsigned char TBuf[8]={1,2,3,4,5,6,7,8},
使用串口调试助手接收到的字符串为:01 02 03 04 05 06 07 00 F8*/
#include  <msp430x14x.h>
unsigned char TBuff[8]={1,2,3,4,5,6,7,8}; // 发送缓冲区
void USART_Send(unsigned char *pData)
{
  unsigned char j;
  for(j=0; j<8; j++)
  {
    TXBUF1 = pData[j]; // 装入发送寄存器
    while ((IFG2 & UTXIFG1) == 0); // 判断:发送是否完成
    IFG1 &= ~(UTXIFG1);
  }
}
void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  P3SEL |= 0xC0;                            // P3.6,7 = USART0 TXD/RXD
  ME2 |= UTXE1 + URXE1;                     // Enable USART0 TXD/RXD
  UCTL1 |= CHAR;                            // 8-bit character
  UTCTL1 |= SSEL1;                          // UCLK = ACLK
  UBR01 = 0x0D;                             // 32k/2400 - 13.65
  UBR11 = 0x00;                             //
  UMCTL1 = 0x6B;                            // Modulation
  UCTL1 &= ~SWRST;                          // Initialize USART state machine
  IE2 |= URXIE1;                            // Enable USART0 RX interrupt
  _EINT();                                  // interrupt

  while(1)
  {
    USART_Send(TBuff);
  }
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。