|
串口进来的数据,每次都是分成2次才读取完毕? 第一次是1个字节,第二次是剩余的。用了很多样本测试过都这样,样本数据量不大,1K以内。
是不是设计就是这样的?
RTT版本是GIT MASTER ,应该是1.2.0BETA ,uart1配置用的是默认的RX中断模式,TX STREAM。
部分关键代码:
// 串口的通知函数
static rt_err_t hub_rx_ind(rt_device_t dev, rt_size_t size)
{
struct rx_msg msg;
msg.dev = dev;
msg.size = size; //这个好像不准,已经读切完毕了还 >0
rt_mq_send(&rx_mq, &msg, sizeof(struct rx_msg));
return RT_EOK;
}
读取线程:
while (1)
{
/* wait receive */
result = rt_mq_recv(&rx_mq, &msg, sizeof(struct rx_msg), RT_WAITING_FOREVER);
if (result == RT_EOK)
{
rx_length = rt_device_read(msg.dev, 0, &rx_buffer[0], rx_length);
}
测试样板:
00aa: 这个2个字节的会先发送第一个00,然后aa
00aa00bbcc: 这个5个字节的会先发送第一个00,然后剩下的,但是上面的串口回调函数依然会被继续调用多次,尽管每次会读取不到什么, 也就是rx_length 为0
。
别的样板也是一样,都是第一次会先读取到一个字节,然后会通知读取剩余的字节,然后还会无效通知多次。
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|