Răsfoiți Sursa

Board.c增加了DMA初始化相关设置

wangqiang 6 ani în urmă
părinte
comite
d93fdb1ea8
1 a modificat fișierele cu 35 adăugiri și 2 ștergeri
  1. 35 2
      bsp/imxrt/imxrt1064-nxp-evk/board/board.c

+ 35 - 2
bsp/imxrt/imxrt1064-nxp-evk/board/board.c

@@ -13,6 +13,22 @@
 #include "board.h"
 #include "pin_mux.h"
 
+#ifdef BSP_USING_DMA
+#include "fsl_dmamux.h"
+#include "fsl_edma.h"
+#endif
+
+#define NVIC_PRIORITYGROUP_0         0x00000007U /*!< 0 bits for pre-emption priority
+                                                      4 bits for subpriority */
+#define NVIC_PRIORITYGROUP_1         0x00000006U /*!< 1 bits for pre-emption priority
+                                                      3 bits for subpriority */
+#define NVIC_PRIORITYGROUP_2         0x00000005U /*!< 2 bits for pre-emption priority
+                                                      2 bits for subpriority */
+#define NVIC_PRIORITYGROUP_3         0x00000004U /*!< 3 bits for pre-emption priority
+                                                      1 bits for subpriority */
+#define NVIC_PRIORITYGROUP_4         0x00000003U /*!< 4 bits for pre-emption priority
+                                                      0 bits for subpriority */
+
 /* MPU configuration. */
 static void BOARD_ConfigMPU(void)
 {
@@ -52,7 +68,7 @@ static void BOARD_ConfigMPU(void)
     MPU->RBAR = ARM_MPU_RBAR(6, 0x20200000U);
     MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_256KB);
 
-#if defined(SDRAM_MPU_INIT)
+#if defined(BSP_USING_SDRAM)
     /* Region 7 setting */
     MPU->RBAR = ARM_MPU_RBAR(7, 0x80000000U);
     MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_32MB);
@@ -83,15 +99,32 @@ void SysTick_Handler(void)
     rt_interrupt_leave();
 }
 
-/* This function will initial STM32 board. */
+#ifdef BSP_USING_DMA
+void imxrt_dma_init(void)
+{
+    edma_config_t config;
+
+    DMAMUX_Init(DMAMUX);
+    EDMA_GetDefaultConfig(&config);
+    EDMA_Init(DMA0, &config);
+}
+#endif
+/**
+ * This function will initial rt1050 board.
+ */
 void rt_hw_board_init()
 {
     BOARD_ConfigMPU();
     BOARD_InitPins();
     BOARD_BootClockRUN();
 
+    NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);
     SysTick_Config(SystemCoreClock / RT_TICK_PER_SECOND);
 
+#ifdef BSP_USING_DMA
+    imxrt_dma_init();
+#endif
+
 #ifdef RT_USING_HEAP
     rt_system_heap_init((void *)HEAP_BEGIN, (void *)HEAP_END);
 #endif