UART只收到了16个字节

了解更多常见问题解答教程

2个帖子/ 0新
最后一篇
Wenzhe.
离线
最后一次露面:1周5天前
加入:2020-03-27 16:12
UART只收到了16个字节

嗨对话框,

我按照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);

}

设备:
Wenzhe.
离线
最后一次露面:1周5天前
加入:2020-03-27 16:12
我知道了。

我知道了。

使用UART2在Callback调用的Quart2中使用UART2进行调试打印,从而减慢了回调的忧虑。删除调试打印,问题已修复。