感觉是硬件问题了?请问怎么通过软件调整?
功能描述:
串口0接受的数据通过串口1发送出去。
问题描述:
可以实现发送,但是每次改变串口0接收的数据时,仍发送一次之前的数据,第二次发送才是正确的。
望解答一下,谢谢。
代码如下:
/**UART0接受中断函数*/
void uart0_receive_callback(UART_Handle_T *hUART, uint8_t event, unsigned long param)
{
if (event == UART_EVENT_RX_WATERMARK || event == UART_EVENT_RXFIFO_tiMEOUT)
{
uint32_t rcvCount = (uint32_t)param;
while (rcvCount--)
{
g_rxData0[g_rxSize0] = UART_GetChar(hUART->device);
if(g_rxData0[g_rxSize0] == 0x0A)//这里是一旦收到换行,就停止接收
{
g_txSize0 = g_rxSize0;
g_rxSize0 = 0;
uart1_tx_enable = 1;//打开UART1发送标志位。
break;
}
g_rxSize0++;
if(g_rxSize0 >= UART_USERBUFFER_SIZE)
g_rxSize0 = 0;
}
}
else if (event == UART_EVENT_RX_OVER || event == UART_EVENT_RX_ERROR)
{
g_rxSize0 = 0;
g_event0 = event;
}
}
//uart1发送函数(处理uart0接受的数据)
void transfer() {
if(uart1_tx_enable)
{
// UART_Transmit(&uart1Handle, &g_rxData0[0], g_txSize0 + 1 , TIMEOUT_WAIT_FOREVER);
for(i = 0 ;i < g_txSize0 + 1 ; i++)
{
// printf("g_rxData0[%d]=%c //**** ",i,g_rxData0);
SysTick_DelayMS(20);
UART_PutChar(UART1,g_rxData0);
}
memset(g_rxData0,0,sizeof(UART_USERBUFFER_SIZE));
uart1_tx_enable = 0;
}
} |