嗨对话框,
我按照UART2_LOOPBACK_TEST.c来编写我的UART应用程序,在那里我需要从UART外围设备接收字符串行。
因此,我呼叫UART_READ读取字节,并在收到一个字节后触发回调;在UART_READ_CB()中,一旦检测到符号行馈送和返回,发送消息,然后呼叫UART读取以强制无尽UART读取。
代码是如下帖子。
我的问题是使用此方法,仅收到16个字节,而UART外设发送超过16个字节(实际上是30个字节,让我们说)。
我已经验证了UART外围设备通过一些实验发送30字节。
你能帮忙了解这里有什么问题吗?
谢谢,
Wenzhe.
静态void UART_READ_CB(UINT8_T状态)
{
//在环形缓冲区中放置字节
ring_put_byte(&g_at_ring,uart_rxbuf [0]);
if(uart_rxbuf [0] =='\ n'&& uart_rxbuf [1] =='\ r'){
//发送消息到应用程序任务,指示收到的响应行
struct lte_atrsp_line_ind * req = ke_msg_alloc_dyn(app_msg_lte_atsp,task_app,task_app,
lte_atrsp_line_ind,0);
req-> len = ring_get_byte_count(&g_at_ring);
req-> line_count = ring_get_availble_line_counter(&g_at_ring);
KE_MSG_SEND(REQ);
}
UART_RXBUF [1] = UART_RXBUF [0];
//启动下一个异步读取1个字符。
UART_READ(UART_RXBUF,SIZE,UART_READ_CB);
}
void ring_init(void)
{
ring_t * ring =&g_at_ring;
ring-> buffer_size = at_ring_buf_size;
ring-> buffer_count = 0;
ring-> buffer_head = 0;
ring-> buffer_tail = 0;
环 - > line_count = 0;
Memset(环 - > BUF,0,AT_RING_BUF_SIZE);
LOGD(“启动监视器UART”);
UART_READ(UART_RXBUF,1,UART_READ_CB);
}
我知道了。
使用UART2在Callback调用的Quart2中使用UART2进行调试打印,从而减慢了回调的忧虑。删除调试打印,问题已修复。
嗨wenzhe,
为迟到的回应道歉。谢谢你的迹象,很高兴你解决了它。
谢谢,PM_DIALOG.