如题 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,也就是发不了串口信息。
请问是什么原因呢?谢谢。
VV:
发送函数没什么问题,具体看一下你的关于串口的寄存器配置。
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.}
YE YE:
回复 VV:
找到问题了,例程里打开了流控。