关于stm32串口使用DMA接收数据的问题

关于stm32串口使用DMA接收数据的问题,第1张

USART_DMACmd(USART2,USART_DMAReq_Tx,ENABLE)//使能串口2的DMA发送

/*等待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传送的基本 *** 作如下:

1、外设可通过DMA控制器向CPU发出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方式


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11222258.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-14
下一篇2023-05-14

发表评论

登录后才能评论

评论列表(0条)

    保存