
/*等待DMA传输完成,实际应用中,传输数据期间,可以执行另外的任务 */
while(1)
{
if(DMA_GetFlagStatus(DMA1_FLAG_TC7)!=RESET) //判断通道7传输完成
{
SZ_STM32_LED1Toggle()
SZ_STM32_LED2Toggle()
DMA_ClearFlag(DMA1_FLAG_TC7)//清除通道7传输完成标志
}
看不到你写的程序 给你个DMA中断提示
实现DMA传送的基本 *** 作如下:
2、CPU响应DMA请求,系统转变为DMA工作方式,并把总线控制权交给DMA控制器;
3、由DMA控制器发送存储器地址,并决定传送数据块的长度;
4、执行DMA传送;
5、DMA *** 作结束,并把总线控制权交还CPU。
扩展资料
DMA方式下,为了控制外设和主存直接交换数据,需要有专门的数据传送控制电路,通常把这样的控制逻辑称为DMA控制器。整个过程分以下三个阶段:
(1)DMA控制器初始化
首先,对DMA控制器和设备接口中的参数寄存器进行初始化,以设定主存首地址、传送数据个数、传送方向(读出/写入)、设备地址(如磁头号、磁道号、起始扇区号)等,这些初始化工作由CPU执行指令完成。初始化工作的最后是向外设接口发送启动读或写的命令。
(2)DMA传送
外设接口接受到CPU送来的启动命令后,就开始控制设备进行读或写 *** 作,当外设准备好数据以后,外设接口就会向DMA控制器发送相应的“DMA请求”信号。
DMA控制器接受到该信号后,就会向CPU发送“总线请求”信号,要求CPU释放总线,请求由DMA控制器控制总线以进行外设和主存之间的数据交换。CPU总是在一个总线事务结束后让出总线。
DMA控制器每传送一个数据,就使数据个数计数器减1。当该计数器为0时,表示传送过程结束。此结束信号被送到外设接口,引起外设接口向CPU发送一个“DMA传送结束”中断请求。
(3)DMA结束处理。当CPU接收到“DAM传送结束”中断请求后,就调出相应的中断服务程序进行DMA结束处理。
参考资料来源:百度百科-DMA方式
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)