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

[复制链接]
1948|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

粉丝
快速回复 在线客服 返回列表 返回顶部