串口dma接收

2019-07-20 10:17发布

  我用串口空闲中断+dma来接受不定长度的数据,用串口调试助手发了一帧数据,长度为8,进入空闲中断后,数据接收长度的确是8,但是我指定的buffer里面却只有7个数,最后一个数在buffer里面没有,这一现象随机发生,有时能收完,有时只能收7个,求助,急,完全找不到思路啊
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
xiao飞
1楼-- · 2019-07-20 10:59
当我在空闲中断里面重新打开dma过后,运行其他代码时,发现第八个数才到我的缓存buffer
正点原子
2楼-- · 2019-07-20 16:26
参考这里:http://www.openedv.com/forum.php?mod=viewthread&tid=109577”
xiao飞
3楼-- · 2019-07-20 21:21
 精彩回答 2  元偷偷看……
xiao飞
4楼-- · 2019-07-21 00:23
正点原子 发表于 2017-12-24 01:01
参考这里:http://www.openedv.com/forum.php?mod=viewthread&tid=109577”

原子哥,我是在f7上弄的串口空闲中断+dma接收,初始配置都和这个类似的,我在空闲中断里面查询,确实是收到了8个数,就是看ndtr的值,但是设置的接收内存buffer里面第八个数确实0,然后我退出串口空闲中断过后,运行其他程序,这个buffer的第八个数又变为了正确值(这个buffer是个全局变量),会不会和缓存那个有关系啊,之前看到过有人说这个问题,我已经用了透写的
正点原子
5楼-- · 2019-07-21 06:03
xiao飞 发表于 2017-12-24 11:17
原子哥,我是在f7上弄的串口空闲中断+dma接收,初始配置都和这个类似的,我在空闲中断里面查询,确实是收 ...

F7的cache比较难用,好好参考下我们用dma的时候,对cache的处理

一周热门 更多>