MSP430串口通信不成功

2019-03-24 10:13发布

我用的是F122单片机,下面是我的程序,串口调试助手一直收不到数据,电路用的max3232,用示波器测它的输出大概波形是有的,但是全是毛刺,好像噪声很大的样子。不知道是不是这个问题导致通信不成功。
#include  <msp430x12x.h>
void USART_Send(unsigned int pData);
void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  unsigned int i;
  P2DIR |= BIT0; //P1.4 IO口设置为输出.
  P2SEL |= BIT0; //P1.4 IO口设置为ACLK.
  P1DIR |= BIT4; //P1.4 IO口设置为输出.
  P1SEL |= BIT4; //P1.4 IO口设置为SMCLK.
  BCSCTL1 &= ~XT2OFF; //开高速晶振
  BCSCTL1 |= XTS; // ACLK = LFXT1 = HF模式
do
{
IFG1 &= ~OFIFG; // 清除振荡器失效标志
for(i = 0Xff;i > 0;i--); // 稳定时间
}
while((IFG1 & OFIFG) != 0); // 如果振荡器失效标志存在
BCSCTL2 |= SELM_2; //?MCLK主时钟选XT2为时钟源.XT2输入不分频.
BCSCTL2 |= SELS; //SMCLK选XT2为时钟源.(参考)


  P3SEL |= 0x30;                            // P3.6,7 = USART1 TXD/RXD
  ME2 |= UTXE0 + URXE0;                     // Enable USART1 TXD/RXD
  UCTL0 |= CHAR;                            // 8-bit character
  UTCTL0 |= SSEL1;                          // UCLK = SMCLK

  U0BR0 = 0x41;                             // 8M/9600 -
  U0BR1 = 0x03;                             //
  UMCTL0 = 0x12;                            // Modulation

  UCTL0 &= ~SWRST;                          // Initialize USART state machine
  IE2 |= URXIE0;                            // Enable USART1 RX interrupt
  _EINT(); // 不要忘了开中断
  while(1)
  {
  USART_Send(0xaa);
  }
  //_BIS_SR(LPM3_bits + GIE);                 // Enter LPM3 w/ interrupt
}

void USART_Send(unsigned int pData)
{

TXBUF0 = pData; // 装入发送寄存器
while ((IFG2 & UTXIFG0) == 0); // 判断:发送是否完成
IFG2 &= ~(UTXIFG0);
}

#pragma vector=USART0RX_VECTOR
__interrupt void usart1_rx (void)
{
  while (!(IFG2 & UTXIFG0));                // USART1 TX buffer ready?
  TXBUF0 = RXBUF0;                          // RXBUF1 to TXBUF1
}

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
zhao_金辉
2019-03-24 19:37
谢谢分享问题

一周热门 更多>

相关问题

    相关文章