OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5864|回复: 3

DMA接收串口信息,没接收到设置长度情况时如何从头开始重新接收

[复制链接]

1

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2020-7-28
在线时间
16 小时
发表于 2021-5-17 16:24:03 | 显示全部楼层 |阅读模式
5金钱
比如DMA设置了长度是50字节的接收,我接到第10个字节时候通讯帧已经完成,这时候我想清除DMA接收并且想让DMA从头开始接收我应该怎么操作呢?请教各位大神。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

3389

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8644
金钱
8644
注册时间
2020-5-11
在线时间
4098 小时
发表于 2021-5-18 10:28:21 | 显示全部楼层
  1. DMA_Cmd(DMA2_Stream1,DISABLE);//关DMA                       
  2. DMA_ClearFlag(DMA2_Stream1,DMA_FLAG_TCIF1|DMA_FLAG_HTIF1|DMA_FLAG_TEIF1|DMA_FLAG_DMEIF1|DMA_FLAG_FEIF1);//清标志
  3. DMA2_Stream1->NDTR=100;//长度
  4. DMA_Cmd(DMA2_Stream1,ENABLE);//开DMA
复制代码
专治疑难杂症
回复

使用道具 举报

28

主题

93

帖子

0

精华

高级会员

Rank: 4

积分
572
金钱
572
注册时间
2015-8-3
在线时间
113 小时
发表于 2021-5-18 16:55:43 | 显示全部楼层
HAL库,读源码:
  1. huart->pRxBuffPtr -= huart->RxXferSize;
复制代码
回复

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2021-5-18 19:29:59 | 显示全部楼层
不需要清空,结合空闲、溢出中断,即可计算出本次接收到的有效数据长度。参考DMA收发实现:
https://acuity.blog.csdn.net/article/details/108367512
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-23 18:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表