DMA_Mode_Normal
时间: 2023-07-14 17:03:07 浏览: 56
DMA_Mode_Normal 是一种数据传输模式,它在计算机系统中用于进行直接内存访问(Direct Memory Access,DMA)操作。DMA_Mode_Normal 模式下,数据被从外设设备(如硬盘、光驱等)直接传输到内存,而无需经过处理器的干预。这种模式可以提高数据传输的效率,减轻处理器的负担。
相关问题
STM32F407的DMA的DMA_Mode_Circular与DMA_Mode_Normal的区别
STM32F407的DMA有两种传输模式:循环模式(DMA_Mode_Circular)和正常模式(DMA_Mode_Normal)。
在循环模式下,DMA通道会一直重复执行传输操作,直到被禁用或重新配置。这种模式适用于需要重复传输同样的数据或需要连续传输的应用场景。
在正常模式下,DMA通道只会执行一次传输操作,传输完成后就会停止。这种模式适用于只需要一次性传输数据的应用场景。
因此,根据应用场景的不同,可以选择合适的传输模式。
解释下面的代码:void MYDMA_Config(DMA_Channel_TypeDef* DMA_CHx,u32 cpar,u32 cmar,u16 cndtr) { RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); //使能DMA传输 DMA_DeInit(DMA_CHx); //将DMA的通道1寄存器重设为缺省值 DMA1_MEM_LEN = cndtr; DMA_InitStructure.DMA_PeripheralBaseAddr = cpar; //DMA外设基地址 DMA_InitStructure.DMA_MemoryBaseAddr = cmar; //DMA内存基地址 DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; //数据传输方向,从内存读取发送到外设 DMA_InitStructure.DMA_BufferSize = cndtr; //DMA通道的DMA缓存的大小 DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //外设地址寄存器不变 DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //内存地址寄存器递增 DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte; //数据宽度为8位 DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte; //数据宽度为8位 DMA_InitStructure.DMA_Mode = DMA_Mode_Normal; //工作在正常模式 DMA_InitStructure.DMA_Priority = DMA_Priority_Medium; //DMA通道 x拥有中优先级 DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; //DMA通道x没有设置为内存到内存传输 DMA_Init(DMA_CHx, &DMA_InitStructure); //根据DMA_InitStruct中指定的参数初始化DMA的通道USART1_Tx_DMA_Channel所标识的寄存器
这段代码是配置STM32的DMA通道,用于在外设和内存之间进行数据传输。具体的解释如下:
1. RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE):使能DMA传输,打开DMA1的时钟。
2. DMA_DeInit(DMA_CHx):将DMA的通道1寄存器重设为缺省值,清空DMA通道的所有寄存器。
3. DMA1_MEM_LEN = cndtr:设置DMA传输的数据长度,即DMA缓存的大小。
4. DMA_InitStructure.DMA_PeripheralBaseAddr = cpar:DMA外设基地址,表示数据从哪个外设开始传输。
5. DMA_InitStructure.DMA_MemoryBaseAddr = cmar:DMA内存基地址,表示数据传输到哪个内存地址。
6. DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC:数据传输方向,从外设读取数据发送到内存。
7. DMA_InitStructure.DMA_BufferSize = cndtr:DMA通道的DMA缓存的大小,与第3步设置的数据长度相同。
8. DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable:外设地址寄存器不变,表示数据从同一外设地址连续传输。
9. DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable:内存地址寄存器递增,表示数据传输到内存的地址连续递增。
10. DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte:数据宽度为8位,表示一次传输的数据大小为1字节。
11. DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte:数据宽度为8位,表示一次传输的数据大小为1字节。
12. DMA_InitStructure.DMA_Mode = DMA_Mode_Normal:工作在正常模式,表示数据传输完成后DMA通道自动停止。
13. DMA_InitStructure.DMA_Priority = DMA_Priority_Medium:DMA通道x拥有中优先级,表示在多个DMA通道同时传输数据时,DMA通道x会被优先处理。
14. DMA_InitStructure.DMA_M2M = DMA_M2M_Disable:DMA通道x没有设置为内存到内存传输,表示数据传输的源和目的地不是内存地址。
15. DMA_Init(DMA_CHx, &DMA_InitStructure):根据上述配置,初始化DMA通道x。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)