[求助] MSP430串口通信不成功

tanzhiying   2015-5-19 10:36 楼主
我用的是F122单片机,下面是我的程序,串口调试助手一直收不到数据,电路用的max3232,用示波器测它的输出大概波形是有的,但是全是毛刺,好像噪声很大的样子。不知道是不是这个问题导致通信不成功。
#include  
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)

2推荐 maylove 

引用: tanzhiying 发表于 2015-5-19 16:39
问题已经解决,是串口线没接对的问题。

谢谢分享问题所在
点赞  2015-5-19 16:54
毛刺是电容没焊好,现在没有毛刺了,但是串口调试助手还是收不到东西。
点赞  2015-5-19 12:16
问题已经解决,是串口线没接对的问题。
点赞  2015-5-19 16:39
谢谢分享问题
点赞  2016-5-11 10:53
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复