1 /* 2 * Copyright (c) 2006-2022, RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 * 2010-12-23 onelife Initial creation for EFM32 9 */ 10 11 /***************************************************************************//** 12 * @addtogroup efm32 13 * @{ 14 ******************************************************************************/ 15 16 /* Includes ------------------------------------------------------------------*/ 17 #include "board.h" 18 #include "drv_dma.h" 19 20 /* Private typedef -----------------------------------------------------------*/ 21 /* Private define ------------------------------------------------------------*/ 22 /* Private macro -------------------------------------------------------------*/ 23 /* Private variables ---------------------------------------------------------*/ 24 /** DMA control block, requires proper alignment. */ 25 #if defined (__ICCARM__) 26 #pragma data_alignment=256 27 DMA_DESCRIPTOR_TypeDef dmaControlBlock[DMA_CHAN_COUNT * 2]; 28 #elif defined (__CC_ARM) 29 DMA_DESCRIPTOR_TypeDef dmaControlBlock[DMA_CHAN_COUNT * 2] __attribute__ ((aligned(256))); 30 #elif defined (__GNUC__) 31 DMA_DESCRIPTOR_TypeDef dmaControlBlock[DMA_CHAN_COUNT * 2] __attribute__ ((aligned(256))); 32 #else 33 #error Undefined toolkit, need to define alignment 34 #endif 35 36 /* Private function prototypes -----------------------------------------------*/ 37 /* Private functions ---------------------------------------------------------*/ 38 /***************************************************************************//** 39 * @brief 40 * Initialize DMA hardware 41 * 42 * @details 43 * 44 * @note 45 ******************************************************************************/ rt_hw_dma_init(void)46void rt_hw_dma_init(void) 47 { 48 DMA_Init_TypeDef dmaInit; 49 50 /* Reset */ 51 DMA_Reset(); 52 53 dmaInit.hprot = 0; 54 dmaInit.controlBlock = (DMA_DESCRIPTOR_TypeDef *)&dmaControlBlock; 55 DMA_Init(&dmaInit); 56 NVIC_SetPriority(DMA_IRQn, EFM32_IRQ_PRI_DEFAULT); 57 } 58 59 /***************************************************************************//** 60 * @} 61 ******************************************************************************/ 62