430单片机串口程序

2019-03-24 11:56发布

用串口调试助手调试有发送没有接收,大侠们帮忙看看呗。
#include <msp430f4783.h>
void main(void)
{
    unsigned char i;
    P4SEL |= BIT0;                            //设置P4.0为UART1的TXD
    P4SEL |= BIT1;                              //设置P4.1为UART1的RXD
    P4DIR |= BIT0;                              //P4.0为输出管脚
    WDTCTL = WDTPW+WDTHOLD;                   // Stop WDT
    FLL_CTL0 |= XCAP11PF;                     // Configure load caps
  do
    {
      IFG1 &= ~OFIFG;                         // Clear OSCFault flag
      for (i = 0xff; i > 0; i--);             // Time for flag to set
    }
     while ((IFG1 & OFIFG));                   // OSCFault flag still set?
     UCA1CTL1 |= UCSSEL_1;                     // CLK = ACLK
     UCA1BR0 = 0x03;                           // 32k/9600 - 3.41
     UCA1BR1 = 0x00;                           //
     UCA1MCTL = 0x06;                          // Modulation
     UCA1CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
    // ME2 |= UCA1TXIE+ UCA1RXIE;              //使能UART1的TXD和RXD
     IE2 |= UCA1RXIE;                               //使能UART1的RX中断
     IE2 |= UCA1TXIE;                               //使能UART1的TX中断
     _BIS_SR(LPM0_bits + GIE);                 // Enter LPM0, interrupts enabled
}
//  Echo back RXed character, confirm TX buffer is ready first
  #pragma vector=USCIAB1RX_VECTOR
  __interrupt void USCIA1RX_ISR (void)
  {
      while(!(IFG2&UCA1TXIFG));
      UCA1TXBUF = UCA1RXBUF;                    // TX -> RXed character
  }

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
huixianfxt
1楼-- · 2019-03-24 16:35
把你的时钟输出来看看........
huixianfxt
2楼-- · 2019-03-24 18:10
< :TI_MSP430_内容页_SA7 --> 还有UART参数设置前状态机是不是要复位啊.......你应该参照下官方例程呢....感觉错误挺多的
小愤青
3楼-- · 2019-03-24 22:35
 精彩回答 2  元偷偷看……
huixianfxt
4楼-- · 2019-03-25 04:05
  for (i = 0xff; i > 0; i--);             // Time for flag to set 延时怎么没按照官方的延时那么短!晶振起振了不?输出来时钟看看呢!你打开了发送中断,中断服务程序呢?中断服务函数的名字,#pragma vector=USCIAB1RX_VECTOR 是不是该USCIA1RX_VECTOR?
小愤青
5楼-- · 2019-03-25 04:50
huixianfxt 发表于 2014-1-10 11:01
for (i = 0xff; i > 0; i--);             // Time for flag to set 延时怎么没按照官方的延时那么短!晶 ...

不好意思,新手。下面这段函数不是中断服务程序啊
#pragma vector=USCIAB1RX_VECTOR
  __interrupt void USCIA1RX_ISR (void)
  {
      while(!(IFG2&UCA1TXIFG));
      UCA1TXBUF = UCA1RXBUF;                    // TX -> RXed character
  }
huixianfxt
6楼-- · 2019-03-25 09:40
 精彩回答 2  元偷偷看……

一周热门 更多>

相关问题

    相关文章