cc2530-2.3.0-1.4.0 SerialApp例程串口只能收不能发的问题
如题 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.
}
找到问题了,例程里打开了流控。