关于spreadjs如何获取不定长数据区的最后位置

 我来答
呆萌小咖77
2016-10-13 · TA获得超过797个赞
知道小有建树答主
回答量:813
采纳率:96%
帮助的人:158万
展开全部
通常采用DMA做USART接收固定长度的数据,或通过DMA完成固定数量的不间断数据流。不固定长度数据接收需要起始符和结尾符,这样就需要在每一次RX的中断后做字符检测(可参考MODBUS-ASCii),或采用接收最后一个字符后停顿超过预定时间来检测数据完结,同样需要RX中断(可参考MODBUS-RTU)。这跟用DMA减少中断开销的原意违背。

如真想用DMA,可以试试这方法,前提是主循环没有太多对实时性影响的工作:
不采用DMA完成中断,在主循环里polling当前DMA的计数器得知最新一个数据在Buffer的位置,然后检测结尾符,if收到结尾符后对buffer所有数据做处理。
细节你可以自行分析一下,看看跟你原程序有没有矛盾。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式