This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

cc2530-2.3.0-1.4.0 SerialApp例程串口只能收不能发的问题

Other Parts Discussed in Thread: CC2530

如题 cc2530-2.3.0-1.4.0 的SerialApp例程设置为LOOPBACK,即CC2530收到的串口信息回发到PC。
1.调试发现CC2530能收到串口信息,但是没有信息发送到PC。
2.如果我将上述接收到的信息这样发送:
    for(j = 0; j < SerialApp_TxLen; j++)
    {
        U0DBUF = SerialApp_TxBuf[1 + j];
        while(UTX0IF == 0) ;
        UTX0IF = 0;
    }   
  发现UTX0IF一直为0,也就是发不了串口信息。

  请问是什么原因呢?谢谢。

  • 发送函数没什么问题,具体看一下你的关于串口的寄存器配置。

     void Bsp_UartInit(void)
    {
        PERCFG &= ~BSP_UART_PERCFG_BIT;    //位置1 P0口P0.2 P0.3
        PxSEL |= BSP_UART_Px_RX_TX;     //P0用作串口
        APCFG &= ~BSP_UART_Px_RX_TX;    //ADC没有用到这几个口

        UxCSR |= CSR_MODE;             //UART方式
        IEN0 |= 0x80;                 //开总中断,接收中断
    }

    void Bsp_UartOpen(uint8_t baudRate,uint8_t flowcontrol)
    {
        if (baudRate == BSP_UART_BAUDRATE_57600 ||
            baudRate == BSP_UART_BAUDRATE_115200)
        {
          UxBAUD = 216;
        }
        else
        {
          UxBAUD = 59;
        }
       
        switch (baudRate)
        {
          case BSP_UART_BAUDRATE_9600:
            UxGCR = 8;
            break;
          case BSP_UART_BAUDRATE_19200:
            UxGCR = 9;
            break;
          case BSP_UART_BAUDRATE_38400:
        
          case BSP_UART_BAUDRATE_57600:
            UxGCR = 10;
            break;
          default:
            UxGCR = 11;
            break;
        }
     
        // 8 bits/char; no parity; 1 stop bit; stop bit hi.
        if (flowcontrol)
        {
          UxUCR = UCR_FLOW | UCR_STOP;//流控制使能
          PxSEL |= BSP_UART_Px_RTS | BSP_UART_Px_CTS;//握手
        }
        else
        {
          UxUCR = UCR_STOP;
        }
        UxCSR |= CSR_RE;//允许接受
        URXxIE = 1; //中断使能
        UTXxIF = 1;  // Prime the ISR pump.
    }

  • 找到问题了,例程里打开了流控。