关于spreadjs如何获取不定长数据区的最后位置
1个回答
展开全部
通常采用DMA做USART接收固定长度的数据,或通过DMA完成固定数量的不间断数据流。不固定长度数据接收需要起始符和结尾符,这样就需要在每一次RX的中断后做字符检测(可参考MODBUS-ASCii),或采用接收最后一个字符后停顿超过预定时间来检测数据完结,同样需要RX中断(可参考MODBUS-RTU)。这跟用DMA减少中断开销的原意违背。
如真想用DMA,可以试试这方法,前提是主循环没有太多对实时性影响的工作:
不采用DMA完成中断,在主循环里polling当前DMA的计数器得知最新一个数据在Buffer的位置,然后检测结尾符,if收到结尾符后对buffer所有数据做处理。
细节你可以自行分析一下,看看跟你原程序有没有矛盾。
如真想用DMA,可以试试这方法,前提是主循环没有太多对实时性影响的工作:
不采用DMA完成中断,在主循环里polling当前DMA的计数器得知最新一个数据在Buffer的位置,然后检测结尾符,if收到结尾符后对buffer所有数据做处理。
细节你可以自行分析一下,看看跟你原程序有没有矛盾。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询