使用 W806 接受完数据, 调用回调函数 HAL_UART_RxCpltCallback 一次只有 16 字节, 如何将一包数据都接收完成呢, 有没有相应的 demo
查看更多
uart demo 里有注释, HAL_UART_Receive_IT 接口的最后一个参数, 设置了多少, 就是接收够多少个字节会进回调函数, 如果设置的 0, 就是不定长. 另外不管什么接口, 都有自己的应用层数据包协议格式, 可以通过判断包是否完整再解析, 不完整就等下一次来数据再解析, 这是正常的.
我设置了 0 不定长, 但是每次接收有效数据也是 16 个字节, 多次接收能能把一帧完整的数据接受完. 现在的问题是如何把一帧数据接受完呢
可以通过查询这个 rxfifo dada timeout 中断标志位, 再去接收数据, 类似空闲中断的用法.
发布 问题
分享 好友
手机 浏览
回到 顶部
根据数据包格式, 判断是否是个完整的包, 不是就等接收完整了再处理.
但是我现在需要对完整的数据包进行处理啊
@feng201272195 数据包里总得有长度吧, 根据长度判断不够, 那就是还没接收完整呢, 等下一次再来数据再判断是否完整. 完整了再解析.
我明白这个啊, 但是现在每一次 16 字节 我需要把这 16 字节进行存储 直到有数据结束符, 才算是数据完整. 是否有其他的办法呢 我咨询了说可以通过超时定时器去打包解包