你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F407进行不定长度的串口DMA通信

[复制链接]
feiante 提问时间:2014-11-19 15:40 /
有没有人用F407做过不定长度的数据串口DMA通信,就是电脑通过串口发不定长度的数据,通过DMA方式接收,再通过DMA方式发送?
目前我做过的是定长度的DMA发送与接收,至于不定长度的,开始打算用总线空闲中断来做,但是发现好像有点问题,然后打算用定时器去做。
有几个疑问:
1、什么时候开启定时器?
2、怎么清楚存储器数组的数据?比如数组大小为200,接收的数据长度为10,那么第二次接收到的数据是从11开始存储的,如果要发送新的数据,一定要自己去计算位置吗?
3、由于是判断在定时时间内,如果缓存区的剩余的大小不变时说明没有新的数据接收了,那么怎么处理好2次读缓存区的大小呢?
收藏 评论4 发布时间:2014-11-19 15:40

举报

4个回答
沐紫 回答时间:2014-11-21 16:45:46
哪位朋友来帮忙看看,拜托了
xulay 回答时间:2014-11-21 17:34:39
DMA适合做一些机械化,呆板的任务,长度判断需要CPU的介入,DMA的优势荡然无存。
小贾-370388 回答时间:2014-11-29 13:50:20
本帖最后由 小贾-370388 于 2014-11-29 13:51 编辑

你可以用两个数据指针和两个计数变量指向同一个数据缓冲区,做成像windows操作串口那样出来串口缓存,比如说当你读取数据的时候你读的是0到10的地址数据,但是这时串口同时也在接收呢,这时用另一个指针指向11地址的位置,记录下次要读取的位置,这次读完以后要把0到10地址的数据清空,再次读取就从11往后读取。第一个指针就指向第二次数据的下一位。,数据存储的缓存区是循环的 比如存储区范围是20 ,第一次存的是1--8第二次就是9--16第三次就是17--4。数据循环存放
魔方奇才 回答时间:2014-11-29 15:27:29
可以用两个数据指针和两个计数变量指向同一个数据缓冲区,做成像windows操作串口那样出来串口缓存,比如说当你读取数据的时候你读的是0到10的地址据,但是这时串口同时也在接收呢,这时用另一个指针指向11地址的位置,记录次要读取的位置,这次读完以后要把0到10地址的数据清空,再次读取就从11往后读取。第一个指针就指向第二次数据的下一位。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版