胖纸带你嘿嘿嘿

一个搞嵌入式开发的胖纸

STM32 DMA flag definitions 的含义

STM32F429使用HAL库实现DMA发送UART串口数据时的代码如下:

MYDMA_USART_Transmit(&UART1_Handler,(uint8_t*)tx,i);//启动DMA传输方式
	while(!__HAL_DMA_GET_FLAG(&UART1TxDMA_Handler,DMA_FLAG_TCIF3_7));//等待DMA2_Steam7传输完成
	__HAL_DMA_CLEAR_FLAG(&UART1TxDMA_Handler,DMA_FLAG_TCIF3_7);//清除DMA2_Steam7传输完成标志
	HAL_UART_DMAStop(&UART1_Handler);//传输完成以后关闭串口DMA

其中的“DMA_FLAG_TCIF3_7”表示什么含义呢?我们在“STM32F4XX HAL驱动说明书”中找到了部分答案:

DMA flag definitions
DMA_FLAG_FEIF0_4    
DMA_FLAG_DMEIF0_4    
DMA_FLAG_TEIF0_4    
DMA_FLAG_HTIF0_4    
DMA_FLAG_TCIF0_4    
DMA_FLAG_FEIF1_5    
DMA_FLAG_DMEIF1_5    
DMA_FLAG_TEIF1_5    
DMA_FLAG_HTIF1_5    
DMA_FLAG_TCIF1_5    
DMA_FLAG_FEIF2_6    
DMA_FLAG_DMEIF2_6    
DMA_FLAG_TEIF2_6    
DMA_FLAG_HTIF2_6    
DMA_FLAG_TCIF2_6    
DMA_FLAG_FEIF3_7    
DMA_FLAG_DMEIF3_7    
DMA_FLAG_TEIF3_7    
DMA_FLAG_HTIF3_7    
DMA_FLAG_TCIF3_7

原来,这些都是“DMA flag definitions”,那么这些“DMA flag definitions”分别都代表什么含义呢?我们在“STM32F4XX中文参考手册”中找到了剩下的答案:

STM32 DMA flag definitions 的含义 嵌入式 第1张

STM32 DMA flag definitions 的含义 嵌入式 第2张

STM32 DMA flag definitions 的含义 嵌入式 第3张


STM32 DMA flag definitions 的含义 嵌入式 第4张

STM32 DMA flag definitions 的含义 嵌入式 第5张

总结:根据以上寄存器的定义,我们可以看出,所谓的“DMA flag definitions”也就是对应着这些寄存器,比如“DMA_FLAG_TCIF3_7”就代表着“DMA_LISR(低位)”中“数据流3”或者“DMA_HISR(高位)”中“数据流7”

  • 评论列表:
  •  访客
     发布于 2018-11-13 00:19:36  回复该评论
  • 你好!请问他的通道数不是从0开始算的吗?DMA_FLAG_TCIF3_7这个是代表DMA2_Steam7传输完成的吗?
    •  itdoy
       发布于 2018-11-13 11:53:35  回复该评论
    • 你好,通道数是从0开始算的,所以通道4是用数字3表示,通道1是用数字0表示。
    •  itdoy
       发布于 2018-11-13 11:54:19  回复该评论
    • DMA_FLAG_TCIF3_7这个是代表DMA2_Steam7传输完成
      •  访客
         发布于 2018-11-28 09:23:11  回复该评论
      • 拜托,你不懂就别误导人行不行,DMA_FLAG_TCIF3_7就是表示通道3和通道7,你自己到底有没有写过程序去验证的。
        •  访客
           发布于 2018-12-04 15:37:46  回复该评论
        • 用了DMA1的5个通道接收5路串口数据,通道2和通道6的中断标志都判断DMA_FLAG_TCIF2_6?
        •  itdoy
           发布于 2018-12-19 15:55:14  回复该评论
        • 你好,谢谢指正,已经更正内容。

发表评论:

Powered By itdoy

Copyright itdoy . All Rights Reserved.备案号:琼ICP备15000663号-1