串口用DMA方式

2019-08-19 16:30发布

串口用DMA方式读取到一个数组里,持续读取,如果数组满了,之后串口的数据会怎么处理?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
loudianxin
1楼-- · 2019-08-21 06:17
Sun_Fly 发表于 2017-5-9 10:48
也就是串口DMA取到数据到数组,怎么使用,在什么时候使用,然后还要一直更新数组的内容,

开DMA接收完成中断,中断里面重新赋值目标数组地址和数据长度。关于接收到规定的长度后DMA什么情况和数组数据会不会覆盖你写个代码测试下就知道了
Sun_Fly
2楼-- · 2019-08-21 10:46
由于DMA采用了连续传输的模式,ADC采集到的数据会不断传到到存储器中(此处即为数组ADC_Value)。ADC采集的数据从ADC_Value[0]一直存储到ADC_Value[99],然后采集到的数据又重新存储到ADC_Value[0],一直到ADC_Value[99]。所以ADC_Value数组里面的数据会不断被刷新。这个过程中是通过DMA控制的,不需要CPU参与。我们只需读取ADC_Value里面的数据即可得到ADC采集到的数据
564646396
3楼-- · 2019-08-21 13:28
楼主 可以把例子发来看看么
Sun_Fly
4楼-- · 2019-08-21 18:38
 精彩回答 2  元偷偷看……
liudijiang
5楼-- · 2019-08-22 00:07
DMA+串口空闲中断就可以解决了。DMA的大小就设定为串口协议最大值。你不会串口协议的数据长度可以无限长的吧?
564646396
6楼-- · 2019-08-22 02:25
Sun_Fly 发表于 2017-5-16 10:17
我用的hal库,百度例程

谢谢哦

一周热门 更多>