硬件:EFM32GG230512
工具:keil5

DMA实验
DMA测试,内存间传输

初始化

/*********************************************Copyright (c)***********************************************
** File name:               adc.c
** Created by:              Gui
** Version:                 V1.0.0
** Descriptions:            DMA测试,内存间传输
*********************************************************************************************************/
#include "dma.h"/* *  DMA控制块,必须根据通道数进行地址对齐*/
#if (DMA_CHAN_COUNT > 16)
#define DMA_CONTROL_BLOCK_ALIGNMENT 1024
#elif (DMA_CHAN_COUNT > 8)
#define DMA_CONTROL_BLOCK_ALIGNMENT 512
#elif (DMA_CHAN_COUNT > 4)
#define DMA_CONTROL_BLOCK_ALIGNMENT 256
#elif (DMA_CHAN_COUNT > 2)
#define DMA_CONTROL_BLOCK_ALIGNMENT 128
#endif/* *  根据不同的编译器对齐起始地址*/
#if defined (__ICCARM__)
#pragma data_alignment=DMA_CONTROL_BLOCK_ALIGNMENTDMA_DESCRIPTOR_TypeDef dmaControlBlock[DMA_CHAN_COUNT * 2];
#elif defined (__CC_ARM)DMA_DESCRIPTOR_TypeDef dmaControlBlock[DMA_CHAN_COUNT * 2] \__attribute__ ((aligned(DMA_CONTROL_BLOCK_ALIGNMENT)));
#elif defined (__GNUC__)DMA_DESCRIPTOR_TypeDef dmaControlBlock[DMA_CHAN_COUNT * 2] \__attribute__ ((aligned(DMA_CONTROL_BLOCK_ALIGNMENT)));
#else
#error Undefined toolkit, need to define alignment
#endifDMA_CB_TypeDef    test_cb;//DMA回调结构体
volatile bool   transfer_flag;//传输标志//channel:传输通道
//primary:是否使用primary结构体
//user:用户附加处理
void test_callback(unsigned int uiChannel, bool bPrimary, void *vpUser)
{ transfer_flag = false;                                           /* 清除表示传输完成             */
}void dma_init(void){DMA_Init_TypeDef        tDmaInit;DMA_CfgChannel_TypeDef  tChnlCfg;DMA_CfgDescr_TypeDef    tDescrCfg;CMU_ClockEnable(cmuClock_DMA, true);  //初始化DMA tDmaInit.hprot        = 0;tDmaInit.controlBlock = dmaControlBlock;DMA_Init(&tDmaInit);//设置回调函数 test_cb.cbFunc  = test_callback;test_cb.userPtr   = NULL;//设置通道tChnlCfg.highPri   = false;tChnlCfg.enableInt = true;tChnlCfg.select    = 0;tChnlCfg.cb      = &(test_cb);DMA_CfgChannel(0, &tChnlCfg);//设置通道描述符tDescrCfg.dstInc  = dmaDataInc4;tDescrCfg.srcInc  = dmaDataInc4;tDescrCfg.size    = dmaDataSize4;tDescrCfg.arbRate = dmaArbitrate4;tDescrCfg.hprot   = 0;DMA_CfgDescr(0, true, &tDescrCfg);
}

main

/*********************************************Copyright (c)***********************************************
** File name:                   main.c
** Created by:                  Gui
** Version:                     V1.0.0
** Descriptions:                DMA测试,内存间传输
*********************************************************************************************************/
#include "system.h"
#include "em_device.h"
#include "em_chip.h"
#include "em_cmu.h"
#include "em_int.h"
#include "delay.h"
#include "dma.h"
#include "bsp_led.h"uint32_t g_chip_tick = 0;uint32_t transfer_data[10] = {0,1,2,3,4,5,6,7,8,9};//传输数据
uint32_t ram_data[10];//存放数据数组int main(){transfer_flag = true;CMU_ClockEnable(cmuClock_HFPER, true); //前置芯片设置CMU_ClockEnable(cmuClock_GPIO, true);if(SysTick_Config(SystemCoreClockGet()/1000))while(1);//1ms的systick中断led_init();//PD4 PD5dma_init();DMA_ActivateAuto(0,true,(void *)&ram_data,(void *)&transfer_data,10 - 1);g_chip_tick = g_rtc_rtcFreq;LED0_ON;LED1_OFF;INT_Disable();//关闭中断while(transfer_flag);INT_Enable();//开启中断while(1){if(g_rtc_rtcFreq - g_chip_tick > 1000 || g_chip_tick > g_rtc_rtcFreq){LED0_OFF;LED1_ON;break;}}while(1){}
}

EFM32例程——DMA相关推荐

  1. EFM32例程——AES

    硬件:EFM32GG230512 工具:keil5 AES实验 AES测试,AES加解密测试 打开时钟 /*********************************************Co ...

  2. EFM32例程——LETIMER

    硬件:EFM32GG230512 工具:keil5 LETIMER实验 LETIMER测试,输出PWM波 初始化 /****************************************** ...

  3. EFM32例程——新建template工程

    硬件:EFM32GG230512 工具:keil5 Simplicity Studio : 是Silicon Labs的一款开发软件,在里面有很多例程和工具. 1.创建CMSIS文件夹.这个文件夹存放 ...

  4. EFM32例程——ADC

    硬件:EFM32GG230512 工具:keil5 ADC实验 简单测量电压 初始化 /******************************************************** ...

  5. EFM32例程——ACMP

    硬件:EFM32GG230512 工具:keil5 ACMP实验 ACMP测试,ACMP测量判断输入电压高低 输出ACM_OUT获得高低信号 初始化 /************************ ...

  6. EFM32例程——DAC

    硬件:EFM32GG230512 工具:keil5 DAC实验 DAC测试,使用DAC输出固定电压值 初始化 /******************************************** ...

  7. EFM32例程——CMU

    硬件:EFM32GG230512 工具:keil5 CMU实验 CMU测试,输出时钟 初始化 /*********************************************Copyrig ...

  8. EFM32例程——EMU

    硬件:EFM32GG230512 工具:keil5 EMU实验 EMU测试,进入em4休眠和唤醒 main /********************************************* ...

  9. EFM32例程——GPIO

    硬件:EFM32GG230512 工具:keil5 GPIO实验 描述:简单的led闪烁. 具体参考em_gpio.c和em_gpio.h文件. IO初始化 //GPIO_DriveMode_Type ...

最新文章

  1. BeautifulSoup的高级应用 之 contents children descendants string strings stripped_strings
  2. python3生成器_Python3 生成器
  3. 在Java 8 Lambda中创建自己的循环结构
  4. USB Camera摄像头(UVC 与 gspca)
  5. OpenCV_05 形态学操作:连通性+腐蚀和膨胀+开闭运算+礼帽和黑帽
  6. highcharts php 动态数据,php动态传数据到highcharts的方法
  7. Unity StartCoroutine 和 yield return 深入研究
  8. 实战演练:MySQL RPM包定制化制作全过程
  9. putty连接TPYBord V202开发板教程
  10. 订阅个人Blog最新评论的方法
  11. 字符串的首地址做形参不能将变化传递回主函数
  12. WPF之基于路径的动画
  13. ST电机库 MCSDK-FUL_5.4.4 下载
  14. 分享四款H5怀旧小游戏魔塔+伏魔记+三国霸业+寻仙纪
  15. Arduino ESP8266 通过WiFi、串口与DMX灯光通讯
  16. python3.5安装PyHook3
  17. 一个高手的趋势交易、量化交易系统思路
  18. Hive05:Hive的进阶操作01之数据库和表的操作、数据类型
  19. VC中GDI绘图技术基础知识:hdc设备环境句柄,坐标系
  20. Vue2基础-el与data的两种写法(HTML版)

热门文章

  1. 骚操作!Excel 3步 给证件照换底色?
  2. 如何搭建自己的web服务器
  3. tp703n怎么做无线打印服务器,TP-Link_TL-WR703N网络打印服务器.txt
  4. 测试、Sqlit、ListView、对话框
  5. 贝尔商道赚钱思维36道第07道:乡愿,德之贼也
  6. 模仿58到家百度地图地址选择效果
  7. 今天的您,别再流泪.
  8. 人物转手绘之绝世佳人
  9. 2021-2027全球与中国草药提取物市场现状及未来发展趋势
  10. android常用地图坐标转换,室内地图Android 坐标转换说明 - 蜂鸟云