旧诗行 发表于 2023-7-5 16:52:04

关于stm32f407的DMA实现两个存储器数据传输

本帖最后由 旧诗行 于 2023-7-5 17:13 编辑

有无大佬帮我看看为啥没反应


void LDMA_Init(u32 A,u32 B)
{
            RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA1,ENABLE);
      
                        DMA_InitTypeDef DMA_InitStructure;
                        DMA_InitStructure.DMA_Memory0BaseAddr=A;
                        DMA_InitStructure.DMA_MemoryBurst=DMA_MemoryBurst_Single;
                  DMA_InitStructure.DMA_MemoryDataSize=DMA_MemoryDataSize_Byte;
                        DMA_InitStructure.DMA_PeripheralBaseAddr=B;
                        DMA_InitStructure.DMA_PeripheralBurst=DMA_PeripheralBurst_Single;
                        DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_Byte;
                        DMA_InitStructure.DMA_PeripheralInc=DMA_PeripheralInc_Enable;
            
                        DMA_InitStructure.DMA_BufferSize=4;
                  DMA_InitStructure.DMA_Channel=DMA_Channel_0;
                        DMA_InitStructure.DMA_DIR=DMA_DIR_MemoryToMemory;
                        DMA_InitStructure.DMA_FIFOMode=DMA_FIFOMode_Disable;
                        DMA_InitStructure.DMA_FIFOThreshold=DMA_FIFOThreshold_Full;
                        DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Enable;
                        DMA_InitStructure.DMA_Mode=DMA_Mode_Normal;
                        DMA_InitStructure.DMA_Priority=DMA_Priority_Medium;
      
            DMA_Init(DMA1_Stream0,&DMA_InitStructure);
                        DMA_Cmd(DMA1_Stream0,ENABLE);
}




#include "stm32f4xx.h"
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "lcd.h"
#include "DMA.h"

void Delay(__IO uint32_t nCount);

void Delay(__IO uint32_t nCount)
{
while(nCount--){}
}

int main(void)
{
u8 data1[]={1,3,5,7};
      u8 data2[]={0,0,0,0};
      
      
      
      char lcd_id;                              //存放LCD ID字符串
      NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
      delay_init(168);      //初始化延时函数
      uart_init(115200);                //初始化串口波特率为115200
      
      
      

         LCD_Init();         //初始化LCD FSMC接口
      POINT_COLOR=RED;      //画笔颜色:红色
      LCD_Clear(BLACK);

      
      
          LCD_ShowxNum(30,190,(u32)data1,1,24,0);
                LCD_ShowxNum(60,190,(u32)data1,1,24,0);
                LCD_ShowxNum(90,190,(u32)data1,1,24,0);
                LCD_ShowxNum(120,190,(u32)data1,1,24,0);
                        
                LCD_ShowxNum(30,220,(u32)data2,1,24,0);
                LCD_ShowxNum(60,220,(u32)data2,1,24,0);
                LCD_ShowxNum(90,220,(u32)data2,1,24,0);
                LCD_ShowxNum(120,220,(u32)data2,1,24,0);
               
                LDMA_Init((u32)data1,(u32)data2);
                        
                LCD_ShowxNum(30,250,(u32)data1,1,24,0);
                LCD_ShowxNum(60,250,(u32)data1,1,24,0);
                LCD_ShowxNum(90,250,(u32)data1,1,24,0);
                LCD_ShowxNum(120,250,(u32)data1,1,24,0);
                        
                LCD_ShowxNum(30,280,(u32)data2,1,24,0);
                LCD_ShowxNum(60,280,(u32)data2,1,24,0);
                LCD_ShowxNum(90,280,(u32)data2,1,24,0);
                LCD_ShowxNum(120,280,(u32)data2,1,24,0);


}

旧诗行 发表于 2023-7-5 16:52:57

有人帮忙看看嘛,太难了

eric2013 发表于 2023-7-6 09:29:54

使用存储器到存储器模式不支持循环传输模式,同时必须开启 FIFO,即不支持直接模式(关闭了 FIFO就是直接模式 Direct mode)
页: [1]
查看完整版本: 关于stm32f407的DMA实现两个存储器数据传输