68 lines
2.6 KiB
C
68 lines
2.6 KiB
C
/******************************************************************//**
|
|
* @file drv_dma.c
|
|
* @brief USART driver of RT-Thread RTOS for EFM32
|
|
* COPYRIGHT (C) 2011, RT-Thread Development Team
|
|
* @author onelife
|
|
* @version 0.4 beta
|
|
**********************************************************************
|
|
* @section License
|
|
* The license and distribution terms for this file may be found in the file LICENSE in this
|
|
* distribution or at http://www.rt-thread.org/license/LICENSE
|
|
**********************************************************************
|
|
* @section Change Logs
|
|
* Date Author Notes
|
|
* 2010-12-23 onelife Initial creation for EFM32
|
|
*********************************************************************/
|
|
|
|
/******************************************************************//**
|
|
* @addtogroup efm32
|
|
* @{
|
|
*********************************************************************/
|
|
|
|
/* Includes -------------------------------------------------------------------*/
|
|
#include "board.h"
|
|
#include "drv_dma.h"
|
|
|
|
/* Private typedef -------------------------------------------------------------*/
|
|
/* Private define --------------------------------------------------------------*/
|
|
/* Private macro --------------------------------------------------------------*/
|
|
/* Private variables ------------------------------------------------------------*/
|
|
/** DMA control block, requires proper alignment. */
|
|
#if defined (__ICCARM__)
|
|
#pragma data_alignment=256
|
|
DMA_DESCRIPTOR_TypeDef dmaControlBlock[DMA_CHAN_COUNT * 2];
|
|
#elif defined (__CC_ARM)
|
|
DMA_DESCRIPTOR_TypeDef dmaControlBlock[DMA_CHAN_COUNT * 2] __attribute__ ((aligned(256)));
|
|
#elif defined (__GNUC__)
|
|
DMA_DESCRIPTOR_TypeDef dmaControlBlock[DMA_CHAN_COUNT * 2] __attribute__ ((aligned(256)));
|
|
#else
|
|
#error Undefined toolkit, need to define alignment
|
|
#endif
|
|
|
|
/* Private function prototypes ---------------------------------------------------*/
|
|
/* Private functions ------------------------------------------------------------*/
|
|
/******************************************************************//**
|
|
* @brief
|
|
* Initialize DMA hardware
|
|
*
|
|
* @details
|
|
*
|
|
* @note
|
|
*********************************************************************/
|
|
void rt_hw_dma_init(void)
|
|
{
|
|
DMA_Init_TypeDef dmaInit;
|
|
|
|
/* Reset */
|
|
DMA_Reset();
|
|
|
|
dmaInit.hprot = 0;
|
|
dmaInit.controlBlock = (DMA_DESCRIPTOR_TypeDef *)&dmaControlBlock;
|
|
DMA_Init(&dmaInit);
|
|
NVIC_SetPriority(DMA_IRQn, EFM32_IRQ_PRI_DEFAULT);
|
|
}
|
|
|
|
/******************************************************************//**
|
|
* @}
|
|
*********************************************************************/
|