stm32f103c8r6 dma 测试

main.h文件
#include "stm32f10x.h" //STM32头文件
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "dma.h"


int main (void){//主程序
    u8 i;
    //RCC_Configuration(); //时钟设置
    uart_init(115200); //串口初始化(参数是波特率) 
  printf("STM32 DMA TEST!\r\n");
    printf("dataA:");
    for(i=0;i     {
        printf("%d ",dataA[i]);
    }
     printf("\r\n");
    
    printf("dataB:");
    for(i=0;i     {
        printf("%d ",dataB[i]);
    }
     printf("\r\n");
    
  DMA_config((u32) dataA,(u32) dataB,Size);
    
    printf("dataB:");
    for(i=0;i     {
        printf("%d ",dataB[i]);
    }
     printf("\r\n");
    
    while(1){
//        printf("STM32F103 hell word"); //纯字符串发送数据到串口
//        printf("\r\n");
//        delay_s(1); //延时1秒

    }
}

dma.h文件

#ifndef __DMA_H
#define __DMA_H
#include "stm32f10x.h" //STM32头文件
#define Size  8
extern const    u8 dataA[8]; //相当外设地址
extern u8 dataB[8];  //相当内存地址

void DMA_config(u32 src_addr,u32 dst_addr,u32  data_size);


#endif

dma.c文件

#include "dma.h"
#include "stm32f10x.h" //STM32头文件

 const    u8 dataA[8]={1,2,3,4,5,6,7,8}; //相当外设地址
 u8 dataB[8];  //相当内存地址
void DMA_config(u32 src_addr,u32 dst_addr,u32  data_size)
{
     DMA_InitTypeDef  DMA_InitStructure;
    
   /* Enable DMA1 clock */
     RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);

     /* DMA1 channel1 configuration */
   DMA_DeInit(DMA1_Channel1);
   DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)src_addr;//外设站点起始的地址
   DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)dst_addr;//存储器的地址
   DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;//传输方向 从外设站点搬到存储器站点
   DMA_InitStructure.DMA_BufferSize = data_size;//数据量(字节数小于65535)
   DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Enable;//外设地址需要自增
   DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;//地址需要自增
   DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;//宽度 字节
   DMA_InitStructure.DMA_MemoryDataSize = DMA_PeripheralDataSize_Byte;
   DMA_InitStructure.DMA_Mode = DMA_Mode_Normal; //单次
   DMA_InitStructure.DMA_Priority = DMA_Priority_High;//优先级设置高级
   DMA_InitStructure.DMA_M2M = DMA_M2M_Enable;//使能 存储器到存储器的搬运
   DMA_Init(DMA1_Channel1, &DMA_InitStructure);
    
   DMA_Cmd(DMA1_Channel1, ENABLE);

}

你可能感兴趣的:(stm32,嵌入式硬件,单片机)