[求助] 430单片机串口程序

小愤青   2014-1-9 14:15 楼主
悬赏 5 分 芯积分未解决
用串口调试助手调试有发送没有接收,大侠们帮忙看看呗。
#include
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)

把你的时钟输出来看看........
人有的时候真是奇怪,选择了会后悔,放弃了会遗憾,完美只能是一种理想,不是一种存在。
点赞  2014-1-9 15:15
还有UART参数设置前状态机是不是要复位啊.......你应该参照下官方例程呢....感觉错误挺多的
人有的时候真是奇怪,选择了会后悔,放弃了会遗憾,完美只能是一种理想,不是一种存在。
点赞  2014-1-9 15:20
引用: huixianfxt 发表于 2014-1-9 15:20
还有UART参数设置前状态机是不是要复位啊.......你应该参照下官方例程呢....感觉错误挺多的

我这个就是参照官方例程写的
点赞  2014-1-10 09:44
  for (i = 0xff; i > 0; i--);             // Time for flag to set 延时怎么没按照官方的延时那么短!晶振起振了不?输出来时钟看看呢!你打开了发送中断,中断服务程序呢?中断服务函数的名字,#pragma vector=USCIAB1RX_VECTOR 是不是该USCIA1RX_VECTOR?
人有的时候真是奇怪,选择了会后悔,放弃了会遗憾,完美只能是一种理想,不是一种存在。
点赞  2014-1-10 11:01
引用: 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
  }
点赞  2014-1-10 11:30
引用: 小愤青 发表于 2014-1-10 11:30
不好意思,新手。下面这段函数不是中断服务程序啊
#pragma vector=USCIAB1RX_VECTOR
  __interrupt voi ...

.............
人有的时候真是奇怪,选择了会后悔,放弃了会遗憾,完美只能是一种理想,不是一种存在。
点赞  2014-1-10 14:20

见谅啊,本人是新手。那该怎么改呢
点赞  2014-1-10 15:08
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复