/* ########################################################################################################################################################## */ /* # Includes #################################################################################################################################### Includes # */ /* ########################################################################################################################################################## */ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wpadded" #include #pragma GCC diagnostic pop #include #include "dma.h" /* ########################################################################################################################################################## */ /* # Global variables #################################################################################################################### Global variables # */ /* ########################################################################################################################################################## */ /* ########################################################################################################################################################## */ /* # Private define ######################################################################################################################## Private define # */ /* ########################################################################################################################################################## */ #define MEM2MEM(value) ((value << DMA_CCR_MEM2MEM_Pos) & DMA_CCR_MEM2MEM_Msk) #define PL(value) ((value << DMA_CCR_PL_Pos ) & DMA_CCR_PL_Msk ) #define MSIZE(value) ((value << DMA_CCR_MSIZE_Pos ) & DMA_CCR_MSIZE_Msk ) #define PSIZE(value) ((value << DMA_CCR_PSIZE_Pos ) & DMA_CCR_PSIZE_Msk ) #define MINC(value) ((value << DMA_CCR_MINC_Pos ) & DMA_CCR_MINC_Msk ) #define PINC(value) ((value << DMA_CCR_PINC_Pos ) & DMA_CCR_PINC_Msk ) #define CIRC(value) ((value << DMA_CCR_CIRC_Pos ) & DMA_CCR_CIRC_Msk ) #define DIR(value) ((value << DMA_CCR_DIR_Pos ) & DMA_CCR_DIR_Msk ) #define HTIE(value) ((value << DMA_CCR_HTIE_Pos ) & DMA_CCR_HTIE_Msk ) #define TEIE(value) ((value << DMA_CCR_TEIE_Pos ) & DMA_CCR_TEIE_Msk ) #define TCIE(value) ((value << DMA_CCR_TCIE_Pos ) & DMA_CCR_TCIE_Msk ) #define EN(value) ((value << DMA_CCR_EN_Pos ) & DMA_CCR_EN_Msk ) /* ########################################################################################################################################################## */ /* # Private macro ########################################################################################################################## Private macro # */ /* ########################################################################################################################################################## */ /* ########################################################################################################################################################## */ /* # Private typedef ###################################################################################################################### Private typedef # */ /* ########################################################################################################################################################## */ enum { DMA_CCR_PL_LOW = 0, DMA_CCR_PL_MEDIUM = 1, DMA_CCR_PL_HIGH = 2, DMA_CCR_PL_VERY_HIGH = 3 }; enum { DMA_CCR_SIZE_8 = 0, DMA_CCR_SIZE_16 = 1, DMA_CCR_SIZE_32 = 2 }; /* ########################################################################################################################################################## */ /* # Private functions prototypes ############################################################################################ Private functions prototypes # */ /* ########################################################################################################################################################## */ /* ########################################################################################################################################################## */ /* # ISR, Hook and Callback functions prototypes ############################################################## ISR, Hook and Callback functions prototypes # */ /* ########################################################################################################################################################## */ /* ########################################################################################################################################################## */ /* # Private variables ################################################################################################################## Private variables # */ /* ########################################################################################################################################################## */ /* ########################################################################################################################################################## */ /* # Private functions ################################################################################################################## Private functions # */ /* ########################################################################################################################################################## */ /* ########################################################################################################################################################## */ /* # Main, ISR, Hook and Callback functions ######################################################################## Main, ISR, Hook and Callback functions # */ /* ########################################################################################################################################################## */ /* ########################################################################################################################################################## */ /* # Public functions #################################################################################################################### Public functions # */ /* ########################################################################################################################################################## */ void STM32F1_DMA_init(void) { SET_BIT(RCC->AHBENR, RCC_AHBENR_DMA1EN); } void STM32F1_DMA1_configChannel1ForADC1(uint8_fast count, uint16 *memory) { CLEAR_BIT(DMA1_Channel1->CCR, DMA_CCR_EN); DMA1_Channel1->CPAR = (uint32) &(ADC1->DR); DMA1_Channel1->CMAR = (uint32) memory; DMA1_Channel1->CNDTR = count; DMA1_Channel1->CCR = MEM2MEM(0) | PL(DMA_CCR_PL_LOW) | MSIZE(DMA_CCR_SIZE_16) | PSIZE(DMA_CCR_SIZE_16)| MINC(1) | MINC(0) | CIRC(1) | DIR(0) | TEIE(0) |HTIE(0) | TCIE(0) | EN(0); } void STM32F1_DMA1_startChannel1(void) { CLEAR_BIT(DMA1_Channel1->CCR, DMA_CCR_EN); SET_BIT(DMA1_Channel1->CCR, DMA_CCR_EN); } /* ########################################################################################################################################################## */ /* EOF */