/* * dma_ll.h * * Created on: Nov 21, 2019 * Author: abody */ #ifndef DMA_LL_H_ #define DMA_LL_H_ #include #include #include #ifdef __cplusplus extern "C" { #endif #ifndef __IO # define __IO volatile #endif // __IO typedef struct { __IO uint32_t CR; /*!< DMA stream x configuration register */ __IO uint32_t NDTR; /*!< DMA stream x number of data register */ __IO uint32_t PAR; /*!< DMA stream x peripheral address register */ __IO uint32_t M0AR; /*!< DMA stream x memory 0 address register */ __IO uint32_t M1AR; /*!< DMA stream x memory 1 address register */ __IO uint32_t FCR; /*!< DMA stream x FIFO control register */ } DMA_Stream_TypeDef; typedef struct { __IO uint32_t LISR; /*!< DMA low interrupt status register, Address offset: 0x00 */ __IO uint32_t HISR; /*!< DMA high interrupt status register, Address offset: 0x04 */ __IO uint32_t LIFCR; /*!< DMA low interrupt flag clear register, Address offset: 0x08 */ __IO uint32_t HIFCR; /*!< DMA high interrupt flag clear register, Address offset: 0x0C */ } DMA_TypeDef; #define DMA_SxCR_CHSEL_Pos (25U) #define DMA_SxCR_CHSEL_Msk (0x7UL << DMA_SxCR_CHSEL_Pos) /*!< 0x0E000000 */ #define DMA_SxCR_CHSEL DMA_SxCR_CHSEL_Msk #define DMA_SxCR_CHSEL_0 0x02000000U #define DMA_SxCR_CHSEL_1 0x04000000U #define DMA_SxCR_CHSEL_2 0x08000000U #define DMA_SxCR_MBURST_Pos (23U) #define DMA_SxCR_MBURST_Msk (0x3UL << DMA_SxCR_MBURST_Pos) /*!< 0x01800000 */ #define DMA_SxCR_MBURST DMA_SxCR_MBURST_Msk #define DMA_SxCR_MBURST_0 (0x1UL << DMA_SxCR_MBURST_Pos) /*!< 0x00800000 */ #define DMA_SxCR_MBURST_1 (0x2UL << DMA_SxCR_MBURST_Pos) /*!< 0x01000000 */ #define DMA_SxCR_PBURST_Pos (21U) #define DMA_SxCR_PBURST_Msk (0x3UL << DMA_SxCR_PBURST_Pos) /*!< 0x00600000 */ #define DMA_SxCR_PBURST DMA_SxCR_PBURST_Msk #define DMA_SxCR_PBURST_0 (0x1UL << DMA_SxCR_PBURST_Pos) /*!< 0x00200000 */ #define DMA_SxCR_PBURST_1 (0x2UL << DMA_SxCR_PBURST_Pos) /*!< 0x00400000 */ #define DMA_SxCR_CT_Pos (19U) #define DMA_SxCR_CT_Msk (0x1UL << DMA_SxCR_CT_Pos) /*!< 0x00080000 */ #define DMA_SxCR_CT DMA_SxCR_CT_Msk #define DMA_SxCR_DBM_Pos (18U) #define DMA_SxCR_DBM_Msk (0x1UL << DMA_SxCR_DBM_Pos) /*!< 0x00040000 */ #define DMA_SxCR_DBM DMA_SxCR_DBM_Msk #define DMA_SxCR_PL_Pos (16U) #define DMA_SxCR_PL_Msk (0x3UL << DMA_SxCR_PL_Pos) /*!< 0x00030000 */ #define DMA_SxCR_PL DMA_SxCR_PL_Msk #define DMA_SxCR_PL_0 (0x1UL << DMA_SxCR_PL_Pos) /*!< 0x00010000 */ #define DMA_SxCR_PL_1 (0x2UL << DMA_SxCR_PL_Pos) /*!< 0x00020000 */ #define DMA_SxCR_PINCOS_Pos (15U) #define DMA_SxCR_PINCOS_Msk (0x1UL << DMA_SxCR_PINCOS_Pos) /*!< 0x00008000 */ #define DMA_SxCR_PINCOS DMA_SxCR_PINCOS_Msk #define DMA_SxCR_MSIZE_Pos (13U) #define DMA_SxCR_MSIZE_Msk (0x3UL << DMA_SxCR_MSIZE_Pos) /*!< 0x00006000 */ #define DMA_SxCR_MSIZE DMA_SxCR_MSIZE_Msk #define DMA_SxCR_MSIZE_0 (0x1UL << DMA_SxCR_MSIZE_Pos) /*!< 0x00002000 */ #define DMA_SxCR_MSIZE_1 (0x2UL << DMA_SxCR_MSIZE_Pos) /*!< 0x00004000 */ #define DMA_SxCR_PSIZE_Pos (11U) #define DMA_SxCR_PSIZE_Msk (0x3UL << DMA_SxCR_PSIZE_Pos) /*!< 0x00001800 */ #define DMA_SxCR_PSIZE DMA_SxCR_PSIZE_Msk #define DMA_SxCR_PSIZE_0 (0x1UL << DMA_SxCR_PSIZE_Pos) /*!< 0x00000800 */ #define DMA_SxCR_PSIZE_1 (0x2UL << DMA_SxCR_PSIZE_Pos) /*!< 0x00001000 */ #define DMA_SxCR_MINC_Pos (10U) #define DMA_SxCR_MINC_Msk (0x1UL << DMA_SxCR_MINC_Pos) /*!< 0x00000400 */ #define DMA_SxCR_MINC DMA_SxCR_MINC_Msk #define DMA_SxCR_PINC_Pos (9U) #define DMA_SxCR_PINC_Msk (0x1UL << DMA_SxCR_PINC_Pos) /*!< 0x00000200 */ #define DMA_SxCR_PINC DMA_SxCR_PINC_Msk #define DMA_SxCR_CIRC_Pos (8U) #define DMA_SxCR_CIRC_Msk (0x1UL << DMA_SxCR_CIRC_Pos) /*!< 0x00000100 */ #define DMA_SxCR_CIRC DMA_SxCR_CIRC_Msk #define DMA_SxCR_DIR_Pos (6U) #define DMA_SxCR_DIR_Msk (0x3UL << DMA_SxCR_DIR_Pos) /*!< 0x000000C0 */ #define DMA_SxCR_DIR DMA_SxCR_DIR_Msk #define DMA_SxCR_DIR_0 (0x1UL << DMA_SxCR_DIR_Pos) /*!< 0x00000040 */ #define DMA_SxCR_DIR_1 (0x2UL << DMA_SxCR_DIR_Pos) /*!< 0x00000080 */ #define DMA_SxCR_PFCTRL_Pos (5U) #define DMA_SxCR_PFCTRL_Msk (0x1UL << DMA_SxCR_PFCTRL_Pos) /*!< 0x00000020 */ #define DMA_SxCR_PFCTRL DMA_SxCR_PFCTRL_Msk #define DMA_SxCR_TCIE_Pos (4U) #define DMA_SxCR_TCIE_Msk (0x1UL << DMA_SxCR_TCIE_Pos) /*!< 0x00000010 */ #define DMA_SxCR_TCIE DMA_SxCR_TCIE_Msk #define DMA_SxCR_HTIE_Pos (3U) #define DMA_SxCR_HTIE_Msk (0x1UL << DMA_SxCR_HTIE_Pos) /*!< 0x00000008 */ #define DMA_SxCR_HTIE DMA_SxCR_HTIE_Msk #define DMA_SxCR_TEIE_Pos (2U) #define DMA_SxCR_TEIE_Msk (0x1UL << DMA_SxCR_TEIE_Pos) /*!< 0x00000004 */ #define DMA_SxCR_TEIE DMA_SxCR_TEIE_Msk #define DMA_SxCR_DMEIE_Pos (1U) #define DMA_SxCR_DMEIE_Msk (0x1UL << DMA_SxCR_DMEIE_Pos) /*!< 0x00000002 */ #define DMA_SxCR_DMEIE DMA_SxCR_DMEIE_Msk #define DMA_SxCR_EN_Pos (0U) #define DMA_SxCR_EN_Msk (0x1UL << DMA_SxCR_EN_Pos) /*!< 0x00000001 */ #define DMA_SxCR_EN DMA_SxCR_EN_Msk /* Legacy defines */ #define DMA_SxCR_ACK_Pos (20U) #define DMA_SxCR_ACK_Msk (0x1UL << DMA_SxCR_ACK_Pos) /*!< 0x00100000 */ #define DMA_SxCR_ACK DMA_SxCR_ACK_Msk /******************** Bits definition for DMA_SxCNDTR register **************/ #define DMA_SxNDT_Pos (0U) #define DMA_SxNDT_Msk (0xFFFFUL << DMA_SxNDT_Pos) /*!< 0x0000FFFF */ #define DMA_SxNDT DMA_SxNDT_Msk #define DMA_SxNDT_0 (0x0001UL << DMA_SxNDT_Pos) /*!< 0x00000001 */ #define DMA_SxNDT_1 (0x0002UL << DMA_SxNDT_Pos) /*!< 0x00000002 */ #define DMA_SxNDT_2 (0x0004UL << DMA_SxNDT_Pos) /*!< 0x00000004 */ #define DMA_SxNDT_3 (0x0008UL << DMA_SxNDT_Pos) /*!< 0x00000008 */ #define DMA_SxNDT_4 (0x0010UL << DMA_SxNDT_Pos) /*!< 0x00000010 */ #define DMA_SxNDT_5 (0x0020UL << DMA_SxNDT_Pos) /*!< 0x00000020 */ #define DMA_SxNDT_6 (0x0040UL << DMA_SxNDT_Pos) /*!< 0x00000040 */ #define DMA_SxNDT_7 (0x0080UL << DMA_SxNDT_Pos) /*!< 0x00000080 */ #define DMA_SxNDT_8 (0x0100UL << DMA_SxNDT_Pos) /*!< 0x00000100 */ #define DMA_SxNDT_9 (0x0200UL << DMA_SxNDT_Pos) /*!< 0x00000200 */ #define DMA_SxNDT_10 (0x0400UL << DMA_SxNDT_Pos) /*!< 0x00000400 */ #define DMA_SxNDT_11 (0x0800UL << DMA_SxNDT_Pos) /*!< 0x00000800 */ #define DMA_SxNDT_12 (0x1000UL << DMA_SxNDT_Pos) /*!< 0x00001000 */ #define DMA_SxNDT_13 (0x2000UL << DMA_SxNDT_Pos) /*!< 0x00002000 */ #define DMA_SxNDT_14 (0x4000UL << DMA_SxNDT_Pos) /*!< 0x00004000 */ #define DMA_SxNDT_15 (0x8000UL << DMA_SxNDT_Pos) /*!< 0x00008000 */ /******************** Bits definition for DMA_SxFCR register ****************/ #define DMA_SxFCR_FEIE_Pos (7U) #define DMA_SxFCR_FEIE_Msk (0x1UL << DMA_SxFCR_FEIE_Pos) /*!< 0x00000080 */ #define DMA_SxFCR_FEIE DMA_SxFCR_FEIE_Msk #define DMA_SxFCR_FS_Pos (3U) #define DMA_SxFCR_FS_Msk (0x7UL << DMA_SxFCR_FS_Pos) /*!< 0x00000038 */ #define DMA_SxFCR_FS DMA_SxFCR_FS_Msk #define DMA_SxFCR_FS_0 (0x1UL << DMA_SxFCR_FS_Pos) /*!< 0x00000008 */ #define DMA_SxFCR_FS_1 (0x2UL << DMA_SxFCR_FS_Pos) /*!< 0x00000010 */ #define DMA_SxFCR_FS_2 (0x4UL << DMA_SxFCR_FS_Pos) /*!< 0x00000020 */ #define DMA_SxFCR_DMDIS_Pos (2U) #define DMA_SxFCR_DMDIS_Msk (0x1UL << DMA_SxFCR_DMDIS_Pos) /*!< 0x00000004 */ #define DMA_SxFCR_DMDIS DMA_SxFCR_DMDIS_Msk #define DMA_SxFCR_FTH_Pos (0U) #define DMA_SxFCR_FTH_Msk (0x3UL << DMA_SxFCR_FTH_Pos) /*!< 0x00000003 */ #define DMA_SxFCR_FTH DMA_SxFCR_FTH_Msk #define DMA_SxFCR_FTH_0 (0x1UL << DMA_SxFCR_FTH_Pos) /*!< 0x00000001 */ #define DMA_SxFCR_FTH_1 (0x2UL << DMA_SxFCR_FTH_Pos) /*!< 0x00000002 */ /******************** Bits definition for DMA_LISR register *****************/ #define DMA_LISR_TCIF3_Pos (27U) #define DMA_LISR_TCIF3_Msk (0x1UL << DMA_LISR_TCIF3_Pos) /*!< 0x08000000 */ #define DMA_LISR_TCIF3 DMA_LISR_TCIF3_Msk #define DMA_LISR_HTIF3_Pos (26U) #define DMA_LISR_HTIF3_Msk (0x1UL << DMA_LISR_HTIF3_Pos) /*!< 0x04000000 */ #define DMA_LISR_HTIF3 DMA_LISR_HTIF3_Msk #define DMA_LISR_TEIF3_Pos (25U) #define DMA_LISR_TEIF3_Msk (0x1UL << DMA_LISR_TEIF3_Pos) /*!< 0x02000000 */ #define DMA_LISR_TEIF3 DMA_LISR_TEIF3_Msk #define DMA_LISR_DMEIF3_Pos (24U) #define DMA_LISR_DMEIF3_Msk (0x1UL << DMA_LISR_DMEIF3_Pos) /*!< 0x01000000 */ #define DMA_LISR_DMEIF3 DMA_LISR_DMEIF3_Msk #define DMA_LISR_FEIF3_Pos (22U) #define DMA_LISR_FEIF3_Msk (0x1UL << DMA_LISR_FEIF3_Pos) /*!< 0x00400000 */ #define DMA_LISR_FEIF3 DMA_LISR_FEIF3_Msk #define DMA_LISR_TCIF2_Pos (21U) #define DMA_LISR_TCIF2_Msk (0x1UL << DMA_LISR_TCIF2_Pos) /*!< 0x00200000 */ #define DMA_LISR_TCIF2 DMA_LISR_TCIF2_Msk #define DMA_LISR_HTIF2_Pos (20U) #define DMA_LISR_HTIF2_Msk (0x1UL << DMA_LISR_HTIF2_Pos) /*!< 0x00100000 */ #define DMA_LISR_HTIF2 DMA_LISR_HTIF2_Msk #define DMA_LISR_TEIF2_Pos (19U) #define DMA_LISR_TEIF2_Msk (0x1UL << DMA_LISR_TEIF2_Pos) /*!< 0x00080000 */ #define DMA_LISR_TEIF2 DMA_LISR_TEIF2_Msk #define DMA_LISR_DMEIF2_Pos (18U) #define DMA_LISR_DMEIF2_Msk (0x1UL << DMA_LISR_DMEIF2_Pos) /*!< 0x00040000 */ #define DMA_LISR_DMEIF2 DMA_LISR_DMEIF2_Msk #define DMA_LISR_FEIF2_Pos (16U) #define DMA_LISR_FEIF2_Msk (0x1UL << DMA_LISR_FEIF2_Pos) /*!< 0x00010000 */ #define DMA_LISR_FEIF2 DMA_LISR_FEIF2_Msk #define DMA_LISR_TCIF1_Pos (11U) #define DMA_LISR_TCIF1_Msk (0x1UL << DMA_LISR_TCIF1_Pos) /*!< 0x00000800 */ #define DMA_LISR_TCIF1 DMA_LISR_TCIF1_Msk #define DMA_LISR_HTIF1_Pos (10U) #define DMA_LISR_HTIF1_Msk (0x1UL << DMA_LISR_HTIF1_Pos) /*!< 0x00000400 */ #define DMA_LISR_HTIF1 DMA_LISR_HTIF1_Msk #define DMA_LISR_TEIF1_Pos (9U) #define DMA_LISR_TEIF1_Msk (0x1UL << DMA_LISR_TEIF1_Pos) /*!< 0x00000200 */ #define DMA_LISR_TEIF1 DMA_LISR_TEIF1_Msk #define DMA_LISR_DMEIF1_Pos (8U) #define DMA_LISR_DMEIF1_Msk (0x1UL << DMA_LISR_DMEIF1_Pos) /*!< 0x00000100 */ #define DMA_LISR_DMEIF1 DMA_LISR_DMEIF1_Msk #define DMA_LISR_FEIF1_Pos (6U) #define DMA_LISR_FEIF1_Msk (0x1UL << DMA_LISR_FEIF1_Pos) /*!< 0x00000040 */ #define DMA_LISR_FEIF1 DMA_LISR_FEIF1_Msk #define DMA_LISR_TCIF0_Pos (5U) #define DMA_LISR_TCIF0_Msk (0x1UL << DMA_LISR_TCIF0_Pos) /*!< 0x00000020 */ #define DMA_LISR_TCIF0 DMA_LISR_TCIF0_Msk #define DMA_LISR_HTIF0_Pos (4U) #define DMA_LISR_HTIF0_Msk (0x1UL << DMA_LISR_HTIF0_Pos) /*!< 0x00000010 */ #define DMA_LISR_HTIF0 DMA_LISR_HTIF0_Msk #define DMA_LISR_TEIF0_Pos (3U) #define DMA_LISR_TEIF0_Msk (0x1UL << DMA_LISR_TEIF0_Pos) /*!< 0x00000008 */ #define DMA_LISR_TEIF0 DMA_LISR_TEIF0_Msk #define DMA_LISR_DMEIF0_Pos (2U) #define DMA_LISR_DMEIF0_Msk (0x1UL << DMA_LISR_DMEIF0_Pos) /*!< 0x00000004 */ #define DMA_LISR_DMEIF0 DMA_LISR_DMEIF0_Msk #define DMA_LISR_FEIF0_Pos (0U) #define DMA_LISR_FEIF0_Msk (0x1UL << DMA_LISR_FEIF0_Pos) /*!< 0x00000001 */ #define DMA_LISR_FEIF0 DMA_LISR_FEIF0_Msk /******************** Bits definition for DMA_HISR register *****************/ #define DMA_HISR_TCIF7_Pos (27U) #define DMA_HISR_TCIF7_Msk (0x1UL << DMA_HISR_TCIF7_Pos) /*!< 0x08000000 */ #define DMA_HISR_TCIF7 DMA_HISR_TCIF7_Msk #define DMA_HISR_HTIF7_Pos (26U) #define DMA_HISR_HTIF7_Msk (0x1UL << DMA_HISR_HTIF7_Pos) /*!< 0x04000000 */ #define DMA_HISR_HTIF7 DMA_HISR_HTIF7_Msk #define DMA_HISR_TEIF7_Pos (25U) #define DMA_HISR_TEIF7_Msk (0x1UL << DMA_HISR_TEIF7_Pos) /*!< 0x02000000 */ #define DMA_HISR_TEIF7 DMA_HISR_TEIF7_Msk #define DMA_HISR_DMEIF7_Pos (24U) #define DMA_HISR_DMEIF7_Msk (0x1UL << DMA_HISR_DMEIF7_Pos) /*!< 0x01000000 */ #define DMA_HISR_DMEIF7 DMA_HISR_DMEIF7_Msk #define DMA_HISR_FEIF7_Pos (22U) #define DMA_HISR_FEIF7_Msk (0x1UL << DMA_HISR_FEIF7_Pos) /*!< 0x00400000 */ #define DMA_HISR_FEIF7 DMA_HISR_FEIF7_Msk #define DMA_HISR_TCIF6_Pos (21U) #define DMA_HISR_TCIF6_Msk (0x1UL << DMA_HISR_TCIF6_Pos) /*!< 0x00200000 */ #define DMA_HISR_TCIF6 DMA_HISR_TCIF6_Msk #define DMA_HISR_HTIF6_Pos (20U) #define DMA_HISR_HTIF6_Msk (0x1UL << DMA_HISR_HTIF6_Pos) /*!< 0x00100000 */ #define DMA_HISR_HTIF6 DMA_HISR_HTIF6_Msk #define DMA_HISR_TEIF6_Pos (19U) #define DMA_HISR_TEIF6_Msk (0x1UL << DMA_HISR_TEIF6_Pos) /*!< 0x00080000 */ #define DMA_HISR_TEIF6 DMA_HISR_TEIF6_Msk #define DMA_HISR_DMEIF6_Pos (18U) #define DMA_HISR_DMEIF6_Msk (0x1UL << DMA_HISR_DMEIF6_Pos) /*!< 0x00040000 */ #define DMA_HISR_DMEIF6 DMA_HISR_DMEIF6_Msk #define DMA_HISR_FEIF6_Pos (16U) #define DMA_HISR_FEIF6_Msk (0x1UL << DMA_HISR_FEIF6_Pos) /*!< 0x00010000 */ #define DMA_HISR_FEIF6 DMA_HISR_FEIF6_Msk #define DMA_HISR_TCIF5_Pos (11U) #define DMA_HISR_TCIF5_Msk (0x1UL << DMA_HISR_TCIF5_Pos) /*!< 0x00000800 */ #define DMA_HISR_TCIF5 DMA_HISR_TCIF5_Msk #define DMA_HISR_HTIF5_Pos (10U) #define DMA_HISR_HTIF5_Msk (0x1UL << DMA_HISR_HTIF5_Pos) /*!< 0x00000400 */ #define DMA_HISR_HTIF5 DMA_HISR_HTIF5_Msk #define DMA_HISR_TEIF5_Pos (9U) #define DMA_HISR_TEIF5_Msk (0x1UL << DMA_HISR_TEIF5_Pos) /*!< 0x00000200 */ #define DMA_HISR_TEIF5 DMA_HISR_TEIF5_Msk #define DMA_HISR_DMEIF5_Pos (8U) #define DMA_HISR_DMEIF5_Msk (0x1UL << DMA_HISR_DMEIF5_Pos) /*!< 0x00000100 */ #define DMA_HISR_DMEIF5 DMA_HISR_DMEIF5_Msk #define DMA_HISR_FEIF5_Pos (6U) #define DMA_HISR_FEIF5_Msk (0x1UL << DMA_HISR_FEIF5_Pos) /*!< 0x00000040 */ #define DMA_HISR_FEIF5 DMA_HISR_FEIF5_Msk #define DMA_HISR_TCIF4_Pos (5U) #define DMA_HISR_TCIF4_Msk (0x1UL << DMA_HISR_TCIF4_Pos) /*!< 0x00000020 */ #define DMA_HISR_TCIF4 DMA_HISR_TCIF4_Msk #define DMA_HISR_HTIF4_Pos (4U) #define DMA_HISR_HTIF4_Msk (0x1UL << DMA_HISR_HTIF4_Pos) /*!< 0x00000010 */ #define DMA_HISR_HTIF4 DMA_HISR_HTIF4_Msk #define DMA_HISR_TEIF4_Pos (3U) #define DMA_HISR_TEIF4_Msk (0x1UL << DMA_HISR_TEIF4_Pos) /*!< 0x00000008 */ #define DMA_HISR_TEIF4 DMA_HISR_TEIF4_Msk #define DMA_HISR_DMEIF4_Pos (2U) #define DMA_HISR_DMEIF4_Msk (0x1UL << DMA_HISR_DMEIF4_Pos) /*!< 0x00000004 */ #define DMA_HISR_DMEIF4 DMA_HISR_DMEIF4_Msk #define DMA_HISR_FEIF4_Pos (0U) #define DMA_HISR_FEIF4_Msk (0x1UL << DMA_HISR_FEIF4_Pos) /*!< 0x00000001 */ #define DMA_HISR_FEIF4 DMA_HISR_FEIF4_Msk /******************** Bits definition for DMA_LIFCR register ****************/ #define DMA_LIFCR_CTCIF3_Pos (27U) #define DMA_LIFCR_CTCIF3_Msk (0x1UL << DMA_LIFCR_CTCIF3_Pos) /*!< 0x08000000 */ #define DMA_LIFCR_CTCIF3 DMA_LIFCR_CTCIF3_Msk #define DMA_LIFCR_CHTIF3_Pos (26U) #define DMA_LIFCR_CHTIF3_Msk (0x1UL << DMA_LIFCR_CHTIF3_Pos) /*!< 0x04000000 */ #define DMA_LIFCR_CHTIF3 DMA_LIFCR_CHTIF3_Msk #define DMA_LIFCR_CTEIF3_Pos (25U) #define DMA_LIFCR_CTEIF3_Msk (0x1UL << DMA_LIFCR_CTEIF3_Pos) /*!< 0x02000000 */ #define DMA_LIFCR_CTEIF3 DMA_LIFCR_CTEIF3_Msk #define DMA_LIFCR_CDMEIF3_Pos (24U) #define DMA_LIFCR_CDMEIF3_Msk (0x1UL << DMA_LIFCR_CDMEIF3_Pos) /*!< 0x01000000 */ #define DMA_LIFCR_CDMEIF3 DMA_LIFCR_CDMEIF3_Msk #define DMA_LIFCR_CFEIF3_Pos (22U) #define DMA_LIFCR_CFEIF3_Msk (0x1UL << DMA_LIFCR_CFEIF3_Pos) /*!< 0x00400000 */ #define DMA_LIFCR_CFEIF3 DMA_LIFCR_CFEIF3_Msk #define DMA_LIFCR_CTCIF2_Pos (21U) #define DMA_LIFCR_CTCIF2_Msk (0x1UL << DMA_LIFCR_CTCIF2_Pos) /*!< 0x00200000 */ #define DMA_LIFCR_CTCIF2 DMA_LIFCR_CTCIF2_Msk #define DMA_LIFCR_CHTIF2_Pos (20U) #define DMA_LIFCR_CHTIF2_Msk (0x1UL << DMA_LIFCR_CHTIF2_Pos) /*!< 0x00100000 */ #define DMA_LIFCR_CHTIF2 DMA_LIFCR_CHTIF2_Msk #define DMA_LIFCR_CTEIF2_Pos (19U) #define DMA_LIFCR_CTEIF2_Msk (0x1UL << DMA_LIFCR_CTEIF2_Pos) /*!< 0x00080000 */ #define DMA_LIFCR_CTEIF2 DMA_LIFCR_CTEIF2_Msk #define DMA_LIFCR_CDMEIF2_Pos (18U) #define DMA_LIFCR_CDMEIF2_Msk (0x1UL << DMA_LIFCR_CDMEIF2_Pos) /*!< 0x00040000 */ #define DMA_LIFCR_CDMEIF2 DMA_LIFCR_CDMEIF2_Msk #define DMA_LIFCR_CFEIF2_Pos (16U) #define DMA_LIFCR_CFEIF2_Msk (0x1UL << DMA_LIFCR_CFEIF2_Pos) /*!< 0x00010000 */ #define DMA_LIFCR_CFEIF2 DMA_LIFCR_CFEIF2_Msk #define DMA_LIFCR_CTCIF1_Pos (11U) #define DMA_LIFCR_CTCIF1_Msk (0x1UL << DMA_LIFCR_CTCIF1_Pos) /*!< 0x00000800 */ #define DMA_LIFCR_CTCIF1 DMA_LIFCR_CTCIF1_Msk #define DMA_LIFCR_CHTIF1_Pos (10U) #define DMA_LIFCR_CHTIF1_Msk (0x1UL << DMA_LIFCR_CHTIF1_Pos) /*!< 0x00000400 */ #define DMA_LIFCR_CHTIF1 DMA_LIFCR_CHTIF1_Msk #define DMA_LIFCR_CTEIF1_Pos (9U) #define DMA_LIFCR_CTEIF1_Msk (0x1UL << DMA_LIFCR_CTEIF1_Pos) /*!< 0x00000200 */ #define DMA_LIFCR_CTEIF1 DMA_LIFCR_CTEIF1_Msk #define DMA_LIFCR_CDMEIF1_Pos (8U) #define DMA_LIFCR_CDMEIF1_Msk (0x1UL << DMA_LIFCR_CDMEIF1_Pos) /*!< 0x00000100 */ #define DMA_LIFCR_CDMEIF1 DMA_LIFCR_CDMEIF1_Msk #define DMA_LIFCR_CFEIF1_Pos (6U) #define DMA_LIFCR_CFEIF1_Msk (0x1UL << DMA_LIFCR_CFEIF1_Pos) /*!< 0x00000040 */ #define DMA_LIFCR_CFEIF1 DMA_LIFCR_CFEIF1_Msk #define DMA_LIFCR_CTCIF0_Pos (5U) #define DMA_LIFCR_CTCIF0_Msk (0x1UL << DMA_LIFCR_CTCIF0_Pos) /*!< 0x00000020 */ #define DMA_LIFCR_CTCIF0 DMA_LIFCR_CTCIF0_Msk #define DMA_LIFCR_CHTIF0_Pos (4U) #define DMA_LIFCR_CHTIF0_Msk (0x1UL << DMA_LIFCR_CHTIF0_Pos) /*!< 0x00000010 */ #define DMA_LIFCR_CHTIF0 DMA_LIFCR_CHTIF0_Msk #define DMA_LIFCR_CTEIF0_Pos (3U) #define DMA_LIFCR_CTEIF0_Msk (0x1UL << DMA_LIFCR_CTEIF0_Pos) /*!< 0x00000008 */ #define DMA_LIFCR_CTEIF0 DMA_LIFCR_CTEIF0_Msk #define DMA_LIFCR_CDMEIF0_Pos (2U) #define DMA_LIFCR_CDMEIF0_Msk (0x1UL << DMA_LIFCR_CDMEIF0_Pos) /*!< 0x00000004 */ #define DMA_LIFCR_CDMEIF0 DMA_LIFCR_CDMEIF0_Msk #define DMA_LIFCR_CFEIF0_Pos (0U) #define DMA_LIFCR_CFEIF0_Msk (0x1UL << DMA_LIFCR_CFEIF0_Pos) /*!< 0x00000001 */ #define DMA_LIFCR_CFEIF0 DMA_LIFCR_CFEIF0_Msk /******************** Bits definition for DMA_HIFCR register ****************/ #define DMA_HIFCR_CTCIF7_Pos (27U) #define DMA_HIFCR_CTCIF7_Msk (0x1UL << DMA_HIFCR_CTCIF7_Pos) /*!< 0x08000000 */ #define DMA_HIFCR_CTCIF7 DMA_HIFCR_CTCIF7_Msk #define DMA_HIFCR_CHTIF7_Pos (26U) #define DMA_HIFCR_CHTIF7_Msk (0x1UL << DMA_HIFCR_CHTIF7_Pos) /*!< 0x04000000 */ #define DMA_HIFCR_CHTIF7 DMA_HIFCR_CHTIF7_Msk #define DMA_HIFCR_CTEIF7_Pos (25U) #define DMA_HIFCR_CTEIF7_Msk (0x1UL << DMA_HIFCR_CTEIF7_Pos) /*!< 0x02000000 */ #define DMA_HIFCR_CTEIF7 DMA_HIFCR_CTEIF7_Msk #define DMA_HIFCR_CDMEIF7_Pos (24U) #define DMA_HIFCR_CDMEIF7_Msk (0x1UL << DMA_HIFCR_CDMEIF7_Pos) /*!< 0x01000000 */ #define DMA_HIFCR_CDMEIF7 DMA_HIFCR_CDMEIF7_Msk #define DMA_HIFCR_CFEIF7_Pos (22U) #define DMA_HIFCR_CFEIF7_Msk (0x1UL << DMA_HIFCR_CFEIF7_Pos) /*!< 0x00400000 */ #define DMA_HIFCR_CFEIF7 DMA_HIFCR_CFEIF7_Msk #define DMA_HIFCR_CTCIF6_Pos (21U) #define DMA_HIFCR_CTCIF6_Msk (0x1UL << DMA_HIFCR_CTCIF6_Pos) /*!< 0x00200000 */ #define DMA_HIFCR_CTCIF6 DMA_HIFCR_CTCIF6_Msk #define DMA_HIFCR_CHTIF6_Pos (20U) #define DMA_HIFCR_CHTIF6_Msk (0x1UL << DMA_HIFCR_CHTIF6_Pos) /*!< 0x00100000 */ #define DMA_HIFCR_CHTIF6 DMA_HIFCR_CHTIF6_Msk #define DMA_HIFCR_CTEIF6_Pos (19U) #define DMA_HIFCR_CTEIF6_Msk (0x1UL << DMA_HIFCR_CTEIF6_Pos) /*!< 0x00080000 */ #define DMA_HIFCR_CTEIF6 DMA_HIFCR_CTEIF6_Msk #define DMA_HIFCR_CDMEIF6_Pos (18U) #define DMA_HIFCR_CDMEIF6_Msk (0x1UL << DMA_HIFCR_CDMEIF6_Pos) /*!< 0x00040000 */ #define DMA_HIFCR_CDMEIF6 DMA_HIFCR_CDMEIF6_Msk #define DMA_HIFCR_CFEIF6_Pos (16U) #define DMA_HIFCR_CFEIF6_Msk (0x1UL << DMA_HIFCR_CFEIF6_Pos) /*!< 0x00010000 */ #define DMA_HIFCR_CFEIF6 DMA_HIFCR_CFEIF6_Msk #define DMA_HIFCR_CTCIF5_Pos (11U) #define DMA_HIFCR_CTCIF5_Msk (0x1UL << DMA_HIFCR_CTCIF5_Pos) /*!< 0x00000800 */ #define DMA_HIFCR_CTCIF5 DMA_HIFCR_CTCIF5_Msk #define DMA_HIFCR_CHTIF5_Pos (10U) #define DMA_HIFCR_CHTIF5_Msk (0x1UL << DMA_HIFCR_CHTIF5_Pos) /*!< 0x00000400 */ #define DMA_HIFCR_CHTIF5 DMA_HIFCR_CHTIF5_Msk #define DMA_HIFCR_CTEIF5_Pos (9U) #define DMA_HIFCR_CTEIF5_Msk (0x1UL << DMA_HIFCR_CTEIF5_Pos) /*!< 0x00000200 */ #define DMA_HIFCR_CTEIF5 DMA_HIFCR_CTEIF5_Msk #define DMA_HIFCR_CDMEIF5_Pos (8U) #define DMA_HIFCR_CDMEIF5_Msk (0x1UL << DMA_HIFCR_CDMEIF5_Pos) /*!< 0x00000100 */ #define DMA_HIFCR_CDMEIF5 DMA_HIFCR_CDMEIF5_Msk #define DMA_HIFCR_CFEIF5_Pos (6U) #define DMA_HIFCR_CFEIF5_Msk (0x1UL << DMA_HIFCR_CFEIF5_Pos) /*!< 0x00000040 */ #define DMA_HIFCR_CFEIF5 DMA_HIFCR_CFEIF5_Msk #define DMA_HIFCR_CTCIF4_Pos (5U) #define DMA_HIFCR_CTCIF4_Msk (0x1UL << DMA_HIFCR_CTCIF4_Pos) /*!< 0x00000020 */ #define DMA_HIFCR_CTCIF4 DMA_HIFCR_CTCIF4_Msk #define DMA_HIFCR_CHTIF4_Pos (4U) #define DMA_HIFCR_CHTIF4_Msk (0x1UL << DMA_HIFCR_CHTIF4_Pos) /*!< 0x00000010 */ #define DMA_HIFCR_CHTIF4 DMA_HIFCR_CHTIF4_Msk #define DMA_HIFCR_CTEIF4_Pos (3U) #define DMA_HIFCR_CTEIF4_Msk (0x1UL << DMA_HIFCR_CTEIF4_Pos) /*!< 0x00000008 */ #define DMA_HIFCR_CTEIF4 DMA_HIFCR_CTEIF4_Msk #define DMA_HIFCR_CDMEIF4_Pos (2U) #define DMA_HIFCR_CDMEIF4_Msk (0x1UL << DMA_HIFCR_CDMEIF4_Pos) /*!< 0x00000004 */ #define DMA_HIFCR_CDMEIF4 DMA_HIFCR_CDMEIF4_Msk #define DMA_HIFCR_CFEIF4_Pos (0U) #define DMA_HIFCR_CFEIF4_Msk (0x1UL << DMA_HIFCR_CFEIF4_Pos) /*!< 0x00000001 */ #define DMA_HIFCR_CFEIF4 DMA_HIFCR_CFEIF4_Msk /****************** Bit definition for DMA_SxPAR register ********************/ #define DMA_SxPAR_PA_Pos (0U) #define DMA_SxPAR_PA_Msk (0xFFFFFFFFUL << DMA_SxPAR_PA_Pos) /*!< 0xFFFFFFFF */ #define DMA_SxPAR_PA DMA_SxPAR_PA_Msk /*!< Peripheral Address */ /****************** Bit definition for DMA_SxM0AR register ********************/ #define DMA_SxM0AR_M0A_Pos (0U) #define DMA_SxM0AR_M0A_Msk (0xFFFFFFFFUL << DMA_SxM0AR_M0A_Pos) /*!< 0xFFFFFFFF */ #define DMA_SxM0AR_M0A DMA_SxM0AR_M0A_Msk /*!< Memory Address */ /****************** Bit definition for DMA_SxM1AR register ********************/ #define DMA_SxM1AR_M1A_Pos (0U) #define DMA_SxM1AR_M1A_Msk (0xFFFFFFFFUL << DMA_SxM1AR_M1A_Pos) /*!< 0xFFFFFFFF */ #define DMA_SxM1AR_M1A DMA_SxM1AR_M1A_Msk /*!< Memory Address */ /*----------- cut here -----------*/ #define LL_DMA_STREAM_0 0x00000000U #define LL_DMA_STREAM_1 0x00000001U #define LL_DMA_STREAM_2 0x00000002U #define LL_DMA_STREAM_3 0x00000003U #define LL_DMA_STREAM_4 0x00000004U #define LL_DMA_STREAM_5 0x00000005U #define LL_DMA_STREAM_6 0x00000006U #define LL_DMA_STREAM_7 0x00000007U #define LL_DMA_STREAM_ALL 0xFFFF0000U /** @defgroup DMA_LL_EC_DIRECTION DIRECTION * @{ */ #define LL_DMA_DIRECTION_PERIPH_TO_MEMORY 0x00000000U /*!< Peripheral to memory direction */ #define LL_DMA_DIRECTION_MEMORY_TO_PERIPH DMA_SxCR_DIR_0 /*!< Memory to peripheral direction */ #define LL_DMA_DIRECTION_MEMORY_TO_MEMORY DMA_SxCR_DIR_1 /*!< Memory to memory direction */ /** * @} */ /** @defgroup DMA_LL_EC_MODE MODE * @{ */ #define LL_DMA_MODE_NORMAL 0x00000000U /*!< Normal Mode */ #define LL_DMA_MODE_CIRCULAR DMA_SxCR_CIRC /*!< Circular Mode */ #define LL_DMA_MODE_PFCTRL DMA_SxCR_PFCTRL /*!< Peripheral flow control mode */ /** * @} */ /** @defgroup DMA_LL_EC_DOUBLEBUFFER_MODE DOUBLEBUFFER MODE * @{ */ #define LL_DMA_DOUBLEBUFFER_MODE_DISABLE 0x00000000U /*!< Disable double buffering mode */ #define LL_DMA_DOUBLEBUFFER_MODE_ENABLE DMA_SxCR_DBM /*!< Enable double buffering mode */ /** * @} */ /** @defgroup DMA_LL_EC_PERIPH PERIPH * @{ */ #define LL_DMA_PERIPH_NOINCREMENT 0x00000000U /*!< Peripheral increment mode Disable */ #define LL_DMA_PERIPH_INCREMENT DMA_SxCR_PINC /*!< Peripheral increment mode Enable */ /** * @} */ /** @defgroup DMA_LL_EC_MEMORY MEMORY * @{ */ #define LL_DMA_MEMORY_NOINCREMENT 0x00000000U /*!< Memory increment mode Disable */ #define LL_DMA_MEMORY_INCREMENT DMA_SxCR_MINC /*!< Memory increment mode Enable */ /** * @} */ /** @defgroup DMA_LL_EC_PDATAALIGN PDATAALIGN * @{ */ #define LL_DMA_PDATAALIGN_BYTE 0x00000000U /*!< Peripheral data alignment : Byte */ #define LL_DMA_PDATAALIGN_HALFWORD DMA_SxCR_PSIZE_0 /*!< Peripheral data alignment : HalfWord */ #define LL_DMA_PDATAALIGN_WORD DMA_SxCR_PSIZE_1 /*!< Peripheral data alignment : Word */ /** * @} */ /** @defgroup DMA_LL_EC_MDATAALIGN MDATAALIGN * @{ */ #define LL_DMA_MDATAALIGN_BYTE 0x00000000U /*!< Memory data alignment : Byte */ #define LL_DMA_MDATAALIGN_HALFWORD DMA_SxCR_MSIZE_0 /*!< Memory data alignment : HalfWord */ #define LL_DMA_MDATAALIGN_WORD DMA_SxCR_MSIZE_1 /*!< Memory data alignment : Word */ /** * @} */ /** @defgroup DMA_LL_EC_OFFSETSIZE OFFSETSIZE * @{ */ #define LL_DMA_OFFSETSIZE_PSIZE 0x00000000U /*!< Peripheral increment offset size is linked to the PSIZE */ #define LL_DMA_OFFSETSIZE_FIXEDTO4 DMA_SxCR_PINCOS /*!< Peripheral increment offset size is fixed to 4 (32-bit alignment) */ /** * @} */ /** @defgroup DMA_LL_EC_PRIORITY PRIORITY * @{ */ #define LL_DMA_PRIORITY_LOW 0x00000000U /*!< Priority level : Low */ #define LL_DMA_PRIORITY_MEDIUM DMA_SxCR_PL_0 /*!< Priority level : Medium */ #define LL_DMA_PRIORITY_HIGH DMA_SxCR_PL_1 /*!< Priority level : High */ #define LL_DMA_PRIORITY_VERYHIGH DMA_SxCR_PL /*!< Priority level : Very_High */ /** * @} */ /** @defgroup DMA_LL_EC_CHANNEL CHANNEL * @{ */ #define LL_DMA_CHANNEL_0 0x00000000U /* Select Channel0 of DMA Instance */ #define LL_DMA_CHANNEL_1 DMA_SxCR_CHSEL_0 /* Select Channel1 of DMA Instance */ #define LL_DMA_CHANNEL_2 DMA_SxCR_CHSEL_1 /* Select Channel2 of DMA Instance */ #define LL_DMA_CHANNEL_3 (DMA_SxCR_CHSEL_0 | DMA_SxCR_CHSEL_1) /* Select Channel3 of DMA Instance */ #define LL_DMA_CHANNEL_4 DMA_SxCR_CHSEL_2 /* Select Channel4 of DMA Instance */ #define LL_DMA_CHANNEL_5 (DMA_SxCR_CHSEL_2 | DMA_SxCR_CHSEL_0) /* Select Channel5 of DMA Instance */ #define LL_DMA_CHANNEL_6 (DMA_SxCR_CHSEL_2 | DMA_SxCR_CHSEL_1) /* Select Channel6 of DMA Instance */ #define LL_DMA_CHANNEL_7 (DMA_SxCR_CHSEL_2 | DMA_SxCR_CHSEL_1 | DMA_SxCR_CHSEL_0) /* Select Channel7 of DMA Instance */ /** * @} */ /** @defgroup DMA_LL_EC_MBURST MBURST * @{ */ #define LL_DMA_MBURST_SINGLE 0x00000000U /*!< Memory burst single transfer configuration */ #define LL_DMA_MBURST_INC4 DMA_SxCR_MBURST_0 /*!< Memory burst of 4 beats transfer configuration */ #define LL_DMA_MBURST_INC8 DMA_SxCR_MBURST_1 /*!< Memory burst of 8 beats transfer configuration */ #define LL_DMA_MBURST_INC16 (DMA_SxCR_MBURST_0 | DMA_SxCR_MBURST_1) /*!< Memory burst of 16 beats transfer configuration */ /** * @} */ /** @defgroup DMA_LL_EC_PBURST PBURST * @{ */ #define LL_DMA_PBURST_SINGLE 0x00000000U /*!< Peripheral burst single transfer configuration */ #define LL_DMA_PBURST_INC4 DMA_SxCR_PBURST_0 /*!< Peripheral burst of 4 beats transfer configuration */ #define LL_DMA_PBURST_INC8 DMA_SxCR_PBURST_1 /*!< Peripheral burst of 8 beats transfer configuration */ #define LL_DMA_PBURST_INC16 (DMA_SxCR_PBURST_0 | DMA_SxCR_PBURST_1) /*!< Peripheral burst of 16 beats transfer configuration */ /** * @} */ /** @defgroup DMA_LL_FIFOMODE DMA_LL_FIFOMODE * @{ */ #define LL_DMA_FIFOMODE_DISABLE 0x00000000U /*!< FIFO mode disable (direct mode is enabled) */ #define LL_DMA_FIFOMODE_ENABLE DMA_SxFCR_DMDIS /*!< FIFO mode enable */ /** * @} */ /** @defgroup DMA_LL_EC_FIFOSTATUS_0 FIFOSTATUS 0 * @{ */ #define LL_DMA_FIFOSTATUS_0_25 0x00000000U /*!< 0 < fifo_level < 1/4 */ #define LL_DMA_FIFOSTATUS_25_50 DMA_SxFCR_FS_0 /*!< 1/4 < fifo_level < 1/2 */ #define LL_DMA_FIFOSTATUS_50_75 DMA_SxFCR_FS_1 /*!< 1/2 < fifo_level < 3/4 */ #define LL_DMA_FIFOSTATUS_75_100 (DMA_SxFCR_FS_1 | DMA_SxFCR_FS_0) /*!< 3/4 < fifo_level < full */ #define LL_DMA_FIFOSTATUS_EMPTY DMA_SxFCR_FS_2 /*!< FIFO is empty */ #define LL_DMA_FIFOSTATUS_FULL (DMA_SxFCR_FS_2 | DMA_SxFCR_FS_0) /*!< FIFO is full */ /** * @} */ /** @defgroup DMA_LL_EC_FIFOTHRESHOLD FIFOTHRESHOLD * @{ */ #define LL_DMA_FIFOTHRESHOLD_1_4 0x00000000U /*!< FIFO threshold 1 quart full configuration */ #define LL_DMA_FIFOTHRESHOLD_1_2 DMA_SxFCR_FTH_0 /*!< FIFO threshold half full configuration */ #define LL_DMA_FIFOTHRESHOLD_3_4 DMA_SxFCR_FTH_1 /*!< FIFO threshold 3 quarts full configuration */ #define LL_DMA_FIFOTHRESHOLD_FULL DMA_SxFCR_FTH /*!< FIFO threshold full configuration */ /** * @} */ /** @defgroup DMA_LL_EC_CURRENTTARGETMEM CURRENTTARGETMEM * @{ */ #define LL_DMA_CURRENTTARGETMEM0 0x00000000U /*!< Set CurrentTarget Memory to Memory 0 */ #define LL_DMA_CURRENTTARGETMEM1 DMA_SxCR_CT /*!< Set CurrentTarget Memory to Memory 1 */ /*----------- cut here -----------*/ extern DMA_TypeDef *DMA1; extern DMA_TypeDef *DMA2; void LL_DMA_EnableIT_TC(DMA_TypeDef *DMAx, uint32_t Stream); void LL_DMA_EnableIT_TE(DMA_TypeDef *DMAx, uint32_t Stream); void LL_DMA_SetM2MDstAddress(DMA_TypeDef* DMAx, uint32_t Stream, uint32_t MemoryAddress); void LL_DMA_SetM2MSrcAddress(DMA_TypeDef* DMAx, uint32_t Stream, uint32_t MemoryAddress); void LL_DMA_SetDataLength(DMA_TypeDef* DMAx, uint32_t Stream, uint32_t NbData); uint32_t LL_DMA_GetDataLength(DMA_TypeDef* DMAx, uint32_t Stream); void LL_DMA_EnableStream(DMA_TypeDef *DMAx, uint32_t Stream); void LL_DMA_DisableStream(DMA_TypeDef *DMAx, uint32_t Stream); void LL_DMA_ConfigAddresses(DMA_TypeDef* DMAx, uint32_t Stream, uint32_t SrcAddress, uint32_t DstAddress, uint32_t Direction); DECLARE_MOCK(LL_DMA_EnableIT_TC); DECLARE_MOCK(LL_DMA_EnableIT_TE); DECLARE_MOCK(LL_DMA_SetM2MDstAddress); DECLARE_MOCK(LL_DMA_SetM2MSrcAddress); DECLARE_MOCK(LL_DMA_SetDataLength); DECLARE_MOCK(LL_DMA_GetDataLength); DECLARE_MOCK(LL_DMA_EnableStream); DECLARE_MOCK(LL_DMA_DisableStream); DECLARE_MOCK(LL_DMA_ConfigAddresses); #ifdef __cplusplus } #endif #endif /* DMA_LL_H_ */