出出啊
出出啊
It is Not the Mountain We Conquer, but Ourselves

注册于 6 months ago

回答
893
文章
19
关注者
55

应用层线程调用不及时,缓冲区的数据来不及取走,把整片内存剩余空间都留给串口都没用。

  1. 要么降低串口波特率。
  2. 要么提升处理数据的线程的响应速度。

“按理说每读取到一个数据缓冲区不久吧这个数据释放掉了吗,为什么缓冲区还会满?”,解释一下这句。串口的缓冲区是一个 fifo 没有每次都申请或者不久释放的说法。可以和预约办理业务类比,预约人数有上限,人满了就不能预约了。有空余数才能继续预约。预约人比较多,办理业务慢,就出现很多人预约不了的情况;只有加快处理业务的吞吐量,才能从根本上解决问题。

删掉 uart_sample.c 这个文件,把这个文件内实现的业务逻辑挪到 main 函数里实现一遍。

你这几个确定是 rtt 的api?
打开 osThreadFlagsWait 函数实现定义,看看什么情况下返回 -2 。把返回 -2 的代码贴出来

main 函数先执行了,还没有挂载 sd 卡文件系统。
sd card mount to ...这句明显没有打印出来嘛

hal 和 rt thread 驱动不兼容?你自己换 hal 库源码了吗?

ymodem 是串口上传输文件的协议。你既然有网口,就可以用 http 了嘛,ota里有 http 协议传输文件的操作。

有过把3搞成调试串口吗,能不能单独开串口3?
有使用示波器看串口线信号吗?

拿万用表测一下那个引脚,啥状态
一直打印一样的信息是一直重启呢吧

LINK_UP 表明网线插上了。
后面那几句在 dhcp 获取不到 ip 的时候会打印出来。其它错误的时候也有这个信息。
你的 sal lwip 配置贴出来吧

可能是引脚配置问题,仔细检查一下引脚吧。所有引脚都核查一遍

memcpy? rt_memcpy?
指针类型强制类型转换成 (uint_32t*)?

u盘驱动有毛病,请看一下我的第一篇文章。对你可能有启发。

回到
顶部

发布
问题

投诉
建议