打印

问大神一个关于STM32的DMA问题

[复制链接]
1594|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
a8037902|  楼主 | 2013-7-21 09:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在使用DMA更新LCD屏幕的时候,使能DMA后有一条
while(DMA_GetFlagStatus(DMA2_FLAG_TC5)==RESET);        //等待语句
当我把这条语句注释掉,LCD屏幕全白。没有用到DMA的中断
我的疑问是,为什么使能DMA后要等待它完成才能继续下面的操作,如果需要CPU等待DMA完成才能继续运行,那还需要DMA做什么?我直接用CPU传输部还是一样?
沙发
a8037902|  楼主 | 2013-7-22 17:52 | 只看该作者
有没有人了解这方面啊,我猜难道是应为总线被CPU占用了?所以DMA传不了了?

使用特权

评论回复
板凳
lucjn| | 2013-7-22 18:03 | 只看该作者
这个函数主要目的是检测数据从DMA冲到Buffer中是把整个Buffer冲满了,还是冲到过半,和CPU没有关系,用来判断DMA过来的数据相对于缓冲区的大小,主要作用是根据你需要告诉你什么时候该读缓冲区了。

使用特权

评论回复
地板
a8037902|  楼主 | 2013-7-22 18:06 | 只看该作者
lucjn 发表于 2013-7-22 18:03
这个函数主要目的是检测数据从DMA冲到Buffer中是把整个Buffer冲满了,还是冲到过半,和CPU没有关系,用来判 ...

问题是我把这个语句注释掉以后,屏幕就不显示了。不知道是什么原因

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

107

主题

154

帖子

0

粉丝