From 5e8bd0e3525e6af01dbe8bb098578798c6817e97 Mon Sep 17 00:00:00 2001
From: xC0000005 <32139633+xC0000005@users.noreply.github.com>
Date: Fri, 12 Jul 2019 22:36:47 -0700
Subject: [PATCH 01/18] Add basic DMA handlers.
---
cores/arduino/stm32/dma.c | 370 ++++++++++++++++++++++++++++++++++++++
cores/arduino/stm32/dma.h | 59 ++++++
2 files changed, 429 insertions(+)
create mode 100644 cores/arduino/stm32/dma.c
create mode 100644 cores/arduino/stm32/dma.h
diff --git a/cores/arduino/stm32/dma.c b/cores/arduino/stm32/dma.c
new file mode 100644
index 0000000000..57a7365531
--- /dev/null
+++ b/cores/arduino/stm32/dma.c
@@ -0,0 +1,370 @@
+/**
+ ******************************************************************************
+ * @file dma.c
+ * @author xC0000005
+ * @version V1.0.0
+ * @date 12-July-2019
+ * @brief provide dma callbacks for dma
+ *
+ ******************************************************************************
+ * @attention
+ *
+ *
© COPYRIGHT(c) 2019 STMicroelectronics
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * 3. Neither the name of STMicroelectronics nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ ******************************************************************************
+ */
+#include
+#include "dma.h"
+
+#define NC -1
+
+typedef enum
+{
+#ifdef DMA1_Channel1
+ DMA1_CHANNEL1_INDEX,
+#endif
+#ifdef DMA1_Channel2
+ DMA1_CHANNEL2_INDEX,
+#endif
+#ifdef DMA1_Channel3
+ DMA1_CHANNEL3_INDEX,
+#endif
+#ifdef DMA1_Channel4
+ DMA1_CHANNEL4_INDEX,
+#endif
+#ifdef DMA1_Channel5
+ DMA1_CHANNEL5_INDEX,
+#endif
+#ifdef DMA1_Channel6
+ DMA1_CHANNEL6_INDEX,
+#endif
+#ifdef DMA1_Channel7
+ DMA1_CHANNEL7_INDEX,
+#endif
+#ifdef DMA2_Channel1
+ DMA2_CHANNEL1_INDEX,
+#endif
+#ifdef DMA2_Channel2
+ DMA2_CHANNEL2_INDEX,
+#endif
+#ifdef DMA2_Channel3
+ DMA2_CHANNEL3_INDEX,
+#endif
+#ifdef DMA2_Channel4
+ DMA2_CHANNEL4_INDEX,
+#endif
+#ifdef DMA2_Channel5
+ DMA2_CHANNEL5_INDEX,
+#endif
+#ifdef DMA2_Channel6
+ DMA2_CHANNEL6_INDEX,
+#endif
+#ifdef DMA2_Channel7
+ DMA2_CHANNEL7_INDEX,
+#endif
+#ifdef DMA2_Channel8
+ DMA2_CHANNEL8_INDEX,
+#endif
+ DMA_CHANNEL_NUM
+} dma_index_t;
+
+static DMA_HandleTypeDef *dma_handles[DMA_CHANNEL_NUM] = {NULL};
+
+/**
+ * @brief This function determines the dma index
+ * @param instance : dma instance
+ * @retval None
+ */
+static dma_index_t get_dma_index(DMA_Channel_TypeDef *instance) {
+ switch ((uint32_t)instance) {
+ #ifdef DMA1_Channel1
+ case (uint32_t)DMA1_Channel1:
+ return DMA1_CHANNEL1_INDEX;
+ #endif
+ #ifdef DMA1_Channel2
+ case (uint32_t)DMA1_Channel2:
+ return DMA1_CHANNEL2_INDEX;
+ #endif
+ #ifdef DMA1_Channel3
+ case (uint32_t)DMA1_Channel3:
+ return DMA1_CHANNEL3_INDEX;
+ #endif
+ #ifdef DMA1_Channel4
+ case (uint32_t)DMA1_Channel4:
+ return DMA1_CHANNEL4_INDEX;
+ #endif
+ #ifdef DMA1_Channel5
+ case (uint32_t)DMA1_Channel5:
+ return DMA1_CHANNEL5_INDEX;
+ #endif
+ #ifdef DMA1_Channel6
+ case (uint32_t)DMA1_Channel6:
+ return DMA1_CHANNEL6_INDEX;
+ #endif
+ #ifdef DMA1_Channel7
+ case (uint32_t)DMA1_Channel7:
+ return DMA1_CHANNEL7_INDEX;
+ #endif
+ #ifdef DMA2_Channel1
+ case (uint32_t)DMA2_Channel1:
+ return DMA2_CHANNEL1_INDEX;
+ #endif
+ #ifdef DMA2_Channel2
+ case (uint32_t)DMA2_Channel2:
+ return DMA2_CHANNEL2_INDEX;
+ #endif
+ #ifdef DMA2_Channel3
+ case (uint32_t)DMA2_Channel3:
+ return DMA2_CHANNEL3_INDEX;
+ #endif
+ #ifdef DMA2_Channel4
+ case (uint32_t)DMA2_Channel4:
+ return DMA2_CHANNEL4_INDEX;
+ #endif
+ #ifdef DMA2_Channel5
+ case (uint32_t)DMA2_Channel5:
+ return DMA2_CHANNEL5_INDEX;
+ #endif
+ #ifdef DMA2_Channel6
+ case (uint32_t)DMA2_Channel6:
+ return DMA2_CHANNEL6_INDEX;
+ #endif
+ #ifdef DMA2_Channel7
+ case (uint32_t)DMA2_Channel7:
+ return DMA2_CHANNEL7_INDEX;
+ #endif
+ #ifdef DMA2_Channel8
+ case (uint32_t)DMA2_Channel8:
+ return DMA2_CHANNEL8_INDEX;
+ #endif
+ default:
+ return NC;
+ }
+}
+
+/**
+ * @brief This function will store the DMA handle in the appropriate slot
+ * @param dma_handle : dma handle
+ * @retval None
+ */
+void prepare_dma(DMA_HandleTypeDef *dma_handle) {
+ dma_index_t dma_index = get_dma_index(dma_handle->Instance);
+ if (dma_index == NC) {
+ return;
+ }
+ dma_handles[dma_index] = dma_handle;
+}
+
+/**
+ * @brief This function will remove the DMA handle from the appropriate slot
+ * @param dma_handle : dma handle
+ * @retval None
+ */
+void end_dma(DMA_HandleTypeDef *dma_handle) {
+ dma_index_t dma_index = get_dma_index(dma_handle->Instance);
+ if (dma_index == NC) {
+ return;
+ }
+ dma_handles[dma_index] = NULL;
+}
+
+#ifdef DMA1_Channel1
+/**
+ * @brief DMA1 Channel1 IRQHandler
+ * @param None
+ * @retval None
+ */
+void DMA1_Channel1_IRQHandler() {
+ if (dma_handles[DMA1_CHANNEL1_INDEX] != NULL)
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL1_INDEX]);
+}
+#endif
+
+#ifdef DMA1_Channel2
+/**
+ * @brief DMA1 Channel2 IRQHandler
+ * @param None
+ * @retval None
+ */
+void DMA1_Channel2_IRQHandler() {
+ if (dma_handles[DMA1_CHANNEL2_INDEX] != NULL)
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL2_INDEX]);
+}
+#endif
+
+#ifdef DMA1_Channel3
+/**
+ * @brief DMA1 Channel3 IRQHandler
+ * @param None
+ * @retval None
+ */
+void DMA1_Channel3_IRQHandler() {
+ if (dma_handles[DMA1_CHANNEL3_INDEX] != NULL)
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL3_INDEX]);
+}
+#endif
+
+#ifdef DMA1_Channel4
+/**
+ * @brief DMA1 Channel4 IRQHandler
+ * @param None
+ * @retval None
+ */
+void DMA1_Channel4_IRQHandler() {
+ if (dma_handles[DMA1_CHANNEL4_INDEX] != NULL)
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL4_INDEX]);
+}
+#endif
+
+#ifdef DMA1_Channel5
+/**
+ * @brief DMA1 Channel5 IRQHandler
+ * @param None
+ * @retval None
+ */
+void DMA1_Channel5_IRQHandler() {
+ if (dma_handles[DMA1_CHANNEL5_INDEX] != NULL)
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL5_INDEX]);
+}
+#endif
+
+#ifdef DMA1_Channel6/**
+ * @brief DMA1 Channel6 IRQHandler
+ * @param None
+ * @retval None
+ */
+void DMA1_Channel6_IRQHandler() {
+ if (dma_handles[DMA1_CHANNEL6_INDEX] != NULL)
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL6_INDEX]);
+}
+#endif
+
+#ifdef DMA1_Channel7
+/**
+ * @brief DMA1 Channel3 IRQHandler
+ * @param None
+ * @retval None
+ */
+void DMA1_Channel7_IRQHandler() {
+ if (dma_handles[DMA1_CHANNEL7_INDEX] != NULL)
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL7_INDEX]);
+}
+#endif
+
+#ifdef DMA2_Channel1
+/**
+ * @brief DMA2 Channel1 IRQHandler
+ * @param None
+ * @retval None
+ */
+void DMA2_Channel1_IRQHandler() {
+ if (dma_handles[DMA2_CHANNEL1_INDEX] != NULL)
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL1_INDEX]);
+}
+#endif
+
+#ifdef DMA2_Channel2
+/**
+ * @brief DMA2 Channel2 IRQHandler
+ * @param None
+ * @retval None
+ */
+void DMA2_Channel1_IRQHandler() {
+ if (dma_handles[DMA2_CHANNEL2_INDEX] != NULL)
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL2_INDEX]);
+}
+#endif
+
+#ifdef DMA2_Channel3
+/**
+ * @brief DMA2 Channel3 IRQHandler
+ * @param None
+ * @retval None
+ */
+void DMA2_Channel3_IRQHandler() {
+ if (dma_handles[DMA2_CHANNEL3_INDEX] != NULL)
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL3_INDEX]);
+}
+#endif
+
+#ifdef DMA2_Channel4
+/**
+ * @brief DMA2 Channel4 IRQHandler
+ * @param None
+ * @retval None
+ */
+void DMA2_Channel4_IRQHandler() {
+ if (dma_handles[DMA2_CHANNEL4_INDEX] != NULL)
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL4_INDEX]);
+}
+#endif
+
+#ifdef DMA2_Channel5
+/**
+ * @brief DMA2 Channel5 IRQHandler
+ * @param None
+ * @retval None
+ */
+void DMA2_Channel5_IRQHandler() {
+ if (dma_handles[DMA2_CHANNEL5_INDEX] != NULL)
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL5_INDEX]);
+}
+#endif
+
+#ifdef DMA2_Channel6
+/**
+ * @brief DMA2 Channel6 IRQHandler
+ * @param None
+ * @retval None
+ */
+void DMA2_Channel6_IRQHandler() {
+ if (dma_handles[DMA2_CHANNEL6_INDEX] != NULL)
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL6_INDEX]);
+}
+#endif
+
+#ifdef DMA2_Channel7
+/**
+ * @brief DMA2 Channel7 IRQHandler
+ * @param None
+ * @retval None
+ */
+void DMA2_Channel7_IRQHandler() {
+ if (dma_handles[DMA2_CHANNEL7_INDEX] != NULL)
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL7_INDEX]);
+}
+#endif
+
+#ifdef DMA2_Channel8
+/**
+ * @brief DMA2 Channel8 IRQHandler
+ * @param None
+ * @retval None
+ */
+void DMA2_Channel8_IRQHandler() {
+ if (dma_handles[DMA2_CHANNEL8_INDEX] != NULL)
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL8_INDEX]);
+}
+#endif
diff --git a/cores/arduino/stm32/dma.h b/cores/arduino/stm32/dma.h
new file mode 100644
index 0000000000..2391e6e8b4
--- /dev/null
+++ b/cores/arduino/stm32/dma.h
@@ -0,0 +1,59 @@
+/**
+ ******************************************************************************
+ * @file dma.h
+ * @author xC0000005
+ * @version V1.0.0
+ * @date 12-July-2019
+ * @brief provide dma callbacks for dma
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * © COPYRIGHT(c) 2019 STMicroelectronics
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * 3. Neither the name of STMicroelectronics nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ ******************************************************************************
+ */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __DMA_H
+#define __DMA_H
+
+#include
+
+/**
+ * @brief This function will store the DMA handle in the appropriate slot
+ * @param dma_handle : dma handle
+ * @retval None
+ */
+void prepare_dma(DMA_HandleTypeDef *dma_handle);
+
+/**
+ * @brief This function will remove the DMA handle from the appropriate slot
+ * @param dma_handle : dma handle
+ * @retval None
+ */
+void end_dma(DMA_HandleTypeDef *dma_handle);
+
+#endif
From 2d97333d0fc7ae3599c49a7109c2098c8c67292d Mon Sep 17 00:00:00 2001
From: xC0000005 <32139633+xC0000005@users.noreply.github.com>
Date: Sat, 13 Jul 2019 00:22:02 -0700
Subject: [PATCH 02/18] Minor updates.
---
cores/arduino/stm32/dma.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/cores/arduino/stm32/dma.c b/cores/arduino/stm32/dma.c
index 57a7365531..12788612be 100644
--- a/cores/arduino/stm32/dma.c
+++ b/cores/arduino/stm32/dma.c
@@ -38,6 +38,11 @@
#include
#include "dma.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#if defined(HAL_DMA_MODULE_ENABLED)
+
#define NC -1
typedef enum
@@ -368,3 +373,9 @@ void DMA2_Channel8_IRQHandler() {
HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL8_INDEX]);
}
#endif
+
+#endif /* HAL_DMA_MODULE_ENABLED */
+
+#ifdef __cplusplus
+}
+#endif
From 0a4dbf7ee0f474c38df229a96c640e42c396cf02 Mon Sep 17 00:00:00 2001
From: xC0000005 <32139633+xC0000005@users.noreply.github.com>
Date: Sat, 13 Jul 2019 09:19:42 -0700
Subject: [PATCH 03/18] Astyle changes.
---
cores/arduino/stm32/dma.c | 238 +++++++++++++++++++-------------------
1 file changed, 119 insertions(+), 119 deletions(-)
diff --git a/cores/arduino/stm32/dma.c b/cores/arduino/stm32/dma.c
index 12788612be..9eccbb4f49 100644
--- a/cores/arduino/stm32/dma.c
+++ b/cores/arduino/stm32/dma.c
@@ -48,51 +48,51 @@ extern "C" {
typedef enum
{
#ifdef DMA1_Channel1
- DMA1_CHANNEL1_INDEX,
+ DMA1_CHANNEL1_INDEX,
#endif
#ifdef DMA1_Channel2
- DMA1_CHANNEL2_INDEX,
+ DMA1_CHANNEL2_INDEX,
#endif
#ifdef DMA1_Channel3
- DMA1_CHANNEL3_INDEX,
+ DMA1_CHANNEL3_INDEX,
#endif
#ifdef DMA1_Channel4
- DMA1_CHANNEL4_INDEX,
+ DMA1_CHANNEL4_INDEX,
#endif
#ifdef DMA1_Channel5
- DMA1_CHANNEL5_INDEX,
+ DMA1_CHANNEL5_INDEX,
#endif
#ifdef DMA1_Channel6
- DMA1_CHANNEL6_INDEX,
+ DMA1_CHANNEL6_INDEX,
#endif
#ifdef DMA1_Channel7
- DMA1_CHANNEL7_INDEX,
+ DMA1_CHANNEL7_INDEX,
#endif
#ifdef DMA2_Channel1
- DMA2_CHANNEL1_INDEX,
+ DMA2_CHANNEL1_INDEX,
#endif
#ifdef DMA2_Channel2
- DMA2_CHANNEL2_INDEX,
+ DMA2_CHANNEL2_INDEX,
#endif
#ifdef DMA2_Channel3
- DMA2_CHANNEL3_INDEX,
+ DMA2_CHANNEL3_INDEX,
#endif
#ifdef DMA2_Channel4
- DMA2_CHANNEL4_INDEX,
+ DMA2_CHANNEL4_INDEX,
#endif
#ifdef DMA2_Channel5
- DMA2_CHANNEL5_INDEX,
+ DMA2_CHANNEL5_INDEX,
#endif
#ifdef DMA2_Channel6
- DMA2_CHANNEL6_INDEX,
+ DMA2_CHANNEL6_INDEX,
#endif
#ifdef DMA2_Channel7
- DMA2_CHANNEL7_INDEX,
+ DMA2_CHANNEL7_INDEX,
#endif
#ifdef DMA2_Channel8
- DMA2_CHANNEL8_INDEX,
+ DMA2_CHANNEL8_INDEX,
#endif
- DMA_CHANNEL_NUM
+ DMA_CHANNEL_NUM
} dma_index_t;
static DMA_HandleTypeDef *dma_handles[DMA_CHANNEL_NUM] = {NULL};
@@ -103,70 +103,70 @@ static DMA_HandleTypeDef *dma_handles[DMA_CHANNEL_NUM] = {NULL};
* @retval None
*/
static dma_index_t get_dma_index(DMA_Channel_TypeDef *instance) {
- switch ((uint32_t)instance) {
- #ifdef DMA1_Channel1
- case (uint32_t)DMA1_Channel1:
- return DMA1_CHANNEL1_INDEX;
- #endif
- #ifdef DMA1_Channel2
- case (uint32_t)DMA1_Channel2:
- return DMA1_CHANNEL2_INDEX;
- #endif
- #ifdef DMA1_Channel3
- case (uint32_t)DMA1_Channel3:
- return DMA1_CHANNEL3_INDEX;
- #endif
- #ifdef DMA1_Channel4
- case (uint32_t)DMA1_Channel4:
- return DMA1_CHANNEL4_INDEX;
- #endif
- #ifdef DMA1_Channel5
- case (uint32_t)DMA1_Channel5:
- return DMA1_CHANNEL5_INDEX;
- #endif
- #ifdef DMA1_Channel6
- case (uint32_t)DMA1_Channel6:
- return DMA1_CHANNEL6_INDEX;
- #endif
- #ifdef DMA1_Channel7
- case (uint32_t)DMA1_Channel7:
- return DMA1_CHANNEL7_INDEX;
- #endif
- #ifdef DMA2_Channel1
- case (uint32_t)DMA2_Channel1:
- return DMA2_CHANNEL1_INDEX;
- #endif
- #ifdef DMA2_Channel2
- case (uint32_t)DMA2_Channel2:
- return DMA2_CHANNEL2_INDEX;
- #endif
- #ifdef DMA2_Channel3
- case (uint32_t)DMA2_Channel3:
- return DMA2_CHANNEL3_INDEX;
- #endif
- #ifdef DMA2_Channel4
- case (uint32_t)DMA2_Channel4:
- return DMA2_CHANNEL4_INDEX;
- #endif
- #ifdef DMA2_Channel5
- case (uint32_t)DMA2_Channel5:
- return DMA2_CHANNEL5_INDEX;
- #endif
- #ifdef DMA2_Channel6
- case (uint32_t)DMA2_Channel6:
- return DMA2_CHANNEL6_INDEX;
- #endif
- #ifdef DMA2_Channel7
- case (uint32_t)DMA2_Channel7:
- return DMA2_CHANNEL7_INDEX;
- #endif
- #ifdef DMA2_Channel8
- case (uint32_t)DMA2_Channel8:
- return DMA2_CHANNEL8_INDEX;
- #endif
+ switch ((uint32_t)instance) {
+#ifdef DMA1_Channel1
+ case (uint32_t)DMA1_Channel1:
+ return DMA1_CHANNEL1_INDEX;
+#endif
+#ifdef DMA1_Channel2
+ case (uint32_t)DMA1_Channel2:
+ return DMA1_CHANNEL2_INDEX;
+#endif
+#ifdef DMA1_Channel3
+ case (uint32_t)DMA1_Channel3:
+ return DMA1_CHANNEL3_INDEX;
+#endif
+#ifdef DMA1_Channel4
+ case (uint32_t)DMA1_Channel4:
+ return DMA1_CHANNEL4_INDEX;
+#endif
+#ifdef DMA1_Channel5
+ case (uint32_t)DMA1_Channel5:
+ return DMA1_CHANNEL5_INDEX;
+#endif
+#ifdef DMA1_Channel6
+ case (uint32_t)DMA1_Channel6:
+ return DMA1_CHANNEL6_INDEX;
+#endif
+#ifdef DMA1_Channel7
+ case (uint32_t)DMA1_Channel7:
+ return DMA1_CHANNEL7_INDEX;
+#endif
+#ifdef DMA2_Channel1
+ case (uint32_t)DMA2_Channel1:
+ return DMA2_CHANNEL1_INDEX;
+#endif
+#ifdef DMA2_Channel2
+ case (uint32_t)DMA2_Channel2:
+ return DMA2_CHANNEL2_INDEX;
+#endif
+#ifdef DMA2_Channel3
+ case (uint32_t)DMA2_Channel3:
+ return DMA2_CHANNEL3_INDEX;
+#endif
+#ifdef DMA2_Channel4
+ case (uint32_t)DMA2_Channel4:
+ return DMA2_CHANNEL4_INDEX;
+#endif
+#ifdef DMA2_Channel5
+ case (uint32_t)DMA2_Channel5:
+ return DMA2_CHANNEL5_INDEX;
+#endif
+#ifdef DMA2_Channel6
+ case (uint32_t)DMA2_Channel6:
+ return DMA2_CHANNEL6_INDEX;
+#endif
+#ifdef DMA2_Channel7
+ case (uint32_t)DMA2_Channel7:
+ return DMA2_CHANNEL7_INDEX;
+#endif
+#ifdef DMA2_Channel8
+ case (uint32_t)DMA2_Channel8:
+ return DMA2_CHANNEL8_INDEX;
+#endif
default:
- return NC;
- }
+ return NC;
+ }
}
/**
@@ -175,11 +175,11 @@ static dma_index_t get_dma_index(DMA_Channel_TypeDef *instance) {
* @retval None
*/
void prepare_dma(DMA_HandleTypeDef *dma_handle) {
- dma_index_t dma_index = get_dma_index(dma_handle->Instance);
- if (dma_index == NC) {
- return;
- }
- dma_handles[dma_index] = dma_handle;
+ dma_index_t dma_index = get_dma_index(dma_handle->Instance);
+ if (dma_index == NC) {
+ return;
+ }
+ dma_handles[dma_index] = dma_handle;
}
/**
@@ -188,11 +188,11 @@ void prepare_dma(DMA_HandleTypeDef *dma_handle) {
* @retval None
*/
void end_dma(DMA_HandleTypeDef *dma_handle) {
- dma_index_t dma_index = get_dma_index(dma_handle->Instance);
- if (dma_index == NC) {
- return;
- }
- dma_handles[dma_index] = NULL;
+ dma_index_t dma_index = get_dma_index(dma_handle->Instance);
+ if (dma_index == NC) {
+ return;
+ }
+ dma_handles[dma_index] = NULL;
}
#ifdef DMA1_Channel1
@@ -202,8 +202,8 @@ void end_dma(DMA_HandleTypeDef *dma_handle) {
* @retval None
*/
void DMA1_Channel1_IRQHandler() {
- if (dma_handles[DMA1_CHANNEL1_INDEX] != NULL)
- HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL1_INDEX]);
+ if (dma_handles[DMA1_CHANNEL1_INDEX] != NULL)
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL1_INDEX]);
}
#endif
@@ -214,8 +214,8 @@ void DMA1_Channel1_IRQHandler() {
* @retval None
*/
void DMA1_Channel2_IRQHandler() {
- if (dma_handles[DMA1_CHANNEL2_INDEX] != NULL)
- HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL2_INDEX]);
+ if (dma_handles[DMA1_CHANNEL2_INDEX] != NULL)
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL2_INDEX]);
}
#endif
@@ -226,8 +226,8 @@ void DMA1_Channel2_IRQHandler() {
* @retval None
*/
void DMA1_Channel3_IRQHandler() {
- if (dma_handles[DMA1_CHANNEL3_INDEX] != NULL)
- HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL3_INDEX]);
+ if (dma_handles[DMA1_CHANNEL3_INDEX] != NULL)
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL3_INDEX]);
}
#endif
@@ -238,8 +238,8 @@ void DMA1_Channel3_IRQHandler() {
* @retval None
*/
void DMA1_Channel4_IRQHandler() {
- if (dma_handles[DMA1_CHANNEL4_INDEX] != NULL)
- HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL4_INDEX]);
+ if (dma_handles[DMA1_CHANNEL4_INDEX] != NULL)
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL4_INDEX]);
}
#endif
@@ -250,8 +250,8 @@ void DMA1_Channel4_IRQHandler() {
* @retval None
*/
void DMA1_Channel5_IRQHandler() {
- if (dma_handles[DMA1_CHANNEL5_INDEX] != NULL)
- HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL5_INDEX]);
+ if (dma_handles[DMA1_CHANNEL5_INDEX] != NULL)
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL5_INDEX]);
}
#endif
@@ -261,8 +261,8 @@ void DMA1_Channel5_IRQHandler() {
* @retval None
*/
void DMA1_Channel6_IRQHandler() {
- if (dma_handles[DMA1_CHANNEL6_INDEX] != NULL)
- HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL6_INDEX]);
+ if (dma_handles[DMA1_CHANNEL6_INDEX] != NULL)
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL6_INDEX]);
}
#endif
@@ -273,8 +273,8 @@ void DMA1_Channel6_IRQHandler() {
* @retval None
*/
void DMA1_Channel7_IRQHandler() {
- if (dma_handles[DMA1_CHANNEL7_INDEX] != NULL)
- HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL7_INDEX]);
+ if (dma_handles[DMA1_CHANNEL7_INDEX] != NULL)
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL7_INDEX]);
}
#endif
@@ -285,8 +285,8 @@ void DMA1_Channel7_IRQHandler() {
* @retval None
*/
void DMA2_Channel1_IRQHandler() {
- if (dma_handles[DMA2_CHANNEL1_INDEX] != NULL)
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL1_INDEX]);
+ if (dma_handles[DMA2_CHANNEL1_INDEX] != NULL)
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL1_INDEX]);
}
#endif
@@ -297,8 +297,8 @@ void DMA2_Channel1_IRQHandler() {
* @retval None
*/
void DMA2_Channel1_IRQHandler() {
- if (dma_handles[DMA2_CHANNEL2_INDEX] != NULL)
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL2_INDEX]);
+ if (dma_handles[DMA2_CHANNEL2_INDEX] != NULL)
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL2_INDEX]);
}
#endif
@@ -309,8 +309,8 @@ void DMA2_Channel1_IRQHandler() {
* @retval None
*/
void DMA2_Channel3_IRQHandler() {
- if (dma_handles[DMA2_CHANNEL3_INDEX] != NULL)
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL3_INDEX]);
+ if (dma_handles[DMA2_CHANNEL3_INDEX] != NULL)
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL3_INDEX]);
}
#endif
@@ -321,8 +321,8 @@ void DMA2_Channel3_IRQHandler() {
* @retval None
*/
void DMA2_Channel4_IRQHandler() {
- if (dma_handles[DMA2_CHANNEL4_INDEX] != NULL)
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL4_INDEX]);
+ if (dma_handles[DMA2_CHANNEL4_INDEX] != NULL)
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL4_INDEX]);
}
#endif
@@ -333,8 +333,8 @@ void DMA2_Channel4_IRQHandler() {
* @retval None
*/
void DMA2_Channel5_IRQHandler() {
- if (dma_handles[DMA2_CHANNEL5_INDEX] != NULL)
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL5_INDEX]);
+ if (dma_handles[DMA2_CHANNEL5_INDEX] != NULL)
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL5_INDEX]);
}
#endif
@@ -345,8 +345,8 @@ void DMA2_Channel5_IRQHandler() {
* @retval None
*/
void DMA2_Channel6_IRQHandler() {
- if (dma_handles[DMA2_CHANNEL6_INDEX] != NULL)
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL6_INDEX]);
+ if (dma_handles[DMA2_CHANNEL6_INDEX] != NULL)
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL6_INDEX]);
}
#endif
@@ -357,8 +357,8 @@ void DMA2_Channel6_IRQHandler() {
* @retval None
*/
void DMA2_Channel7_IRQHandler() {
- if (dma_handles[DMA2_CHANNEL7_INDEX] != NULL)
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL7_INDEX]);
+ if (dma_handles[DMA2_CHANNEL7_INDEX] != NULL)
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL7_INDEX]);
}
#endif
@@ -369,8 +369,8 @@ void DMA2_Channel7_IRQHandler() {
* @retval None
*/
void DMA2_Channel8_IRQHandler() {
- if (dma_handles[DMA2_CHANNEL8_INDEX] != NULL)
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL8_INDEX]);
+ if (dma_handles[DMA2_CHANNEL8_INDEX] != NULL)
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL8_INDEX]);
}
#endif
From 50a3309aeb1aec838f0d898963e0cffeb96c46f5 Mon Sep 17 00:00:00 2001
From: xC0000005 <32139633+xC0000005@users.noreply.github.com>
Date: Sat, 13 Jul 2019 10:48:04 -0700
Subject: [PATCH 04/18] Implement stream handlers
---
cores/arduino/stm32/dma.c | 486 ++++++++++++++++++++++++++++++--------
1 file changed, 390 insertions(+), 96 deletions(-)
diff --git a/cores/arduino/stm32/dma.c b/cores/arduino/stm32/dma.c
index 9eccbb4f49..4cdef33f22 100644
--- a/cores/arduino/stm32/dma.c
+++ b/cores/arduino/stm32/dma.c
@@ -43,58 +43,105 @@ extern "C" {
#endif
#if defined(HAL_DMA_MODULE_ENABLED)
-#define NC -1
-
-typedef enum
-{
+typedef enum {
#ifdef DMA1_Channel1
- DMA1_CHANNEL1_INDEX,
+ DMA1_CHANNEL1_INDEX,
#endif
#ifdef DMA1_Channel2
- DMA1_CHANNEL2_INDEX,
+ DMA1_CHANNEL2_INDEX,
#endif
#ifdef DMA1_Channel3
- DMA1_CHANNEL3_INDEX,
+ DMA1_CHANNEL3_INDEX,
#endif
#ifdef DMA1_Channel4
- DMA1_CHANNEL4_INDEX,
+ DMA1_CHANNEL4_INDEX,
#endif
#ifdef DMA1_Channel5
- DMA1_CHANNEL5_INDEX,
+ DMA1_CHANNEL5_INDEX,
#endif
#ifdef DMA1_Channel6
- DMA1_CHANNEL6_INDEX,
+ DMA1_CHANNEL6_INDEX,
#endif
#ifdef DMA1_Channel7
- DMA1_CHANNEL7_INDEX,
+ DMA1_CHANNEL7_INDEX,
#endif
#ifdef DMA2_Channel1
- DMA2_CHANNEL1_INDEX,
+ DMA2_CHANNEL1_INDEX,
#endif
#ifdef DMA2_Channel2
- DMA2_CHANNEL2_INDEX,
+ DMA2_CHANNEL2_INDEX,
#endif
#ifdef DMA2_Channel3
- DMA2_CHANNEL3_INDEX,
+ DMA2_CHANNEL3_INDEX,
#endif
#ifdef DMA2_Channel4
- DMA2_CHANNEL4_INDEX,
+ DMA2_CHANNEL4_INDEX,
#endif
#ifdef DMA2_Channel5
- DMA2_CHANNEL5_INDEX,
+ DMA2_CHANNEL5_INDEX,
#endif
#ifdef DMA2_Channel6
- DMA2_CHANNEL6_INDEX,
+ DMA2_CHANNEL6_INDEX,
#endif
#ifdef DMA2_Channel7
- DMA2_CHANNEL7_INDEX,
+ DMA2_CHANNEL7_INDEX,
#endif
#ifdef DMA2_Channel8
- DMA2_CHANNEL8_INDEX,
+ DMA2_CHANNEL8_INDEX,
+#endif
+#ifdef DMA1_Stream0
+ DMA1_STREAM0_INDEX,
+#endif
+#ifdef DMA1_Stream1
+ DMA1_STREAM1_INDEX,
+#endif
+#ifdef DMA1_Stream2
+ DMA1_STREAM2_INDEX,
+#endif
+#ifdef DMA1_Stream3
+ DMA1_STREAM3_INDEX,
+#endif
+#ifdef DMA1_Stream4
+ DMA1_STREAM4_INDEX,
+#endif
+#ifdef DMA1_Stream5
+ DMA1_STREAM5_INDEX,
+#endif
+#ifdef DMA1_Stream6
+ DMA1_STREAM6_INDEX,
+#endif
+#ifdef DMA1_Stream7
+ DMA1_STREAM7_INDEX,
+#endif
+#ifdef DMA2_Stream0
+ DMA2_STREAM0_INDEX,
+#endif
+#ifdef DMA2_Stream1
+ DMA2_STREAM1_INDEX,
+#endif
+#ifdef DMA2_Stream2
+ DMA2_STREAM2_INDEX,
+#endif
+#ifdef DMA2_Stream3
+ DMA2_STREAM3_INDEX,
+#endif
+#ifdef DMA2_Stream4
+ DMA2_STREAM4_INDEX,
#endif
- DMA_CHANNEL_NUM
+#ifdef DMA2_Stream5
+ DMA2_STREAM5_INDEX,
+#endif
+#ifdef DMA2_Stream6
+ DMA2_STREAM6_INDEX,
+#endif
+#ifdef DMA2_Stream7
+ DMA2_STREAM7_INDEX,
+#endif
+ DMA_CHANNEL_NUM
} dma_index_t;
+#define NC (dma_index_t)-1
+
static DMA_HandleTypeDef *dma_handles[DMA_CHANNEL_NUM] = {NULL};
/**
@@ -102,71 +149,142 @@ static DMA_HandleTypeDef *dma_handles[DMA_CHANNEL_NUM] = {NULL};
* @param instance : dma instance
* @retval None
*/
-static dma_index_t get_dma_index(DMA_Channel_TypeDef *instance) {
- switch ((uint32_t)instance) {
+static dma_index_t get_dma_index(
+#if defined(STM32F2xx) || defined(STM32F4xx) || defined(STM32F7xx)
+ DMA_Stream_TypeDef
+#else
+ DMA_Channel_TypeDef
+#endif
+ *instance)
+{
+ switch ((uint32_t)instance) {
#ifdef DMA1_Channel1
case (uint32_t)DMA1_Channel1:
- return DMA1_CHANNEL1_INDEX;
+ return DMA1_CHANNEL1_INDEX;
#endif
#ifdef DMA1_Channel2
case (uint32_t)DMA1_Channel2:
- return DMA1_CHANNEL2_INDEX;
+ return DMA1_CHANNEL2_INDEX;
#endif
#ifdef DMA1_Channel3
case (uint32_t)DMA1_Channel3:
- return DMA1_CHANNEL3_INDEX;
+ return DMA1_CHANNEL3_INDEX;
#endif
#ifdef DMA1_Channel4
case (uint32_t)DMA1_Channel4:
- return DMA1_CHANNEL4_INDEX;
+ return DMA1_CHANNEL4_INDEX;
#endif
#ifdef DMA1_Channel5
case (uint32_t)DMA1_Channel5:
- return DMA1_CHANNEL5_INDEX;
+ return DMA1_CHANNEL5_INDEX;
#endif
#ifdef DMA1_Channel6
case (uint32_t)DMA1_Channel6:
- return DMA1_CHANNEL6_INDEX;
+ return DMA1_CHANNEL6_INDEX;
#endif
#ifdef DMA1_Channel7
case (uint32_t)DMA1_Channel7:
- return DMA1_CHANNEL7_INDEX;
+ return DMA1_CHANNEL7_INDEX;
#endif
#ifdef DMA2_Channel1
case (uint32_t)DMA2_Channel1:
- return DMA2_CHANNEL1_INDEX;
+ return DMA2_CHANNEL1_INDEX;
#endif
#ifdef DMA2_Channel2
case (uint32_t)DMA2_Channel2:
- return DMA2_CHANNEL2_INDEX;
+ return DMA2_CHANNEL2_INDEX;
#endif
#ifdef DMA2_Channel3
case (uint32_t)DMA2_Channel3:
- return DMA2_CHANNEL3_INDEX;
+ return DMA2_CHANNEL3_INDEX;
#endif
#ifdef DMA2_Channel4
case (uint32_t)DMA2_Channel4:
- return DMA2_CHANNEL4_INDEX;
+ return DMA2_CHANNEL4_INDEX;
#endif
#ifdef DMA2_Channel5
case (uint32_t)DMA2_Channel5:
- return DMA2_CHANNEL5_INDEX;
+ return DMA2_CHANNEL5_INDEX;
#endif
#ifdef DMA2_Channel6
case (uint32_t)DMA2_Channel6:
- return DMA2_CHANNEL6_INDEX;
+ return DMA2_CHANNEL6_INDEX;
#endif
#ifdef DMA2_Channel7
case (uint32_t)DMA2_Channel7:
- return DMA2_CHANNEL7_INDEX;
+ return DMA2_CHANNEL7_INDEX;
#endif
#ifdef DMA2_Channel8
case (uint32_t)DMA2_Channel8:
- return DMA2_CHANNEL8_INDEX;
+ return DMA2_CHANNEL8_INDEX;
+#endif
+#ifdef DMA1_Stream0
+ case (uint32_t)DMA1_Stream0:
+ return DMA1_STREAM0_INDEX;
+#endif
+#ifdef DMA1_Stream1
+ case (uint32_t)DMA1_Stream1:
+ return DMA1_STREAM1_INDEX;
+#endif
+#ifdef DMA1_Stream2
+ case (uint32_t)DMA1_Stream2:
+ return DMA1_STREAM2_INDEX;
+#endif
+#ifdef DMA1_Stream3
+ case (uint32_t)DMA1_Stream3:
+ return DMA1_STREAM3_INDEX;
+#endif
+#ifdef DMA1_Stream4
+ case (uint32_t)DMA1_Stream4:
+ return DMA1_STREAM4_INDEX;
+#endif
+#ifdef DMA1_Stream5
+ case (uint32_t)DMA1_Stream5:
+ return DMA1_STREAM5_INDEX;
+#endif
+#ifdef DMA1_Stream6
+ case (uint32_t)DMA1_Stream6:
+ return DMA1_STREAM6_INDEX;
+#endif
+#ifdef DMA1_Stream7
+ case (uint32_t)DMA1_Stream7:
+ return DMA1_STREAM7_INDEX;
+#endif
+#ifdef DMA2_Stream0
+ case (uint32_t)DMA2_Stream0:
+ return DMA2_STREAM0_INDEX;
+#endif
+#ifdef DMA2_Stream1
+ case (uint32_t)DMA2_Stream1:
+ return DMA2_STREAM1_INDEX;
+#endif
+#ifdef DMA2_Stream2
+ case (uint32_t)DMA2_Stream2:
+ return DMA2_STREAM2_INDEX;
+#endif
+#ifdef DMA2_Stream3
+ case (uint32_t)DMA2_Stream3:
+ return DMA2_STREAM3_INDEX;
+#endif
+#ifdef DMA2_Stream4
+ case (uint32_t)DMA2_Stream4:
+ return DMA2_STREAM4_INDEX;
+#endif
+#ifdef DMA2_Stream5
+ case (uint32_t)DMA2_Stream5:
+ return DMA2_STREAM5_INDEX;
+#endif
+#ifdef DMA2_Stream6
+ case (uint32_t)DMA2_Stream6:
+ return DMA2_STREAM6_INDEX;
+#endif
+#ifdef DMA2_Stream7
+ case (uint32_t)DMA2_Stream7:
+ return DMA2_STREAM7_INDEX;
#endif
default:
- return NC;
- }
+ return NC;
+ }
}
/**
@@ -174,12 +292,13 @@ static dma_index_t get_dma_index(DMA_Channel_TypeDef *instance) {
* @param dma_handle : dma handle
* @retval None
*/
-void prepare_dma(DMA_HandleTypeDef *dma_handle) {
- dma_index_t dma_index = get_dma_index(dma_handle->Instance);
- if (dma_index == NC) {
- return;
- }
- dma_handles[dma_index] = dma_handle;
+void prepare_dma(DMA_HandleTypeDef *dma_handle)
+{
+ dma_index_t dma_index = get_dma_index(dma_handle->Instance);
+ if (dma_index == NC) {
+ return;
+ }
+ dma_handles[dma_index] = dma_handle;
}
/**
@@ -187,12 +306,13 @@ void prepare_dma(DMA_HandleTypeDef *dma_handle) {
* @param dma_handle : dma handle
* @retval None
*/
-void end_dma(DMA_HandleTypeDef *dma_handle) {
- dma_index_t dma_index = get_dma_index(dma_handle->Instance);
- if (dma_index == NC) {
- return;
- }
- dma_handles[dma_index] = NULL;
+void end_dma(DMA_HandleTypeDef *dma_handle)
+{
+ dma_index_t dma_index = get_dma_index(dma_handle->Instance);
+ if (dma_index == NC) {
+ return;
+ }
+ dma_handles[dma_index] = NULL;
}
#ifdef DMA1_Channel1
@@ -201,9 +321,11 @@ void end_dma(DMA_HandleTypeDef *dma_handle) {
* @param None
* @retval None
*/
-void DMA1_Channel1_IRQHandler() {
- if (dma_handles[DMA1_CHANNEL1_INDEX] != NULL)
- HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL1_INDEX]);
+void DMA1_Channel1_IRQHandler()
+{
+ if (dma_handles[DMA1_CHANNEL1_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL1_INDEX]);
+ }
}
#endif
@@ -213,9 +335,11 @@ void DMA1_Channel1_IRQHandler() {
* @param None
* @retval None
*/
-void DMA1_Channel2_IRQHandler() {
- if (dma_handles[DMA1_CHANNEL2_INDEX] != NULL)
- HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL2_INDEX]);
+void DMA1_Channel2_IRQHandler()
+{
+ if (dma_handles[DMA1_CHANNEL2_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL2_INDEX]);
+ }
}
#endif
@@ -225,9 +349,11 @@ void DMA1_Channel2_IRQHandler() {
* @param None
* @retval None
*/
-void DMA1_Channel3_IRQHandler() {
- if (dma_handles[DMA1_CHANNEL3_INDEX] != NULL)
- HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL3_INDEX]);
+void DMA1_Channel3_IRQHandler()
+{
+ if (dma_handles[DMA1_CHANNEL3_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL3_INDEX]);
+ }
}
#endif
@@ -237,9 +363,11 @@ void DMA1_Channel3_IRQHandler() {
* @param None
* @retval None
*/
-void DMA1_Channel4_IRQHandler() {
- if (dma_handles[DMA1_CHANNEL4_INDEX] != NULL)
- HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL4_INDEX]);
+void DMA1_Channel4_IRQHandler()
+{
+ if (dma_handles[DMA1_CHANNEL4_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL4_INDEX]);
+ }
}
#endif
@@ -249,9 +377,11 @@ void DMA1_Channel4_IRQHandler() {
* @param None
* @retval None
*/
-void DMA1_Channel5_IRQHandler() {
- if (dma_handles[DMA1_CHANNEL5_INDEX] != NULL)
- HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL5_INDEX]);
+void DMA1_Channel5_IRQHandler()
+{
+ if (dma_handles[DMA1_CHANNEL5_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL5_INDEX]);
+ }
}
#endif
@@ -260,9 +390,11 @@ void DMA1_Channel5_IRQHandler() {
* @param None
* @retval None
*/
-void DMA1_Channel6_IRQHandler() {
- if (dma_handles[DMA1_CHANNEL6_INDEX] != NULL)
- HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL6_INDEX]);
+void DMA1_Channel6_IRQHandler()
+{
+ if (dma_handles[DMA1_CHANNEL6_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL6_INDEX]);
+ }
}
#endif
@@ -272,9 +404,11 @@ void DMA1_Channel6_IRQHandler() {
* @param None
* @retval None
*/
-void DMA1_Channel7_IRQHandler() {
- if (dma_handles[DMA1_CHANNEL7_INDEX] != NULL)
- HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL7_INDEX]);
+void DMA1_Channel7_IRQHandler()
+{
+ if (dma_handles[DMA1_CHANNEL7_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL7_INDEX]);
+ }
}
#endif
@@ -284,9 +418,11 @@ void DMA1_Channel7_IRQHandler() {
* @param None
* @retval None
*/
-void DMA2_Channel1_IRQHandler() {
- if (dma_handles[DMA2_CHANNEL1_INDEX] != NULL)
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL1_INDEX]);
+void DMA2_Channel1_IRQHandler()
+{
+ if (dma_handles[DMA2_CHANNEL1_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL1_INDEX]);
+ }
}
#endif
@@ -296,9 +432,11 @@ void DMA2_Channel1_IRQHandler() {
* @param None
* @retval None
*/
-void DMA2_Channel1_IRQHandler() {
- if (dma_handles[DMA2_CHANNEL2_INDEX] != NULL)
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL2_INDEX]);
+void DMA2_Channel2_IRQHandler()
+{
+ if (dma_handles[DMA2_CHANNEL2_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL2_INDEX]);
+ }
}
#endif
@@ -308,9 +446,11 @@ void DMA2_Channel1_IRQHandler() {
* @param None
* @retval None
*/
-void DMA2_Channel3_IRQHandler() {
- if (dma_handles[DMA2_CHANNEL3_INDEX] != NULL)
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL3_INDEX]);
+void DMA2_Channel3_IRQHandler()
+{
+ if (dma_handles[DMA2_CHANNEL3_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL3_INDEX]);
+ }
}
#endif
@@ -320,9 +460,11 @@ void DMA2_Channel3_IRQHandler() {
* @param None
* @retval None
*/
-void DMA2_Channel4_IRQHandler() {
- if (dma_handles[DMA2_CHANNEL4_INDEX] != NULL)
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL4_INDEX]);
+void DMA2_Channel4_IRQHandler()
+{
+ if (dma_handles[DMA2_CHANNEL4_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL4_INDEX]);
+ }
}
#endif
@@ -332,9 +474,11 @@ void DMA2_Channel4_IRQHandler() {
* @param None
* @retval None
*/
-void DMA2_Channel5_IRQHandler() {
- if (dma_handles[DMA2_CHANNEL5_INDEX] != NULL)
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL5_INDEX]);
+void DMA2_Channel5_IRQHandler()
+{
+ if (dma_handles[DMA2_CHANNEL5_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL5_INDEX]);
+ }
}
#endif
@@ -344,9 +488,11 @@ void DMA2_Channel5_IRQHandler() {
* @param None
* @retval None
*/
-void DMA2_Channel6_IRQHandler() {
- if (dma_handles[DMA2_CHANNEL6_INDEX] != NULL)
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL6_INDEX]);
+void DMA2_Channel6_IRQHandler()
+{
+ if (dma_handles[DMA2_CHANNEL6_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL6_INDEX]);
+ }
}
#endif
@@ -356,9 +502,11 @@ void DMA2_Channel6_IRQHandler() {
* @param None
* @retval None
*/
-void DMA2_Channel7_IRQHandler() {
- if (dma_handles[DMA2_CHANNEL7_INDEX] != NULL)
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL7_INDEX]);
+void DMA2_Channel7_IRQHandler()
+{
+ if (dma_handles[DMA2_CHANNEL7_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL7_INDEX]);
+ }
}
#endif
@@ -368,9 +516,155 @@ void DMA2_Channel7_IRQHandler() {
* @param None
* @retval None
*/
-void DMA2_Channel8_IRQHandler() {
- if (dma_handles[DMA2_CHANNEL8_INDEX] != NULL)
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL8_INDEX]);
+void DMA2_Channel8_IRQHandler()
+{
+ if (dma_handles[DMA2_CHANNEL8_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL8_INDEX]);
+ }
+}
+#endif
+
+#ifdef DMA1_Stream0
+void DMA1_Stream0_IRQHandler()
+{
+ if (dma_handles[DMA1_STREAM0_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM0_INDEX]);
+ }
+}
+#endif
+
+#ifdef DMA1_Stream1
+void DMA1_Stream1_IRQHandler()
+{
+ if (dma_handles[DMA1_STREAM1_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM1_INDEX]);
+ }
+}
+#endif
+
+#ifdef DMA1_Stream2
+void DMA1_Stream2_IRQHandler()
+{
+ if (dma_handles[DMA1_STREAM2_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM2_INDEX]);
+ }
+}
+#endif
+
+#ifdef DMA1_Stream3
+void DMA1_Stream3_IRQHandler()
+{
+ if (dma_handles[DMA1_STREAM3_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM3_INDEX]);
+ }
+}
+#endif
+
+#ifdef DMA1_Stream4
+void DMA1_Stream4_IRQHandler()
+{
+ if (dma_handles[DMA1_STREAM4_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM4_INDEX]);
+ }
+}
+#endif
+
+#ifdef DMA1_Stream5
+void DMA1_Stream5_IRQHandler()
+{
+ if (dma_handles[DMA1_STREAM5_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM5_INDEX]);
+ }
+}
+#endif
+
+#ifdef DMA1_Stream6
+void DMA1_Stream6_IRQHandler()
+{
+ if (dma_handles[DMA1_STREAM6_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM6_INDEX]);
+ }
+}
+#endif
+
+#ifdef DMA1_Stream7
+void DMA1_Stream7_IRQHandler()
+{
+ if (dma_handles[DMA1_STREAM7_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM7_INDEX]);
+ }
+}
+#endif
+
+#ifdef DMA2_Stream0
+void DMA2_Stream0_IRQHandler()
+{
+ if (dma_handles[DMA2_STREAM0_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM0_INDEX]);
+ }
+}
+#endif
+
+#ifdef DMA2_Stream1
+void DMA2_Stream1_IRQHandler()
+{
+ if (dma_handles[DMA2_STREAM1_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM1_INDEX]);
+ }
+}
+#endif
+
+#ifdef DMA2_Stream2
+void DMA2_Stream2_IRQHandler()
+{
+ if (dma_handles[DMA2_STREAM2_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM2_INDEX]);
+ }
+}
+#endif
+
+#ifdef DMA2_Stream3
+void DMA2_Stream3_IRQHandler()
+{
+ if (dma_handles[DMA2_STREAM3_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM3_INDEX]);
+ }
+}
+#endif
+
+#ifdef DMA2_Stream4
+void DMA2_Stream4_IRQHandler()
+{
+ if (dma_handles[DMA2_STREAM4_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM4_INDEX]);
+ }
+}
+#endif
+
+#ifdef DMA2_Stream5
+void DMA2_Stream5_IRQHandler()
+{
+ if (dma_handles[DMA2_STREAM5_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM5_INDEX]);
+ }
+}
+#endif
+
+#ifdef DMA2_Stream6
+void DMA2_Stream6_IRQHandler()
+{
+ if (dma_handles[DMA2_STREAM6_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM6_INDEX]);
+ }
+}
+#endif
+
+#ifdef DMA2_Stream7
+void DMA2_Stream7_IRQHandler()
+{
+ if (dma_handles[DMA2_STREAM7_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM7_INDEX]);
+ }
}
#endif
From c4ba50cfc0e8177cc1626d32506f8c53ba56f431 Mon Sep 17 00:00:00 2001
From: xC0000005 <32139633+xC0000005@users.noreply.github.com>
Date: Sun, 14 Jul 2019 22:36:46 -0700
Subject: [PATCH 05/18] Save off DMATransfer library work.
---
libraries/DMA/kewords.txt | 21 +++++++++++
libraries/DMA/library.properties | 7 ++++
libraries/DMA/src/DMATransfer.cpp | 62 +++++++++++++++++++++++++++++++
libraries/DMA/src/DMATransfer.h | 38 +++++++++++++++++++
4 files changed, 128 insertions(+)
create mode 100644 libraries/DMA/kewords.txt
create mode 100644 libraries/DMA/library.properties
create mode 100644 libraries/DMA/src/DMATransfer.cpp
create mode 100644 libraries/DMA/src/DMATransfer.h
diff --git a/libraries/DMA/kewords.txt b/libraries/DMA/kewords.txt
new file mode 100644
index 0000000000..43f1c9b43e
--- /dev/null
+++ b/libraries/DMA/kewords.txt
@@ -0,0 +1,21 @@
+#######################################
+# Syntax Coloring Map For DMA
+#######################################
+
+#######################################
+# Datatypes (KEYWORD1)
+#######################################
+
+DMA KEYWORD1
+DMA1 KEYWORD1
+DMA2 KEYWORD2
+
+#######################################
+# Methods and Functions (KEYWORD2)
+#######################################
+
+start KEYWORD2
+
+#######################################
+# Constants (LITERAL1)
+#######################################
diff --git a/libraries/DMA/library.properties b/libraries/DMA/library.properties
new file mode 100644
index 0000000000..d5f0418fce
--- /dev/null
+++ b/libraries/DMA/library.properties
@@ -0,0 +1,7 @@
+name=DMA
+version=0.0.1
+author=J.C. Nelson
+sentence=Enables Direct Memory Access Transfers.
+paragraph=This library allows use of Direct Memory Access (DMA) for transfer between memory locations, to and from peripherals.
+category=Data Transfers
+architectures=stm32
diff --git a/libraries/DMA/src/DMATransfer.cpp b/libraries/DMA/src/DMATransfer.cpp
new file mode 100644
index 0000000000..9d8f31ec40
--- /dev/null
+++ b/libraries/DMA/src/DMATransfer.cpp
@@ -0,0 +1,62 @@
+#include
+
+/**
+ * @brief Prepares for DMA Transfer by enabling clocks
+ * and storing the settings in the slots
+ * @param settings : dma transfer settings
+ * @retval None
+ */
+void DMATransferClass::prepare(dmatransfer_t *settings) {
+ if (!_prepared) {
+ __HAL_RCC_DMA1_CLK_ENABLE();
+
+ _transfer_settings.dma_settings.Init.Direction = DMA_MEMORY_TO_PERIPH;
+ _transfer_settings.dma_settings.Init.PeriphInc = DMA_PINC_DISABLE;
+ _transfer_settings.dma_settings.Init.MemInc = DMA_MINC_DISABLE;
+ _transfer_settings.dma_settings.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
+ _transfer_settings.dma_settings.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
+ _transfer_settings.dma_settings.Init.Mode = settings.circular ? DMA_CIRCULAR : DMA_NORMAL;
+ _transfer_settings.dma_settings.Init.Priority = DMA_PRIORITY_VERY_HIGH;
+ _transfer_settings.dma_settings.Instance = settings.channel_stream;
+
+ // Perform HAL Initialization first.
+ HAL_DMA_Init(&dmaUpdate);
+
+ // Call dma prepare
+ prepare_dma(&_transfer_settings);
+ }
+}
+
+/**
+ * @brief Begin the DMA transfer
+ * @retval None
+ */
+void DMATransferClass::begin(int bytes_to_transfer) {
+ if (!prepared) {
+ // call dma prepare
+ prepare_dma(&_transfer_settings);
+ }
+
+ // Reset flags so it starts over
+ __HAL_DMA_CLEAR_FLAG(&_transfer_settings, DMA_FLAG_TC2 | DMA_FLAG_HT2 | DMA_FLAG_TE2);
+
+ // Set size to transfer
+ _transfer_settings.dma_settings.Instance->CNDTR = bytes_to_transfer;
+
+ // and enable it
+ __HAL_DMA_ENABLE(&_transfer_settings.dma_settings);
+}
+
+/**
+ * @brief End the DMA transfer
+ * @retval None
+ */
+void DMATransferClass::end() {
+
+ __HAL_DMA_DISABLE(&_transfer_settings);
+
+ if (_prepared) {
+ end_dma(&_transfer_settings);
+ _prepared = false;
+ }
+}
diff --git a/libraries/DMA/src/DMATransfer.h b/libraries/DMA/src/DMATransfer.h
new file mode 100644
index 0000000000..a37af00677
--- /dev/null
+++ b/libraries/DMA/src/DMATransfer.h
@@ -0,0 +1,38 @@
+#ifndef __DMATRANSFER_H__
+#define __DMATRANSFER_H__
+
+#include "Arduino.h"
+
+typedef struct dmatransfer_s dmatransfer_t;
+
+#if defined(STM32F2xx) || defined(STM32F4xx) || defined(STM32F7xx)
+ typedef DMA_Stream_TypeDef DMA_CS_Selection;
+#else
+ typedef DMA_Channel_TypeDef DMA_CS_Selection;
+#endif
+
+
+struct dmatransfer_s {
+ /* Keep this the first member so casting back and forth is easy
+ */
+ DMA_HandleTypeDef *dma_settings;
+ DMA_CS_Selection channel_stream;
+ boolean circular;
+ void (*transferComplete)(DMA_HandleTypeDef *);
+ void (*transferHalfComplete)(DMA_HandleTypeDef *);
+ void (*transferError)(DMA_HandleTypeDef *);
+};
+
+class DMATransferClass {
+
+ public:
+ void prepare(dmatransfer_t *settings);
+ void begin(int bytes_to_transfer);
+ void end();
+ private:
+ bool _prepared;
+ dmatransfer_t _transfer_settings;
+};
+
+
+#endif /* __DMATRANSFER_H__ */
From e5f33645a02808c41bdadd9681809adf90b8ac67 Mon Sep 17 00:00:00 2001
From: xC0000005 <32139633+xC0000005@users.noreply.github.com>
Date: Sun, 14 Jul 2019 22:40:23 -0700
Subject: [PATCH 06/18] Minor fixes.
---
cores/arduino/board.h | 1 +
libraries/DMA/src/DMATransfer.cpp | 6 +++++-
libraries/DMA/src/DMATransfer.h | 1 +
3 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/cores/arduino/board.h b/cores/arduino/board.h
index 1b5be5a272..72cdc11fe5 100644
--- a/cores/arduino/board.h
+++ b/cores/arduino/board.h
@@ -10,6 +10,7 @@
#include "clock.h"
#include "core_callback.h"
#include "digital_io.h"
+#include "dma.h"
#include "dwt.h"
#include "hw_config.h"
#include "low_power.h"
diff --git a/libraries/DMA/src/DMATransfer.cpp b/libraries/DMA/src/DMATransfer.cpp
index 9d8f31ec40..c2bcdeddcc 100644
--- a/libraries/DMA/src/DMATransfer.cpp
+++ b/libraries/DMA/src/DMATransfer.cpp
@@ -8,9 +8,12 @@
*/
void DMATransferClass::prepare(dmatransfer_t *settings) {
if (!_prepared) {
+ // TODO - figure out which DMA to enable the clock for.
__HAL_RCC_DMA1_CLK_ENABLE();
+
+ memcpy(&_transfer_settings, settings, sizeof(dmatransfer_t));
- _transfer_settings.dma_settings.Init.Direction = DMA_MEMORY_TO_PERIPH;
+ _transfer_settings.dma_settings.Init.Direction = transfer_direction;
_transfer_settings.dma_settings.Init.PeriphInc = DMA_PINC_DISABLE;
_transfer_settings.dma_settings.Init.MemInc = DMA_MINC_DISABLE;
_transfer_settings.dma_settings.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
@@ -18,6 +21,7 @@ void DMATransferClass::prepare(dmatransfer_t *settings) {
_transfer_settings.dma_settings.Init.Mode = settings.circular ? DMA_CIRCULAR : DMA_NORMAL;
_transfer_settings.dma_settings.Init.Priority = DMA_PRIORITY_VERY_HIGH;
_transfer_settings.dma_settings.Instance = settings.channel_stream;
+ // TODO - intialize the callbacks.
// Perform HAL Initialization first.
HAL_DMA_Init(&dmaUpdate);
diff --git a/libraries/DMA/src/DMATransfer.h b/libraries/DMA/src/DMATransfer.h
index a37af00677..a1e9fca91d 100644
--- a/libraries/DMA/src/DMATransfer.h
+++ b/libraries/DMA/src/DMATransfer.h
@@ -17,6 +17,7 @@ struct dmatransfer_s {
*/
DMA_HandleTypeDef *dma_settings;
DMA_CS_Selection channel_stream;
+ uint32_t transfer_direction;
boolean circular;
void (*transferComplete)(DMA_HandleTypeDef *);
void (*transferHalfComplete)(DMA_HandleTypeDef *);
From e7b4a8ae7daca66776539b1bc459ee0c4fbbabe6 Mon Sep 17 00:00:00 2001
From: xC0000005 <32139633+xC0000005@users.noreply.github.com>
Date: Mon, 15 Jul 2019 08:26:50 -0700
Subject: [PATCH 07/18] Save morning's work.
---
cores/arduino/stm32/dma.h | 8 ++++++++
libraries/DMA/library.properties | 3 ++-
libraries/DMA/src/DMATransfer.cpp | 30 +++++++++++++++++-------------
libraries/DMA/src/DMATransfer.h | 12 ++++++------
4 files changed, 33 insertions(+), 20 deletions(-)
diff --git a/cores/arduino/stm32/dma.h b/cores/arduino/stm32/dma.h
index 2391e6e8b4..85d21d54f4 100644
--- a/cores/arduino/stm32/dma.h
+++ b/cores/arduino/stm32/dma.h
@@ -40,6 +40,10 @@
#ifndef __DMA_H
#define __DMA_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
#include
/**
@@ -56,4 +60,8 @@ void prepare_dma(DMA_HandleTypeDef *dma_handle);
*/
void end_dma(DMA_HandleTypeDef *dma_handle);
+#ifdef __cplusplus
+}
+#endif
+
#endif
diff --git a/libraries/DMA/library.properties b/libraries/DMA/library.properties
index d5f0418fce..9de7ffeff0 100644
--- a/libraries/DMA/library.properties
+++ b/libraries/DMA/library.properties
@@ -1,7 +1,8 @@
name=DMA
version=0.0.1
author=J.C. Nelson
+maintainer=xC0000005
sentence=Enables Direct Memory Access Transfers.
paragraph=This library allows use of Direct Memory Access (DMA) for transfer between memory locations, to and from peripherals.
-category=Data Transfers
+category=Uncategorized
architectures=stm32
diff --git a/libraries/DMA/src/DMATransfer.cpp b/libraries/DMA/src/DMATransfer.cpp
index c2bcdeddcc..084d80399a 100644
--- a/libraries/DMA/src/DMATransfer.cpp
+++ b/libraries/DMA/src/DMATransfer.cpp
@@ -1,4 +1,5 @@
#include
+#include
/**
* @brief Prepares for DMA Transfer by enabling clocks
@@ -6,28 +7,29 @@
* @param settings : dma transfer settings
* @retval None
*/
-void DMATransferClass::prepare(dmatransfer_t *settings) {
+void DMATransferClass::prepare(dmatransfer_t *settings)
+{
if (!_prepared) {
// TODO - figure out which DMA to enable the clock for.
__HAL_RCC_DMA1_CLK_ENABLE();
-
+
memcpy(&_transfer_settings, settings, sizeof(dmatransfer_t));
- _transfer_settings.dma_settings.Init.Direction = transfer_direction;
+ _transfer_settings.dma_settings.Init.Direction = _transfer_settings.transfer_direction;
_transfer_settings.dma_settings.Init.PeriphInc = DMA_PINC_DISABLE;
_transfer_settings.dma_settings.Init.MemInc = DMA_MINC_DISABLE;
_transfer_settings.dma_settings.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
_transfer_settings.dma_settings.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
- _transfer_settings.dma_settings.Init.Mode = settings.circular ? DMA_CIRCULAR : DMA_NORMAL;
+ _transfer_settings.dma_settings.Init.Mode = _transfer_settings.circular ? DMA_CIRCULAR : DMA_NORMAL;
_transfer_settings.dma_settings.Init.Priority = DMA_PRIORITY_VERY_HIGH;
- _transfer_settings.dma_settings.Instance = settings.channel_stream;
+ _transfer_settings.dma_settings.Instance = _transfer_settings.channel_stream;
// TODO - intialize the callbacks.
// Perform HAL Initialization first.
- HAL_DMA_Init(&dmaUpdate);
+ HAL_DMA_Init(&_transfer_settings.dma_settings);
// Call dma prepare
- prepare_dma(&_transfer_settings);
+ prepare_dma(&_transfer_settings.dma_settings);
}
}
@@ -35,10 +37,11 @@ void DMATransferClass::prepare(dmatransfer_t *settings) {
* @brief Begin the DMA transfer
* @retval None
*/
-void DMATransferClass::begin(int bytes_to_transfer) {
- if (!prepared) {
+void DMATransferClass::begin(int bytes_to_transfer)
+{
+ if (!_prepared) {
// call dma prepare
- prepare_dma(&_transfer_settings);
+ prepare_dma(&_transfer_settings.dma_settings);
}
// Reset flags so it starts over
@@ -55,12 +58,13 @@ void DMATransferClass::begin(int bytes_to_transfer) {
* @brief End the DMA transfer
* @retval None
*/
-void DMATransferClass::end() {
+void DMATransferClass::end()
+{
- __HAL_DMA_DISABLE(&_transfer_settings);
+ __HAL_DMA_DISABLE(&_transfer_settings.dma_settings);
if (_prepared) {
- end_dma(&_transfer_settings);
+ end_dma(&_transfer_settings.dma_settings);
_prepared = false;
}
}
diff --git a/libraries/DMA/src/DMATransfer.h b/libraries/DMA/src/DMATransfer.h
index a1e9fca91d..7f3b136589 100644
--- a/libraries/DMA/src/DMATransfer.h
+++ b/libraries/DMA/src/DMATransfer.h
@@ -6,17 +6,17 @@
typedef struct dmatransfer_s dmatransfer_t;
#if defined(STM32F2xx) || defined(STM32F4xx) || defined(STM32F7xx)
- typedef DMA_Stream_TypeDef DMA_CS_Selection;
+typedef DMA_Stream_TypeDef DMA_CS_Selection;
#else
- typedef DMA_Channel_TypeDef DMA_CS_Selection;
+typedef DMA_Channel_TypeDef DMA_CS_Selection;
#endif
struct dmatransfer_s {
- /* Keep this the first member so casting back and forth is easy
- */
- DMA_HandleTypeDef *dma_settings;
- DMA_CS_Selection channel_stream;
+ /* Keep this the first member so casting back and forth is easy
+ */
+ DMA_HandleTypeDef dma_settings;
+ DMA_CS_Selection *channel_stream;
uint32_t transfer_direction;
boolean circular;
void (*transferComplete)(DMA_HandleTypeDef *);
From dc4bc59dccfc75214c05dfeedc5445f465561615 Mon Sep 17 00:00:00 2001
From: xC0000005 <32139633+xC0000005@users.noreply.github.com>
Date: Mon, 15 Jul 2019 09:31:41 -0700
Subject: [PATCH 08/18] Minor refactoring.
---
libraries/DMA/src/DMATransfer.cpp | 6 +++++-
libraries/DMA/src/DMATransfer.h | 6 ++++--
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/libraries/DMA/src/DMATransfer.cpp b/libraries/DMA/src/DMATransfer.cpp
index 084d80399a..3ca8074d82 100644
--- a/libraries/DMA/src/DMATransfer.cpp
+++ b/libraries/DMA/src/DMATransfer.cpp
@@ -30,6 +30,8 @@ void DMATransferClass::prepare(dmatransfer_t *settings)
// Call dma prepare
prepare_dma(&_transfer_settings.dma_settings);
+
+ _prepared = true;
}
}
@@ -45,13 +47,15 @@ void DMATransferClass::begin(int bytes_to_transfer)
}
// Reset flags so it starts over
- __HAL_DMA_CLEAR_FLAG(&_transfer_settings, DMA_FLAG_TC2 | DMA_FLAG_HT2 | DMA_FLAG_TE2);
+ __HAL_DMA_CLEAR_FLAG(&_transfer_settings.dma_settings, DMA_FLAG_TC2 | DMA_FLAG_HT2 | DMA_FLAG_TE2);
// Set size to transfer
_transfer_settings.dma_settings.Instance->CNDTR = bytes_to_transfer;
// and enable it
__HAL_DMA_ENABLE(&_transfer_settings.dma_settings);
+
+ HAL_DMA_Start(&_transfer_settings.dma_settings, _transfer_settings.source, _transfer_settings.destination, bytes_to_transfer);
}
/**
diff --git a/libraries/DMA/src/DMATransfer.h b/libraries/DMA/src/DMATransfer.h
index 7f3b136589..f7e0c29ae3 100644
--- a/libraries/DMA/src/DMATransfer.h
+++ b/libraries/DMA/src/DMATransfer.h
@@ -19,12 +19,14 @@ struct dmatransfer_s {
DMA_CS_Selection *channel_stream;
uint32_t transfer_direction;
boolean circular;
+ uint32_t source;
+ uint32_t destination;
void (*transferComplete)(DMA_HandleTypeDef *);
void (*transferHalfComplete)(DMA_HandleTypeDef *);
void (*transferError)(DMA_HandleTypeDef *);
};
-class DMATransferClass {
+typedef class DMATransferClass {
public:
void prepare(dmatransfer_t *settings);
@@ -33,7 +35,7 @@ class DMATransferClass {
private:
bool _prepared;
dmatransfer_t _transfer_settings;
-};
+} DMATransfer;
#endif /* __DMATRANSFER_H__ */
From 12825f8b490d18e91f10976159951c20c542f325 Mon Sep 17 00:00:00 2001
From: xC0000005 <32139633+xC0000005@users.noreply.github.com>
Date: Tue, 16 Jul 2019 15:40:59 -0700
Subject: [PATCH 09/18] Support starting interrupt DMAs.
---
cores/arduino/stm32/dma.c | 143 ++++++++++++++++++++++++++++++
cores/arduino/stm32/dma.h | 13 +++
libraries/DMA/src/DMATransfer.cpp | 39 +++++---
libraries/DMA/src/DMATransfer.h | 26 ++----
4 files changed, 190 insertions(+), 31 deletions(-)
diff --git a/cores/arduino/stm32/dma.c b/cores/arduino/stm32/dma.c
index 4cdef33f22..d2115c1fa8 100644
--- a/cores/arduino/stm32/dma.c
+++ b/cores/arduino/stm32/dma.c
@@ -287,6 +287,149 @@ static dma_index_t get_dma_index(
}
}
+/**
+ * @brief This function will get the interrupt number for a DMA
+ * @param dma_handle : dma channel or strea
+ * @retval None
+ */
+IRQn_Type get_dma_interrupt(
+#if defined(STM32F2xx) || defined(STM32F4xx) || defined(STM32F7xx)
+ DMA_Stream_TypeDef
+#else
+ DMA_Channel_TypeDef
+#endif
+ *instance)
+{
+ switch ((uint32_t)instance) {
+#ifdef DMA1_Channel1
+ case (uint32_t)DMA1_Channel1:
+ return DMA1_Channel1_IRQn;
+#endif
+#ifdef DMA1_Channel2
+ case (uint32_t)DMA1_Channel2:
+ return DMA1_Channel2_IRQn;
+#endif
+#ifdef DMA1_Channel3
+ case (uint32_t)DMA1_Channel3:
+ return DMA1_Channel3_IRQn;
+#endif
+#ifdef DMA1_Channel4
+ case (uint32_t)DMA1_Channel4:
+ return DMA1_Channel4_IRQn;
+#endif
+#ifdef DMA1_Channel5
+ case (uint32_t)DMA1_Channel5:
+ return DMA1_Channel5_IRQn;
+#endif
+#ifdef DMA1_Channel6
+ case (uint32_t)DMA1_Channel6:
+ return DMA1_Channel6_IRQn;
+#endif
+#ifdef DMA1_Channel7
+ case (uint32_t)DMA1_Channel7:
+ return DMA1_Channel7_IRQn;
+#endif
+#ifdef DMA2_Channel1
+ case (uint32_t)DMA2_Channel1:
+ return DMA2_Channel1_IRQn;
+#endif
+#ifdef DMA2_Channel2
+ case (uint32_t)DMA2_Channel2:
+ return DMA2_Channel2_IRQn;
+#endif
+#ifdef DMA2_Channel3
+ case (uint32_t)DMA2_Channel3:
+ return DMA2_Channel3_IRQn;
+#endif
+#ifdef DMA2_Channel4
+ case (uint32_t)DMA2_Channel4:
+ return DMA2_Channel4_IRQn;
+#endif
+#ifdef DMA2_Channel5
+ case (uint32_t)DMA2_Channel5:
+ return DMA2_Channel5_IRQn;
+#endif
+#ifdef DMA2_Channel6
+ case (uint32_t)DMA2_Channel6:
+ return DMA2_Channel6_IRQn;
+#endif
+#ifdef DMA2_Channel7
+ case (uint32_t)DMA2_Channel7:
+ return DMA2_Channel7_IRQn;
+#endif
+#ifdef DMA2_Channel8
+ case (uint32_t)DMA2_Channel8:
+ return DMA2_Channel8_IRQn;
+#endif
+#ifdef DMA1_Stream0
+ case (uint32_t)DMA1_Stream0:
+ return DMA1_Stream0_IRQn;
+#endif
+#ifdef DMA1_Stream1
+ case (uint32_t)DMA1_Stream1:
+ return DMA1_Stream1_IRQn;
+#endif
+#ifdef DMA1_Stream2
+ case (uint32_t)DMA1_Stream2:
+ return DMA1_Stream2_IRQn;
+#endif
+#ifdef DMA1_Stream3
+ case (uint32_t)DMA1_Stream3:
+ return DMA1_Stream3_IRQn;
+#endif
+#ifdef DMA1_Stream4
+ case (uint32_t)DMA1_Stream4:
+ return DMA1_Stream4_IRQn;
+#endif
+#ifdef DMA1_Stream5
+ case (uint32_t)DMA1_Stream5:
+ return DMA1_Stream5_IRQn;
+#endif
+#ifdef DMA1_Stream6
+ case (uint32_t)DMA1_Stream6:
+ return DMA1_Stream6_IRQn;
+#endif
+#ifdef DMA1_Stream7
+ case (uint32_t)DMA1_Stream7:
+ return DMA1_Stream7_IRQn;
+#endif
+#ifdef DMA2_Stream0
+ case (uint32_t)DMA2_Stream0:
+ return DMA2_Stream0_IRQn;
+#endif
+#ifdef DMA2_Stream1
+ case (uint32_t)DMA2_Stream1:
+ return DMA2_Stream1_IRQn;
+#endif
+#ifdef DMA2_Stream2
+ case (uint32_t)DMA2_Stream2:
+ return DMA2_Stream2_IRQn;
+#endif
+#ifdef DMA2_Stream3
+ case (uint32_t)DMA2_Stream3:
+ return DMA2_Stream3_IRQn;
+#endif
+#ifdef DMA2_Stream4
+ case (uint32_t)DMA2_Stream4:
+ return DMA2_Stream4_IRQn;
+#endif
+#ifdef DMA2_Stream5
+ case (uint32_t)DMA2_Stream5:
+ return DMA2_Stream5_IRQn;
+#endif
+#ifdef DMA2_Stream6
+ case (uint32_t)DMA2_Stream6:
+ return DMA2_Stream6_IRQn;
+#endif
+#ifdef DMA2_Stream7
+ case (uint32_t)DMA2_Stream7:
+ return DMA2_Stream7_IRQn;
+#endif
+ default:
+ return NC;
+ }
+}
+
/**
* @brief This function will store the DMA handle in the appropriate slot
* @param dma_handle : dma handle
diff --git a/cores/arduino/stm32/dma.h b/cores/arduino/stm32/dma.h
index 85d21d54f4..0909dd60ef 100644
--- a/cores/arduino/stm32/dma.h
+++ b/cores/arduino/stm32/dma.h
@@ -46,6 +46,19 @@ extern "C" {
#include
+/**
+ * @brief This function will get the interrupt number for a DMA
+ * @param dma_handle : dma channel or strea
+ * @retval None
+ */
+IRQn_Type get_dma_interrupt(
+#if defined(STM32F2xx) || defined(STM32F4xx) || defined(STM32F7xx)
+ DMA_Stream_TypeDef
+#else
+ DMA_Channel_TypeDef
+#endif
+ *instance);
+
/**
* @brief This function will store the DMA handle in the appropriate slot
* @param dma_handle : dma handle
diff --git a/libraries/DMA/src/DMATransfer.cpp b/libraries/DMA/src/DMATransfer.cpp
index 3ca8074d82..f6fa26c680 100644
--- a/libraries/DMA/src/DMATransfer.cpp
+++ b/libraries/DMA/src/DMATransfer.cpp
@@ -7,14 +7,14 @@
* @param settings : dma transfer settings
* @retval None
*/
-void DMATransferClass::prepare(dmatransfer_t *settings)
+void DMATransferClass::prepare(DMA_HandleTypeDef *settings)
{
if (!_prepared) {
// TODO - figure out which DMA to enable the clock for.
__HAL_RCC_DMA1_CLK_ENABLE();
- memcpy(&_transfer_settings, settings, sizeof(dmatransfer_t));
-
+ memcpy(&_dma, settings, sizeof(DMA_HandleTypeDef));
+ /*
_transfer_settings.dma_settings.Init.Direction = _transfer_settings.transfer_direction;
_transfer_settings.dma_settings.Init.PeriphInc = DMA_PINC_DISABLE;
_transfer_settings.dma_settings.Init.MemInc = DMA_MINC_DISABLE;
@@ -24,12 +24,17 @@ void DMATransferClass::prepare(dmatransfer_t *settings)
_transfer_settings.dma_settings.Init.Priority = DMA_PRIORITY_VERY_HIGH;
_transfer_settings.dma_settings.Instance = _transfer_settings.channel_stream;
// TODO - intialize the callbacks.
+ */
// Perform HAL Initialization first.
- HAL_DMA_Init(&_transfer_settings.dma_settings);
+ HAL_DMA_Init(&_dma);
+ _dma.XferCpltCallback = settings->XferCpltCallback;
+ _dma.XferHalfCpltCallback = settings->XferHalfCpltCallback;
+ _dma.XferErrorCallback = settings->XferErrorCallback;
+ _dma.XferAbortCallback = settings->XferAbortCallback;
// Call dma prepare
- prepare_dma(&_transfer_settings.dma_settings);
+ prepare_dma(&_dma);
_prepared = true;
}
@@ -39,23 +44,31 @@ void DMATransferClass::prepare(dmatransfer_t *settings)
* @brief Begin the DMA transfer
* @retval None
*/
-void DMATransferClass::begin(int bytes_to_transfer)
+void DMATransferClass::begin(uint32_t source, uint32_t destination, int bytes_to_transfer, bool use_interrupt)
{
if (!_prepared) {
// call dma prepare
- prepare_dma(&_transfer_settings.dma_settings);
+ prepare_dma(&_dma);
}
// Reset flags so it starts over
- __HAL_DMA_CLEAR_FLAG(&_transfer_settings.dma_settings, DMA_FLAG_TC2 | DMA_FLAG_HT2 | DMA_FLAG_TE2);
+ __HAL_DMA_CLEAR_FLAG(&_dma, DMA_FLAG_TC2 | DMA_FLAG_HT2 | DMA_FLAG_TE2);
// Set size to transfer
- _transfer_settings.dma_settings.Instance->CNDTR = bytes_to_transfer;
+ _dma.Instance->CNDTR = bytes_to_transfer;
// and enable it
- __HAL_DMA_ENABLE(&_transfer_settings.dma_settings);
+ __HAL_DMA_ENABLE(&_dma);
- HAL_DMA_Start(&_transfer_settings.dma_settings, _transfer_settings.source, _transfer_settings.destination, bytes_to_transfer);
+ if (use_interrupt) {
+ IRQn_Type interrupt_number = get_dma_interrupt(_dma.Instance);
+ HAL_NVIC_SetPriority(interrupt_number, 0, 0);
+ HAL_NVIC_EnableIRQ(interrupt_number);
+ HAL_DMA_Start_IT(&_dma, source, destination, bytes_to_transfer);
+ }
+ else {
+ HAL_DMA_Start(&_dma, source, destination, bytes_to_transfer);
+ }
}
/**
@@ -65,10 +78,10 @@ void DMATransferClass::begin(int bytes_to_transfer)
void DMATransferClass::end()
{
- __HAL_DMA_DISABLE(&_transfer_settings.dma_settings);
+ __HAL_DMA_DISABLE(&_dma);
if (_prepared) {
- end_dma(&_transfer_settings.dma_settings);
+ end_dma(&_dma);
_prepared = false;
}
}
diff --git a/libraries/DMA/src/DMATransfer.h b/libraries/DMA/src/DMATransfer.h
index f7e0c29ae3..58e0adfa87 100644
--- a/libraries/DMA/src/DMATransfer.h
+++ b/libraries/DMA/src/DMATransfer.h
@@ -11,30 +11,20 @@ typedef DMA_Stream_TypeDef DMA_CS_Selection;
typedef DMA_Channel_TypeDef DMA_CS_Selection;
#endif
-
-struct dmatransfer_s {
- /* Keep this the first member so casting back and forth is easy
- */
- DMA_HandleTypeDef dma_settings;
- DMA_CS_Selection *channel_stream;
- uint32_t transfer_direction;
- boolean circular;
- uint32_t source;
- uint32_t destination;
- void (*transferComplete)(DMA_HandleTypeDef *);
- void (*transferHalfComplete)(DMA_HandleTypeDef *);
- void (*transferError)(DMA_HandleTypeDef *);
-};
-
typedef class DMATransferClass {
public:
- void prepare(dmatransfer_t *settings);
- void begin(int bytes_to_transfer);
+ /*
+ DMATransferClass(uint32_t transfer_direction, boolean circular, uint32_t source, uint32_t destination){
+ this->dma.Init.
+ }*/
+
+ void prepare(DMA_HandleTypeDef *settings);
+ void begin(uint32_t source, uint32_t destination, int bytes_to_transfer, bool use_interrupt = false);
void end();
private:
bool _prepared;
- dmatransfer_t _transfer_settings;
+ DMA_HandleTypeDef _dma;
} DMATransfer;
From 01ee2d4459e513da13696ed80bddadedcbb62f0d Mon Sep 17 00:00:00 2001
From: xC0000005 <32139633+xC0000005@users.noreply.github.com>
Date: Thu, 1 Aug 2019 11:59:45 -1000
Subject: [PATCH 10/18] Minor fix.
---
libraries/DMA/src/DMATransfer.cpp | 39 ++++++++++++++++++++++++++++---
1 file changed, 36 insertions(+), 3 deletions(-)
diff --git a/libraries/DMA/src/DMATransfer.cpp b/libraries/DMA/src/DMATransfer.cpp
index f6fa26c680..18bffe070a 100644
--- a/libraries/DMA/src/DMATransfer.cpp
+++ b/libraries/DMA/src/DMATransfer.cpp
@@ -11,8 +11,12 @@ void DMATransferClass::prepare(DMA_HandleTypeDef *settings)
{
if (!_prepared) {
// TODO - figure out which DMA to enable the clock for.
- __HAL_RCC_DMA1_CLK_ENABLE();
-
+ #ifdef DMA1_BASE
+ __HAL_RCC_DMA1_CLK_ENABLE();
+ #endif
+ #ifdef DMA2_BASE
+ __HAL_RCC_DMA2_CLK_ENABLE();
+ #endif
memcpy(&_dma, settings, sizeof(DMA_HandleTypeDef));
/*
_transfer_settings.dma_settings.Init.Direction = _transfer_settings.transfer_direction;
@@ -46,16 +50,45 @@ void DMATransferClass::prepare(DMA_HandleTypeDef *settings)
*/
void DMATransferClass::begin(uint32_t source, uint32_t destination, int bytes_to_transfer, bool use_interrupt)
{
+ // Make sure we're set to initialize
+ this->end();
+
if (!_prepared) {
// call dma prepare
prepare_dma(&_dma);
}
+ /**
+ * @brief Clear the DMA Stream pending flags.
+ * @param __HANDLE__: DMA handle
+ * @param __FLAG__: specifies the flag to clear.
+ * This parameter can be any combination of the following values:
+ * @arg DMA_FLAG_TCIFx: Transfer complete flag.
+ * @arg DMA_FLAG_HTIFx: Half transfer complete flag.
+ * @arg DMA_FLAG_TEIFx: Transfer error flag.
+ * @arg DMA_FLAG_DMEIFx: Direct mode error flag.
+ * @arg DMA_FLAG_FEIFx: FIFO error flag.
+ * Where x can be 0_4, 1_5, 2_6 or 3_7 to select the DMA Stream flag.
+ * @retval None
+ */
+
// Reset flags so it starts over
- __HAL_DMA_CLEAR_FLAG(&_dma, DMA_FLAG_TC2 | DMA_FLAG_HT2 | DMA_FLAG_TE2);
+ __HAL_DMA_CLEAR_FLAG(&_dma, __HAL_DMA_GET_TC_FLAG_INDEX(&_dma));
+ __HAL_DMA_CLEAR_FLAG(&_dma, __HAL_DMA_GET_HT_FLAG_INDEX(&_dma));
+ __HAL_DMA_CLEAR_FLAG(&_dma, __HAL_DMA_GET_TE_FLAG_INDEX(&_dma));
+
+ #if defined(STM32F2xx) || #defined(STM32F4xx) || #defined(STM32F7xx)
+ __HAL_DMA_CLEAR_FLAG(hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma));
+ __HAL_DMA_CLEAR_FLAG(hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma));
+ #endif
// Set size to transfer
+
+ #if defined(__HAL_DMA_SET_COUNTER)
+ __HAL_DMA_SET_COUNTER(&_dma, bytes_to_transfer);
+ #else
_dma.Instance->CNDTR = bytes_to_transfer;
+ #endif
// and enable it
__HAL_DMA_ENABLE(&_dma);
From 8b92b35f5ed53a3b73984de9df4ba8d2c817b1fe Mon Sep 17 00:00:00 2001
From: xC0000005 <32139633+xC0000005@users.noreply.github.com>
Date: Mon, 9 Dec 2019 20:48:11 -0800
Subject: [PATCH 11/18] Astyle fixes.
---
cores/arduino/stm32/dma.c | 418 +++++++++++++++++++-------------------
cores/arduino/stm32/dma.h | 6 +-
2 files changed, 212 insertions(+), 212 deletions(-)
diff --git a/cores/arduino/stm32/dma.c b/cores/arduino/stm32/dma.c
index d2115c1fa8..b74c64f5ef 100644
--- a/cores/arduino/stm32/dma.c
+++ b/cores/arduino/stm32/dma.c
@@ -45,99 +45,99 @@ extern "C" {
typedef enum {
#ifdef DMA1_Channel1
- DMA1_CHANNEL1_INDEX,
+ DMA1_CHANNEL1_INDEX,
#endif
#ifdef DMA1_Channel2
- DMA1_CHANNEL2_INDEX,
+ DMA1_CHANNEL2_INDEX,
#endif
#ifdef DMA1_Channel3
- DMA1_CHANNEL3_INDEX,
+ DMA1_CHANNEL3_INDEX,
#endif
#ifdef DMA1_Channel4
- DMA1_CHANNEL4_INDEX,
+ DMA1_CHANNEL4_INDEX,
#endif
#ifdef DMA1_Channel5
- DMA1_CHANNEL5_INDEX,
+ DMA1_CHANNEL5_INDEX,
#endif
#ifdef DMA1_Channel6
- DMA1_CHANNEL6_INDEX,
+ DMA1_CHANNEL6_INDEX,
#endif
#ifdef DMA1_Channel7
- DMA1_CHANNEL7_INDEX,
+ DMA1_CHANNEL7_INDEX,
#endif
#ifdef DMA2_Channel1
- DMA2_CHANNEL1_INDEX,
+ DMA2_CHANNEL1_INDEX,
#endif
#ifdef DMA2_Channel2
- DMA2_CHANNEL2_INDEX,
+ DMA2_CHANNEL2_INDEX,
#endif
#ifdef DMA2_Channel3
- DMA2_CHANNEL3_INDEX,
+ DMA2_CHANNEL3_INDEX,
#endif
#ifdef DMA2_Channel4
- DMA2_CHANNEL4_INDEX,
+ DMA2_CHANNEL4_INDEX,
#endif
#ifdef DMA2_Channel5
- DMA2_CHANNEL5_INDEX,
+ DMA2_CHANNEL5_INDEX,
#endif
#ifdef DMA2_Channel6
- DMA2_CHANNEL6_INDEX,
+ DMA2_CHANNEL6_INDEX,
#endif
#ifdef DMA2_Channel7
- DMA2_CHANNEL7_INDEX,
+ DMA2_CHANNEL7_INDEX,
#endif
#ifdef DMA2_Channel8
- DMA2_CHANNEL8_INDEX,
+ DMA2_CHANNEL8_INDEX,
#endif
#ifdef DMA1_Stream0
- DMA1_STREAM0_INDEX,
+ DMA1_STREAM0_INDEX,
#endif
#ifdef DMA1_Stream1
- DMA1_STREAM1_INDEX,
+ DMA1_STREAM1_INDEX,
#endif
#ifdef DMA1_Stream2
- DMA1_STREAM2_INDEX,
+ DMA1_STREAM2_INDEX,
#endif
#ifdef DMA1_Stream3
- DMA1_STREAM3_INDEX,
+ DMA1_STREAM3_INDEX,
#endif
#ifdef DMA1_Stream4
- DMA1_STREAM4_INDEX,
+ DMA1_STREAM4_INDEX,
#endif
#ifdef DMA1_Stream5
- DMA1_STREAM5_INDEX,
+ DMA1_STREAM5_INDEX,
#endif
#ifdef DMA1_Stream6
- DMA1_STREAM6_INDEX,
+ DMA1_STREAM6_INDEX,
#endif
#ifdef DMA1_Stream7
- DMA1_STREAM7_INDEX,
+ DMA1_STREAM7_INDEX,
#endif
#ifdef DMA2_Stream0
- DMA2_STREAM0_INDEX,
+ DMA2_STREAM0_INDEX,
#endif
#ifdef DMA2_Stream1
- DMA2_STREAM1_INDEX,
+ DMA2_STREAM1_INDEX,
#endif
#ifdef DMA2_Stream2
- DMA2_STREAM2_INDEX,
+ DMA2_STREAM2_INDEX,
#endif
#ifdef DMA2_Stream3
- DMA2_STREAM3_INDEX,
+ DMA2_STREAM3_INDEX,
#endif
#ifdef DMA2_Stream4
- DMA2_STREAM4_INDEX,
+ DMA2_STREAM4_INDEX,
#endif
#ifdef DMA2_Stream5
- DMA2_STREAM5_INDEX,
+ DMA2_STREAM5_INDEX,
#endif
#ifdef DMA2_Stream6
- DMA2_STREAM6_INDEX,
+ DMA2_STREAM6_INDEX,
#endif
#ifdef DMA2_Stream7
- DMA2_STREAM7_INDEX,
+ DMA2_STREAM7_INDEX,
#endif
- DMA_CHANNEL_NUM
+ DMA_CHANNEL_NUM
} dma_index_t;
#define NC (dma_index_t)-1
@@ -151,140 +151,140 @@ static DMA_HandleTypeDef *dma_handles[DMA_CHANNEL_NUM] = {NULL};
*/
static dma_index_t get_dma_index(
#if defined(STM32F2xx) || defined(STM32F4xx) || defined(STM32F7xx)
- DMA_Stream_TypeDef
+ DMA_Stream_TypeDef
#else
- DMA_Channel_TypeDef
+ DMA_Channel_TypeDef
#endif
- *instance)
+ *instance)
{
- switch ((uint32_t)instance) {
+ switch ((uint32_t)instance) {
#ifdef DMA1_Channel1
case (uint32_t)DMA1_Channel1:
- return DMA1_CHANNEL1_INDEX;
+ return DMA1_CHANNEL1_INDEX;
#endif
#ifdef DMA1_Channel2
case (uint32_t)DMA1_Channel2:
- return DMA1_CHANNEL2_INDEX;
+ return DMA1_CHANNEL2_INDEX;
#endif
#ifdef DMA1_Channel3
case (uint32_t)DMA1_Channel3:
- return DMA1_CHANNEL3_INDEX;
+ return DMA1_CHANNEL3_INDEX;
#endif
#ifdef DMA1_Channel4
case (uint32_t)DMA1_Channel4:
- return DMA1_CHANNEL4_INDEX;
+ return DMA1_CHANNEL4_INDEX;
#endif
#ifdef DMA1_Channel5
case (uint32_t)DMA1_Channel5:
- return DMA1_CHANNEL5_INDEX;
+ return DMA1_CHANNEL5_INDEX;
#endif
#ifdef DMA1_Channel6
case (uint32_t)DMA1_Channel6:
- return DMA1_CHANNEL6_INDEX;
+ return DMA1_CHANNEL6_INDEX;
#endif
#ifdef DMA1_Channel7
case (uint32_t)DMA1_Channel7:
- return DMA1_CHANNEL7_INDEX;
+ return DMA1_CHANNEL7_INDEX;
#endif
#ifdef DMA2_Channel1
case (uint32_t)DMA2_Channel1:
- return DMA2_CHANNEL1_INDEX;
+ return DMA2_CHANNEL1_INDEX;
#endif
#ifdef DMA2_Channel2
case (uint32_t)DMA2_Channel2:
- return DMA2_CHANNEL2_INDEX;
+ return DMA2_CHANNEL2_INDEX;
#endif
#ifdef DMA2_Channel3
case (uint32_t)DMA2_Channel3:
- return DMA2_CHANNEL3_INDEX;
+ return DMA2_CHANNEL3_INDEX;
#endif
#ifdef DMA2_Channel4
case (uint32_t)DMA2_Channel4:
- return DMA2_CHANNEL4_INDEX;
+ return DMA2_CHANNEL4_INDEX;
#endif
#ifdef DMA2_Channel5
case (uint32_t)DMA2_Channel5:
- return DMA2_CHANNEL5_INDEX;
+ return DMA2_CHANNEL5_INDEX;
#endif
#ifdef DMA2_Channel6
case (uint32_t)DMA2_Channel6:
- return DMA2_CHANNEL6_INDEX;
+ return DMA2_CHANNEL6_INDEX;
#endif
#ifdef DMA2_Channel7
case (uint32_t)DMA2_Channel7:
- return DMA2_CHANNEL7_INDEX;
+ return DMA2_CHANNEL7_INDEX;
#endif
#ifdef DMA2_Channel8
case (uint32_t)DMA2_Channel8:
- return DMA2_CHANNEL8_INDEX;
+ return DMA2_CHANNEL8_INDEX;
#endif
#ifdef DMA1_Stream0
case (uint32_t)DMA1_Stream0:
- return DMA1_STREAM0_INDEX;
+ return DMA1_STREAM0_INDEX;
#endif
#ifdef DMA1_Stream1
case (uint32_t)DMA1_Stream1:
- return DMA1_STREAM1_INDEX;
+ return DMA1_STREAM1_INDEX;
#endif
#ifdef DMA1_Stream2
case (uint32_t)DMA1_Stream2:
- return DMA1_STREAM2_INDEX;
+ return DMA1_STREAM2_INDEX;
#endif
#ifdef DMA1_Stream3
case (uint32_t)DMA1_Stream3:
- return DMA1_STREAM3_INDEX;
+ return DMA1_STREAM3_INDEX;
#endif
#ifdef DMA1_Stream4
case (uint32_t)DMA1_Stream4:
- return DMA1_STREAM4_INDEX;
+ return DMA1_STREAM4_INDEX;
#endif
#ifdef DMA1_Stream5
case (uint32_t)DMA1_Stream5:
- return DMA1_STREAM5_INDEX;
+ return DMA1_STREAM5_INDEX;
#endif
#ifdef DMA1_Stream6
case (uint32_t)DMA1_Stream6:
- return DMA1_STREAM6_INDEX;
+ return DMA1_STREAM6_INDEX;
#endif
#ifdef DMA1_Stream7
case (uint32_t)DMA1_Stream7:
- return DMA1_STREAM7_INDEX;
+ return DMA1_STREAM7_INDEX;
#endif
#ifdef DMA2_Stream0
case (uint32_t)DMA2_Stream0:
- return DMA2_STREAM0_INDEX;
+ return DMA2_STREAM0_INDEX;
#endif
#ifdef DMA2_Stream1
case (uint32_t)DMA2_Stream1:
- return DMA2_STREAM1_INDEX;
+ return DMA2_STREAM1_INDEX;
#endif
#ifdef DMA2_Stream2
case (uint32_t)DMA2_Stream2:
- return DMA2_STREAM2_INDEX;
+ return DMA2_STREAM2_INDEX;
#endif
#ifdef DMA2_Stream3
case (uint32_t)DMA2_Stream3:
- return DMA2_STREAM3_INDEX;
+ return DMA2_STREAM3_INDEX;
#endif
#ifdef DMA2_Stream4
case (uint32_t)DMA2_Stream4:
- return DMA2_STREAM4_INDEX;
+ return DMA2_STREAM4_INDEX;
#endif
#ifdef DMA2_Stream5
case (uint32_t)DMA2_Stream5:
- return DMA2_STREAM5_INDEX;
+ return DMA2_STREAM5_INDEX;
#endif
#ifdef DMA2_Stream6
case (uint32_t)DMA2_Stream6:
- return DMA2_STREAM6_INDEX;
+ return DMA2_STREAM6_INDEX;
#endif
#ifdef DMA2_Stream7
case (uint32_t)DMA2_Stream7:
- return DMA2_STREAM7_INDEX;
+ return DMA2_STREAM7_INDEX;
#endif
default:
- return NC;
- }
+ return NC;
+ }
}
/**
@@ -294,140 +294,140 @@ static dma_index_t get_dma_index(
*/
IRQn_Type get_dma_interrupt(
#if defined(STM32F2xx) || defined(STM32F4xx) || defined(STM32F7xx)
- DMA_Stream_TypeDef
+ DMA_Stream_TypeDef
#else
- DMA_Channel_TypeDef
+ DMA_Channel_TypeDef
#endif
- *instance)
+ *instance)
{
- switch ((uint32_t)instance) {
+ switch ((uint32_t)instance) {
#ifdef DMA1_Channel1
case (uint32_t)DMA1_Channel1:
- return DMA1_Channel1_IRQn;
+ return DMA1_Channel1_IRQn;
#endif
#ifdef DMA1_Channel2
case (uint32_t)DMA1_Channel2:
- return DMA1_Channel2_IRQn;
+ return DMA1_Channel2_IRQn;
#endif
#ifdef DMA1_Channel3
case (uint32_t)DMA1_Channel3:
- return DMA1_Channel3_IRQn;
+ return DMA1_Channel3_IRQn;
#endif
#ifdef DMA1_Channel4
case (uint32_t)DMA1_Channel4:
- return DMA1_Channel4_IRQn;
+ return DMA1_Channel4_IRQn;
#endif
#ifdef DMA1_Channel5
case (uint32_t)DMA1_Channel5:
- return DMA1_Channel5_IRQn;
+ return DMA1_Channel5_IRQn;
#endif
#ifdef DMA1_Channel6
case (uint32_t)DMA1_Channel6:
- return DMA1_Channel6_IRQn;
+ return DMA1_Channel6_IRQn;
#endif
#ifdef DMA1_Channel7
case (uint32_t)DMA1_Channel7:
- return DMA1_Channel7_IRQn;
+ return DMA1_Channel7_IRQn;
#endif
#ifdef DMA2_Channel1
case (uint32_t)DMA2_Channel1:
- return DMA2_Channel1_IRQn;
+ return DMA2_Channel1_IRQn;
#endif
#ifdef DMA2_Channel2
case (uint32_t)DMA2_Channel2:
- return DMA2_Channel2_IRQn;
+ return DMA2_Channel2_IRQn;
#endif
#ifdef DMA2_Channel3
case (uint32_t)DMA2_Channel3:
- return DMA2_Channel3_IRQn;
+ return DMA2_Channel3_IRQn;
#endif
#ifdef DMA2_Channel4
case (uint32_t)DMA2_Channel4:
- return DMA2_Channel4_IRQn;
+ return DMA2_Channel4_IRQn;
#endif
#ifdef DMA2_Channel5
case (uint32_t)DMA2_Channel5:
- return DMA2_Channel5_IRQn;
+ return DMA2_Channel5_IRQn;
#endif
#ifdef DMA2_Channel6
case (uint32_t)DMA2_Channel6:
- return DMA2_Channel6_IRQn;
+ return DMA2_Channel6_IRQn;
#endif
#ifdef DMA2_Channel7
case (uint32_t)DMA2_Channel7:
- return DMA2_Channel7_IRQn;
+ return DMA2_Channel7_IRQn;
#endif
#ifdef DMA2_Channel8
case (uint32_t)DMA2_Channel8:
- return DMA2_Channel8_IRQn;
+ return DMA2_Channel8_IRQn;
#endif
#ifdef DMA1_Stream0
case (uint32_t)DMA1_Stream0:
- return DMA1_Stream0_IRQn;
+ return DMA1_Stream0_IRQn;
#endif
#ifdef DMA1_Stream1
case (uint32_t)DMA1_Stream1:
- return DMA1_Stream1_IRQn;
+ return DMA1_Stream1_IRQn;
#endif
#ifdef DMA1_Stream2
case (uint32_t)DMA1_Stream2:
- return DMA1_Stream2_IRQn;
+ return DMA1_Stream2_IRQn;
#endif
#ifdef DMA1_Stream3
case (uint32_t)DMA1_Stream3:
- return DMA1_Stream3_IRQn;
+ return DMA1_Stream3_IRQn;
#endif
#ifdef DMA1_Stream4
case (uint32_t)DMA1_Stream4:
- return DMA1_Stream4_IRQn;
+ return DMA1_Stream4_IRQn;
#endif
#ifdef DMA1_Stream5
case (uint32_t)DMA1_Stream5:
- return DMA1_Stream5_IRQn;
+ return DMA1_Stream5_IRQn;
#endif
#ifdef DMA1_Stream6
case (uint32_t)DMA1_Stream6:
- return DMA1_Stream6_IRQn;
+ return DMA1_Stream6_IRQn;
#endif
#ifdef DMA1_Stream7
case (uint32_t)DMA1_Stream7:
- return DMA1_Stream7_IRQn;
+ return DMA1_Stream7_IRQn;
#endif
#ifdef DMA2_Stream0
case (uint32_t)DMA2_Stream0:
- return DMA2_Stream0_IRQn;
+ return DMA2_Stream0_IRQn;
#endif
#ifdef DMA2_Stream1
case (uint32_t)DMA2_Stream1:
- return DMA2_Stream1_IRQn;
+ return DMA2_Stream1_IRQn;
#endif
#ifdef DMA2_Stream2
case (uint32_t)DMA2_Stream2:
- return DMA2_Stream2_IRQn;
+ return DMA2_Stream2_IRQn;
#endif
#ifdef DMA2_Stream3
case (uint32_t)DMA2_Stream3:
- return DMA2_Stream3_IRQn;
+ return DMA2_Stream3_IRQn;
#endif
#ifdef DMA2_Stream4
case (uint32_t)DMA2_Stream4:
- return DMA2_Stream4_IRQn;
+ return DMA2_Stream4_IRQn;
#endif
#ifdef DMA2_Stream5
case (uint32_t)DMA2_Stream5:
- return DMA2_Stream5_IRQn;
+ return DMA2_Stream5_IRQn;
#endif
#ifdef DMA2_Stream6
case (uint32_t)DMA2_Stream6:
- return DMA2_Stream6_IRQn;
+ return DMA2_Stream6_IRQn;
#endif
#ifdef DMA2_Stream7
case (uint32_t)DMA2_Stream7:
- return DMA2_Stream7_IRQn;
+ return DMA2_Stream7_IRQn;
#endif
default:
- return NC;
- }
+ return NC;
+ }
}
/**
@@ -437,11 +437,11 @@ IRQn_Type get_dma_interrupt(
*/
void prepare_dma(DMA_HandleTypeDef *dma_handle)
{
- dma_index_t dma_index = get_dma_index(dma_handle->Instance);
- if (dma_index == NC) {
- return;
- }
- dma_handles[dma_index] = dma_handle;
+ dma_index_t dma_index = get_dma_index(dma_handle->Instance);
+ if (dma_index == NC) {
+ return;
+ }
+ dma_handles[dma_index] = dma_handle;
}
/**
@@ -451,11 +451,11 @@ void prepare_dma(DMA_HandleTypeDef *dma_handle)
*/
void end_dma(DMA_HandleTypeDef *dma_handle)
{
- dma_index_t dma_index = get_dma_index(dma_handle->Instance);
- if (dma_index == NC) {
- return;
- }
- dma_handles[dma_index] = NULL;
+ dma_index_t dma_index = get_dma_index(dma_handle->Instance);
+ if (dma_index == NC) {
+ return;
+ }
+ dma_handles[dma_index] = NULL;
}
#ifdef DMA1_Channel1
@@ -466,9 +466,9 @@ void end_dma(DMA_HandleTypeDef *dma_handle)
*/
void DMA1_Channel1_IRQHandler()
{
- if (dma_handles[DMA1_CHANNEL1_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL1_INDEX]);
- }
+ if (dma_handles[DMA1_CHANNEL1_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL1_INDEX]);
+ }
}
#endif
@@ -480,9 +480,9 @@ void DMA1_Channel1_IRQHandler()
*/
void DMA1_Channel2_IRQHandler()
{
- if (dma_handles[DMA1_CHANNEL2_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL2_INDEX]);
- }
+ if (dma_handles[DMA1_CHANNEL2_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL2_INDEX]);
+ }
}
#endif
@@ -494,9 +494,9 @@ void DMA1_Channel2_IRQHandler()
*/
void DMA1_Channel3_IRQHandler()
{
- if (dma_handles[DMA1_CHANNEL3_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL3_INDEX]);
- }
+ if (dma_handles[DMA1_CHANNEL3_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL3_INDEX]);
+ }
}
#endif
@@ -508,9 +508,9 @@ void DMA1_Channel3_IRQHandler()
*/
void DMA1_Channel4_IRQHandler()
{
- if (dma_handles[DMA1_CHANNEL4_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL4_INDEX]);
- }
+ if (dma_handles[DMA1_CHANNEL4_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL4_INDEX]);
+ }
}
#endif
@@ -522,9 +522,9 @@ void DMA1_Channel4_IRQHandler()
*/
void DMA1_Channel5_IRQHandler()
{
- if (dma_handles[DMA1_CHANNEL5_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL5_INDEX]);
- }
+ if (dma_handles[DMA1_CHANNEL5_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL5_INDEX]);
+ }
}
#endif
@@ -535,9 +535,9 @@ void DMA1_Channel5_IRQHandler()
*/
void DMA1_Channel6_IRQHandler()
{
- if (dma_handles[DMA1_CHANNEL6_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL6_INDEX]);
- }
+ if (dma_handles[DMA1_CHANNEL6_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL6_INDEX]);
+ }
}
#endif
@@ -549,9 +549,9 @@ void DMA1_Channel6_IRQHandler()
*/
void DMA1_Channel7_IRQHandler()
{
- if (dma_handles[DMA1_CHANNEL7_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL7_INDEX]);
- }
+ if (dma_handles[DMA1_CHANNEL7_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL7_INDEX]);
+ }
}
#endif
@@ -563,9 +563,9 @@ void DMA1_Channel7_IRQHandler()
*/
void DMA2_Channel1_IRQHandler()
{
- if (dma_handles[DMA2_CHANNEL1_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL1_INDEX]);
- }
+ if (dma_handles[DMA2_CHANNEL1_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL1_INDEX]);
+ }
}
#endif
@@ -577,9 +577,9 @@ void DMA2_Channel1_IRQHandler()
*/
void DMA2_Channel2_IRQHandler()
{
- if (dma_handles[DMA2_CHANNEL2_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL2_INDEX]);
- }
+ if (dma_handles[DMA2_CHANNEL2_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL2_INDEX]);
+ }
}
#endif
@@ -591,9 +591,9 @@ void DMA2_Channel2_IRQHandler()
*/
void DMA2_Channel3_IRQHandler()
{
- if (dma_handles[DMA2_CHANNEL3_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL3_INDEX]);
- }
+ if (dma_handles[DMA2_CHANNEL3_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL3_INDEX]);
+ }
}
#endif
@@ -605,9 +605,9 @@ void DMA2_Channel3_IRQHandler()
*/
void DMA2_Channel4_IRQHandler()
{
- if (dma_handles[DMA2_CHANNEL4_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL4_INDEX]);
- }
+ if (dma_handles[DMA2_CHANNEL4_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL4_INDEX]);
+ }
}
#endif
@@ -619,9 +619,9 @@ void DMA2_Channel4_IRQHandler()
*/
void DMA2_Channel5_IRQHandler()
{
- if (dma_handles[DMA2_CHANNEL5_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL5_INDEX]);
- }
+ if (dma_handles[DMA2_CHANNEL5_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL5_INDEX]);
+ }
}
#endif
@@ -633,9 +633,9 @@ void DMA2_Channel5_IRQHandler()
*/
void DMA2_Channel6_IRQHandler()
{
- if (dma_handles[DMA2_CHANNEL6_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL6_INDEX]);
- }
+ if (dma_handles[DMA2_CHANNEL6_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL6_INDEX]);
+ }
}
#endif
@@ -647,9 +647,9 @@ void DMA2_Channel6_IRQHandler()
*/
void DMA2_Channel7_IRQHandler()
{
- if (dma_handles[DMA2_CHANNEL7_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL7_INDEX]);
- }
+ if (dma_handles[DMA2_CHANNEL7_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL7_INDEX]);
+ }
}
#endif
@@ -661,153 +661,153 @@ void DMA2_Channel7_IRQHandler()
*/
void DMA2_Channel8_IRQHandler()
{
- if (dma_handles[DMA2_CHANNEL8_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL8_INDEX]);
- }
+ if (dma_handles[DMA2_CHANNEL8_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL8_INDEX]);
+ }
}
#endif
#ifdef DMA1_Stream0
void DMA1_Stream0_IRQHandler()
{
- if (dma_handles[DMA1_STREAM0_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM0_INDEX]);
- }
+ if (dma_handles[DMA1_STREAM0_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM0_INDEX]);
+ }
}
#endif
#ifdef DMA1_Stream1
void DMA1_Stream1_IRQHandler()
{
- if (dma_handles[DMA1_STREAM1_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM1_INDEX]);
- }
+ if (dma_handles[DMA1_STREAM1_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM1_INDEX]);
+ }
}
#endif
#ifdef DMA1_Stream2
void DMA1_Stream2_IRQHandler()
{
- if (dma_handles[DMA1_STREAM2_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM2_INDEX]);
- }
+ if (dma_handles[DMA1_STREAM2_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM2_INDEX]);
+ }
}
#endif
#ifdef DMA1_Stream3
void DMA1_Stream3_IRQHandler()
{
- if (dma_handles[DMA1_STREAM3_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM3_INDEX]);
- }
+ if (dma_handles[DMA1_STREAM3_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM3_INDEX]);
+ }
}
#endif
#ifdef DMA1_Stream4
void DMA1_Stream4_IRQHandler()
{
- if (dma_handles[DMA1_STREAM4_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM4_INDEX]);
- }
+ if (dma_handles[DMA1_STREAM4_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM4_INDEX]);
+ }
}
#endif
#ifdef DMA1_Stream5
void DMA1_Stream5_IRQHandler()
{
- if (dma_handles[DMA1_STREAM5_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM5_INDEX]);
- }
+ if (dma_handles[DMA1_STREAM5_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM5_INDEX]);
+ }
}
#endif
#ifdef DMA1_Stream6
void DMA1_Stream6_IRQHandler()
{
- if (dma_handles[DMA1_STREAM6_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM6_INDEX]);
- }
+ if (dma_handles[DMA1_STREAM6_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM6_INDEX]);
+ }
}
#endif
#ifdef DMA1_Stream7
void DMA1_Stream7_IRQHandler()
{
- if (dma_handles[DMA1_STREAM7_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM7_INDEX]);
- }
+ if (dma_handles[DMA1_STREAM7_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM7_INDEX]);
+ }
}
#endif
#ifdef DMA2_Stream0
void DMA2_Stream0_IRQHandler()
{
- if (dma_handles[DMA2_STREAM0_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM0_INDEX]);
- }
+ if (dma_handles[DMA2_STREAM0_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM0_INDEX]);
+ }
}
#endif
#ifdef DMA2_Stream1
void DMA2_Stream1_IRQHandler()
{
- if (dma_handles[DMA2_STREAM1_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM1_INDEX]);
- }
+ if (dma_handles[DMA2_STREAM1_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM1_INDEX]);
+ }
}
#endif
#ifdef DMA2_Stream2
void DMA2_Stream2_IRQHandler()
{
- if (dma_handles[DMA2_STREAM2_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM2_INDEX]);
- }
+ if (dma_handles[DMA2_STREAM2_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM2_INDEX]);
+ }
}
#endif
#ifdef DMA2_Stream3
void DMA2_Stream3_IRQHandler()
{
- if (dma_handles[DMA2_STREAM3_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM3_INDEX]);
- }
+ if (dma_handles[DMA2_STREAM3_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM3_INDEX]);
+ }
}
#endif
#ifdef DMA2_Stream4
void DMA2_Stream4_IRQHandler()
{
- if (dma_handles[DMA2_STREAM4_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM4_INDEX]);
- }
+ if (dma_handles[DMA2_STREAM4_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM4_INDEX]);
+ }
}
#endif
#ifdef DMA2_Stream5
void DMA2_Stream5_IRQHandler()
{
- if (dma_handles[DMA2_STREAM5_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM5_INDEX]);
- }
+ if (dma_handles[DMA2_STREAM5_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM5_INDEX]);
+ }
}
#endif
#ifdef DMA2_Stream6
void DMA2_Stream6_IRQHandler()
{
- if (dma_handles[DMA2_STREAM6_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM6_INDEX]);
- }
+ if (dma_handles[DMA2_STREAM6_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM6_INDEX]);
+ }
}
#endif
#ifdef DMA2_Stream7
void DMA2_Stream7_IRQHandler()
{
- if (dma_handles[DMA2_STREAM7_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM7_INDEX]);
- }
+ if (dma_handles[DMA2_STREAM7_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM7_INDEX]);
+ }
}
#endif
diff --git a/cores/arduino/stm32/dma.h b/cores/arduino/stm32/dma.h
index 0909dd60ef..596897ac08 100644
--- a/cores/arduino/stm32/dma.h
+++ b/cores/arduino/stm32/dma.h
@@ -53,11 +53,11 @@ extern "C" {
*/
IRQn_Type get_dma_interrupt(
#if defined(STM32F2xx) || defined(STM32F4xx) || defined(STM32F7xx)
- DMA_Stream_TypeDef
+ DMA_Stream_TypeDef
#else
- DMA_Channel_TypeDef
+ DMA_Channel_TypeDef
#endif
- *instance);
+ *instance);
/**
* @brief This function will store the DMA handle in the appropriate slot
From 8bf7a47bc53a3132aad783872de624070366bf44 Mon Sep 17 00:00:00 2001
From: xC0000005 <32139633+xC0000005@users.noreply.github.com>
Date: Mon, 9 Dec 2019 20:52:29 -0800
Subject: [PATCH 12/18] Remove non functional library.
---
libraries/DMA/kewords.txt | 21 ------
libraries/DMA/library.properties | 8 --
libraries/DMA/src/DMATransfer.cpp | 120 ------------------------------
libraries/DMA/src/DMATransfer.h | 31 --------
4 files changed, 180 deletions(-)
delete mode 100644 libraries/DMA/kewords.txt
delete mode 100644 libraries/DMA/library.properties
delete mode 100644 libraries/DMA/src/DMATransfer.cpp
delete mode 100644 libraries/DMA/src/DMATransfer.h
diff --git a/libraries/DMA/kewords.txt b/libraries/DMA/kewords.txt
deleted file mode 100644
index 43f1c9b43e..0000000000
--- a/libraries/DMA/kewords.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-#######################################
-# Syntax Coloring Map For DMA
-#######################################
-
-#######################################
-# Datatypes (KEYWORD1)
-#######################################
-
-DMA KEYWORD1
-DMA1 KEYWORD1
-DMA2 KEYWORD2
-
-#######################################
-# Methods and Functions (KEYWORD2)
-#######################################
-
-start KEYWORD2
-
-#######################################
-# Constants (LITERAL1)
-#######################################
diff --git a/libraries/DMA/library.properties b/libraries/DMA/library.properties
deleted file mode 100644
index 9de7ffeff0..0000000000
--- a/libraries/DMA/library.properties
+++ /dev/null
@@ -1,8 +0,0 @@
-name=DMA
-version=0.0.1
-author=J.C. Nelson
-maintainer=xC0000005
-sentence=Enables Direct Memory Access Transfers.
-paragraph=This library allows use of Direct Memory Access (DMA) for transfer between memory locations, to and from peripherals.
-category=Uncategorized
-architectures=stm32
diff --git a/libraries/DMA/src/DMATransfer.cpp b/libraries/DMA/src/DMATransfer.cpp
deleted file mode 100644
index 18bffe070a..0000000000
--- a/libraries/DMA/src/DMATransfer.cpp
+++ /dev/null
@@ -1,120 +0,0 @@
-#include
-#include
-
-/**
- * @brief Prepares for DMA Transfer by enabling clocks
- * and storing the settings in the slots
- * @param settings : dma transfer settings
- * @retval None
- */
-void DMATransferClass::prepare(DMA_HandleTypeDef *settings)
-{
- if (!_prepared) {
- // TODO - figure out which DMA to enable the clock for.
- #ifdef DMA1_BASE
- __HAL_RCC_DMA1_CLK_ENABLE();
- #endif
- #ifdef DMA2_BASE
- __HAL_RCC_DMA2_CLK_ENABLE();
- #endif
- memcpy(&_dma, settings, sizeof(DMA_HandleTypeDef));
- /*
- _transfer_settings.dma_settings.Init.Direction = _transfer_settings.transfer_direction;
- _transfer_settings.dma_settings.Init.PeriphInc = DMA_PINC_DISABLE;
- _transfer_settings.dma_settings.Init.MemInc = DMA_MINC_DISABLE;
- _transfer_settings.dma_settings.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
- _transfer_settings.dma_settings.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
- _transfer_settings.dma_settings.Init.Mode = _transfer_settings.circular ? DMA_CIRCULAR : DMA_NORMAL;
- _transfer_settings.dma_settings.Init.Priority = DMA_PRIORITY_VERY_HIGH;
- _transfer_settings.dma_settings.Instance = _transfer_settings.channel_stream;
- // TODO - intialize the callbacks.
- */
-
- // Perform HAL Initialization first.
- HAL_DMA_Init(&_dma);
- _dma.XferCpltCallback = settings->XferCpltCallback;
- _dma.XferHalfCpltCallback = settings->XferHalfCpltCallback;
- _dma.XferErrorCallback = settings->XferErrorCallback;
- _dma.XferAbortCallback = settings->XferAbortCallback;
-
- // Call dma prepare
- prepare_dma(&_dma);
-
- _prepared = true;
- }
-}
-
-/**
- * @brief Begin the DMA transfer
- * @retval None
- */
-void DMATransferClass::begin(uint32_t source, uint32_t destination, int bytes_to_transfer, bool use_interrupt)
-{
- // Make sure we're set to initialize
- this->end();
-
- if (!_prepared) {
- // call dma prepare
- prepare_dma(&_dma);
- }
-
- /**
- * @brief Clear the DMA Stream pending flags.
- * @param __HANDLE__: DMA handle
- * @param __FLAG__: specifies the flag to clear.
- * This parameter can be any combination of the following values:
- * @arg DMA_FLAG_TCIFx: Transfer complete flag.
- * @arg DMA_FLAG_HTIFx: Half transfer complete flag.
- * @arg DMA_FLAG_TEIFx: Transfer error flag.
- * @arg DMA_FLAG_DMEIFx: Direct mode error flag.
- * @arg DMA_FLAG_FEIFx: FIFO error flag.
- * Where x can be 0_4, 1_5, 2_6 or 3_7 to select the DMA Stream flag.
- * @retval None
- */
-
- // Reset flags so it starts over
- __HAL_DMA_CLEAR_FLAG(&_dma, __HAL_DMA_GET_TC_FLAG_INDEX(&_dma));
- __HAL_DMA_CLEAR_FLAG(&_dma, __HAL_DMA_GET_HT_FLAG_INDEX(&_dma));
- __HAL_DMA_CLEAR_FLAG(&_dma, __HAL_DMA_GET_TE_FLAG_INDEX(&_dma));
-
- #if defined(STM32F2xx) || #defined(STM32F4xx) || #defined(STM32F7xx)
- __HAL_DMA_CLEAR_FLAG(hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma));
- __HAL_DMA_CLEAR_FLAG(hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma));
- #endif
-
- // Set size to transfer
-
- #if defined(__HAL_DMA_SET_COUNTER)
- __HAL_DMA_SET_COUNTER(&_dma, bytes_to_transfer);
- #else
- _dma.Instance->CNDTR = bytes_to_transfer;
- #endif
-
- // and enable it
- __HAL_DMA_ENABLE(&_dma);
-
- if (use_interrupt) {
- IRQn_Type interrupt_number = get_dma_interrupt(_dma.Instance);
- HAL_NVIC_SetPriority(interrupt_number, 0, 0);
- HAL_NVIC_EnableIRQ(interrupt_number);
- HAL_DMA_Start_IT(&_dma, source, destination, bytes_to_transfer);
- }
- else {
- HAL_DMA_Start(&_dma, source, destination, bytes_to_transfer);
- }
-}
-
-/**
- * @brief End the DMA transfer
- * @retval None
- */
-void DMATransferClass::end()
-{
-
- __HAL_DMA_DISABLE(&_dma);
-
- if (_prepared) {
- end_dma(&_dma);
- _prepared = false;
- }
-}
diff --git a/libraries/DMA/src/DMATransfer.h b/libraries/DMA/src/DMATransfer.h
deleted file mode 100644
index 58e0adfa87..0000000000
--- a/libraries/DMA/src/DMATransfer.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef __DMATRANSFER_H__
-#define __DMATRANSFER_H__
-
-#include "Arduino.h"
-
-typedef struct dmatransfer_s dmatransfer_t;
-
-#if defined(STM32F2xx) || defined(STM32F4xx) || defined(STM32F7xx)
-typedef DMA_Stream_TypeDef DMA_CS_Selection;
-#else
-typedef DMA_Channel_TypeDef DMA_CS_Selection;
-#endif
-
-typedef class DMATransferClass {
-
- public:
- /*
- DMATransferClass(uint32_t transfer_direction, boolean circular, uint32_t source, uint32_t destination){
- this->dma.Init.
- }*/
-
- void prepare(DMA_HandleTypeDef *settings);
- void begin(uint32_t source, uint32_t destination, int bytes_to_transfer, bool use_interrupt = false);
- void end();
- private:
- bool _prepared;
- DMA_HandleTypeDef _dma;
-} DMATransfer;
-
-
-#endif /* __DMATRANSFER_H__ */
From 6804f8eca50575543ae0071e64b27358696af348 Mon Sep 17 00:00:00 2001
From: xC0000005 <32139633+xC0000005@users.noreply.github.com>
Date: Mon, 9 Dec 2019 21:42:26 -0800
Subject: [PATCH 13/18] Ran astyle.py.
---
cores/arduino/stm32/dma.c | 418 +++++++++++++++++++-------------------
cores/arduino/stm32/dma.h | 6 +-
2 files changed, 212 insertions(+), 212 deletions(-)
diff --git a/cores/arduino/stm32/dma.c b/cores/arduino/stm32/dma.c
index b74c64f5ef..d2115c1fa8 100644
--- a/cores/arduino/stm32/dma.c
+++ b/cores/arduino/stm32/dma.c
@@ -45,99 +45,99 @@ extern "C" {
typedef enum {
#ifdef DMA1_Channel1
- DMA1_CHANNEL1_INDEX,
+ DMA1_CHANNEL1_INDEX,
#endif
#ifdef DMA1_Channel2
- DMA1_CHANNEL2_INDEX,
+ DMA1_CHANNEL2_INDEX,
#endif
#ifdef DMA1_Channel3
- DMA1_CHANNEL3_INDEX,
+ DMA1_CHANNEL3_INDEX,
#endif
#ifdef DMA1_Channel4
- DMA1_CHANNEL4_INDEX,
+ DMA1_CHANNEL4_INDEX,
#endif
#ifdef DMA1_Channel5
- DMA1_CHANNEL5_INDEX,
+ DMA1_CHANNEL5_INDEX,
#endif
#ifdef DMA1_Channel6
- DMA1_CHANNEL6_INDEX,
+ DMA1_CHANNEL6_INDEX,
#endif
#ifdef DMA1_Channel7
- DMA1_CHANNEL7_INDEX,
+ DMA1_CHANNEL7_INDEX,
#endif
#ifdef DMA2_Channel1
- DMA2_CHANNEL1_INDEX,
+ DMA2_CHANNEL1_INDEX,
#endif
#ifdef DMA2_Channel2
- DMA2_CHANNEL2_INDEX,
+ DMA2_CHANNEL2_INDEX,
#endif
#ifdef DMA2_Channel3
- DMA2_CHANNEL3_INDEX,
+ DMA2_CHANNEL3_INDEX,
#endif
#ifdef DMA2_Channel4
- DMA2_CHANNEL4_INDEX,
+ DMA2_CHANNEL4_INDEX,
#endif
#ifdef DMA2_Channel5
- DMA2_CHANNEL5_INDEX,
+ DMA2_CHANNEL5_INDEX,
#endif
#ifdef DMA2_Channel6
- DMA2_CHANNEL6_INDEX,
+ DMA2_CHANNEL6_INDEX,
#endif
#ifdef DMA2_Channel7
- DMA2_CHANNEL7_INDEX,
+ DMA2_CHANNEL7_INDEX,
#endif
#ifdef DMA2_Channel8
- DMA2_CHANNEL8_INDEX,
+ DMA2_CHANNEL8_INDEX,
#endif
#ifdef DMA1_Stream0
- DMA1_STREAM0_INDEX,
+ DMA1_STREAM0_INDEX,
#endif
#ifdef DMA1_Stream1
- DMA1_STREAM1_INDEX,
+ DMA1_STREAM1_INDEX,
#endif
#ifdef DMA1_Stream2
- DMA1_STREAM2_INDEX,
+ DMA1_STREAM2_INDEX,
#endif
#ifdef DMA1_Stream3
- DMA1_STREAM3_INDEX,
+ DMA1_STREAM3_INDEX,
#endif
#ifdef DMA1_Stream4
- DMA1_STREAM4_INDEX,
+ DMA1_STREAM4_INDEX,
#endif
#ifdef DMA1_Stream5
- DMA1_STREAM5_INDEX,
+ DMA1_STREAM5_INDEX,
#endif
#ifdef DMA1_Stream6
- DMA1_STREAM6_INDEX,
+ DMA1_STREAM6_INDEX,
#endif
#ifdef DMA1_Stream7
- DMA1_STREAM7_INDEX,
+ DMA1_STREAM7_INDEX,
#endif
#ifdef DMA2_Stream0
- DMA2_STREAM0_INDEX,
+ DMA2_STREAM0_INDEX,
#endif
#ifdef DMA2_Stream1
- DMA2_STREAM1_INDEX,
+ DMA2_STREAM1_INDEX,
#endif
#ifdef DMA2_Stream2
- DMA2_STREAM2_INDEX,
+ DMA2_STREAM2_INDEX,
#endif
#ifdef DMA2_Stream3
- DMA2_STREAM3_INDEX,
+ DMA2_STREAM3_INDEX,
#endif
#ifdef DMA2_Stream4
- DMA2_STREAM4_INDEX,
+ DMA2_STREAM4_INDEX,
#endif
#ifdef DMA2_Stream5
- DMA2_STREAM5_INDEX,
+ DMA2_STREAM5_INDEX,
#endif
#ifdef DMA2_Stream6
- DMA2_STREAM6_INDEX,
+ DMA2_STREAM6_INDEX,
#endif
#ifdef DMA2_Stream7
- DMA2_STREAM7_INDEX,
+ DMA2_STREAM7_INDEX,
#endif
- DMA_CHANNEL_NUM
+ DMA_CHANNEL_NUM
} dma_index_t;
#define NC (dma_index_t)-1
@@ -151,140 +151,140 @@ static DMA_HandleTypeDef *dma_handles[DMA_CHANNEL_NUM] = {NULL};
*/
static dma_index_t get_dma_index(
#if defined(STM32F2xx) || defined(STM32F4xx) || defined(STM32F7xx)
- DMA_Stream_TypeDef
+ DMA_Stream_TypeDef
#else
- DMA_Channel_TypeDef
+ DMA_Channel_TypeDef
#endif
- *instance)
+ *instance)
{
- switch ((uint32_t)instance) {
+ switch ((uint32_t)instance) {
#ifdef DMA1_Channel1
case (uint32_t)DMA1_Channel1:
- return DMA1_CHANNEL1_INDEX;
+ return DMA1_CHANNEL1_INDEX;
#endif
#ifdef DMA1_Channel2
case (uint32_t)DMA1_Channel2:
- return DMA1_CHANNEL2_INDEX;
+ return DMA1_CHANNEL2_INDEX;
#endif
#ifdef DMA1_Channel3
case (uint32_t)DMA1_Channel3:
- return DMA1_CHANNEL3_INDEX;
+ return DMA1_CHANNEL3_INDEX;
#endif
#ifdef DMA1_Channel4
case (uint32_t)DMA1_Channel4:
- return DMA1_CHANNEL4_INDEX;
+ return DMA1_CHANNEL4_INDEX;
#endif
#ifdef DMA1_Channel5
case (uint32_t)DMA1_Channel5:
- return DMA1_CHANNEL5_INDEX;
+ return DMA1_CHANNEL5_INDEX;
#endif
#ifdef DMA1_Channel6
case (uint32_t)DMA1_Channel6:
- return DMA1_CHANNEL6_INDEX;
+ return DMA1_CHANNEL6_INDEX;
#endif
#ifdef DMA1_Channel7
case (uint32_t)DMA1_Channel7:
- return DMA1_CHANNEL7_INDEX;
+ return DMA1_CHANNEL7_INDEX;
#endif
#ifdef DMA2_Channel1
case (uint32_t)DMA2_Channel1:
- return DMA2_CHANNEL1_INDEX;
+ return DMA2_CHANNEL1_INDEX;
#endif
#ifdef DMA2_Channel2
case (uint32_t)DMA2_Channel2:
- return DMA2_CHANNEL2_INDEX;
+ return DMA2_CHANNEL2_INDEX;
#endif
#ifdef DMA2_Channel3
case (uint32_t)DMA2_Channel3:
- return DMA2_CHANNEL3_INDEX;
+ return DMA2_CHANNEL3_INDEX;
#endif
#ifdef DMA2_Channel4
case (uint32_t)DMA2_Channel4:
- return DMA2_CHANNEL4_INDEX;
+ return DMA2_CHANNEL4_INDEX;
#endif
#ifdef DMA2_Channel5
case (uint32_t)DMA2_Channel5:
- return DMA2_CHANNEL5_INDEX;
+ return DMA2_CHANNEL5_INDEX;
#endif
#ifdef DMA2_Channel6
case (uint32_t)DMA2_Channel6:
- return DMA2_CHANNEL6_INDEX;
+ return DMA2_CHANNEL6_INDEX;
#endif
#ifdef DMA2_Channel7
case (uint32_t)DMA2_Channel7:
- return DMA2_CHANNEL7_INDEX;
+ return DMA2_CHANNEL7_INDEX;
#endif
#ifdef DMA2_Channel8
case (uint32_t)DMA2_Channel8:
- return DMA2_CHANNEL8_INDEX;
+ return DMA2_CHANNEL8_INDEX;
#endif
#ifdef DMA1_Stream0
case (uint32_t)DMA1_Stream0:
- return DMA1_STREAM0_INDEX;
+ return DMA1_STREAM0_INDEX;
#endif
#ifdef DMA1_Stream1
case (uint32_t)DMA1_Stream1:
- return DMA1_STREAM1_INDEX;
+ return DMA1_STREAM1_INDEX;
#endif
#ifdef DMA1_Stream2
case (uint32_t)DMA1_Stream2:
- return DMA1_STREAM2_INDEX;
+ return DMA1_STREAM2_INDEX;
#endif
#ifdef DMA1_Stream3
case (uint32_t)DMA1_Stream3:
- return DMA1_STREAM3_INDEX;
+ return DMA1_STREAM3_INDEX;
#endif
#ifdef DMA1_Stream4
case (uint32_t)DMA1_Stream4:
- return DMA1_STREAM4_INDEX;
+ return DMA1_STREAM4_INDEX;
#endif
#ifdef DMA1_Stream5
case (uint32_t)DMA1_Stream5:
- return DMA1_STREAM5_INDEX;
+ return DMA1_STREAM5_INDEX;
#endif
#ifdef DMA1_Stream6
case (uint32_t)DMA1_Stream6:
- return DMA1_STREAM6_INDEX;
+ return DMA1_STREAM6_INDEX;
#endif
#ifdef DMA1_Stream7
case (uint32_t)DMA1_Stream7:
- return DMA1_STREAM7_INDEX;
+ return DMA1_STREAM7_INDEX;
#endif
#ifdef DMA2_Stream0
case (uint32_t)DMA2_Stream0:
- return DMA2_STREAM0_INDEX;
+ return DMA2_STREAM0_INDEX;
#endif
#ifdef DMA2_Stream1
case (uint32_t)DMA2_Stream1:
- return DMA2_STREAM1_INDEX;
+ return DMA2_STREAM1_INDEX;
#endif
#ifdef DMA2_Stream2
case (uint32_t)DMA2_Stream2:
- return DMA2_STREAM2_INDEX;
+ return DMA2_STREAM2_INDEX;
#endif
#ifdef DMA2_Stream3
case (uint32_t)DMA2_Stream3:
- return DMA2_STREAM3_INDEX;
+ return DMA2_STREAM3_INDEX;
#endif
#ifdef DMA2_Stream4
case (uint32_t)DMA2_Stream4:
- return DMA2_STREAM4_INDEX;
+ return DMA2_STREAM4_INDEX;
#endif
#ifdef DMA2_Stream5
case (uint32_t)DMA2_Stream5:
- return DMA2_STREAM5_INDEX;
+ return DMA2_STREAM5_INDEX;
#endif
#ifdef DMA2_Stream6
case (uint32_t)DMA2_Stream6:
- return DMA2_STREAM6_INDEX;
+ return DMA2_STREAM6_INDEX;
#endif
#ifdef DMA2_Stream7
case (uint32_t)DMA2_Stream7:
- return DMA2_STREAM7_INDEX;
+ return DMA2_STREAM7_INDEX;
#endif
default:
- return NC;
- }
+ return NC;
+ }
}
/**
@@ -294,140 +294,140 @@ static dma_index_t get_dma_index(
*/
IRQn_Type get_dma_interrupt(
#if defined(STM32F2xx) || defined(STM32F4xx) || defined(STM32F7xx)
- DMA_Stream_TypeDef
+ DMA_Stream_TypeDef
#else
- DMA_Channel_TypeDef
+ DMA_Channel_TypeDef
#endif
- *instance)
+ *instance)
{
- switch ((uint32_t)instance) {
+ switch ((uint32_t)instance) {
#ifdef DMA1_Channel1
case (uint32_t)DMA1_Channel1:
- return DMA1_Channel1_IRQn;
+ return DMA1_Channel1_IRQn;
#endif
#ifdef DMA1_Channel2
case (uint32_t)DMA1_Channel2:
- return DMA1_Channel2_IRQn;
+ return DMA1_Channel2_IRQn;
#endif
#ifdef DMA1_Channel3
case (uint32_t)DMA1_Channel3:
- return DMA1_Channel3_IRQn;
+ return DMA1_Channel3_IRQn;
#endif
#ifdef DMA1_Channel4
case (uint32_t)DMA1_Channel4:
- return DMA1_Channel4_IRQn;
+ return DMA1_Channel4_IRQn;
#endif
#ifdef DMA1_Channel5
case (uint32_t)DMA1_Channel5:
- return DMA1_Channel5_IRQn;
+ return DMA1_Channel5_IRQn;
#endif
#ifdef DMA1_Channel6
case (uint32_t)DMA1_Channel6:
- return DMA1_Channel6_IRQn;
+ return DMA1_Channel6_IRQn;
#endif
#ifdef DMA1_Channel7
case (uint32_t)DMA1_Channel7:
- return DMA1_Channel7_IRQn;
+ return DMA1_Channel7_IRQn;
#endif
#ifdef DMA2_Channel1
case (uint32_t)DMA2_Channel1:
- return DMA2_Channel1_IRQn;
+ return DMA2_Channel1_IRQn;
#endif
#ifdef DMA2_Channel2
case (uint32_t)DMA2_Channel2:
- return DMA2_Channel2_IRQn;
+ return DMA2_Channel2_IRQn;
#endif
#ifdef DMA2_Channel3
case (uint32_t)DMA2_Channel3:
- return DMA2_Channel3_IRQn;
+ return DMA2_Channel3_IRQn;
#endif
#ifdef DMA2_Channel4
case (uint32_t)DMA2_Channel4:
- return DMA2_Channel4_IRQn;
+ return DMA2_Channel4_IRQn;
#endif
#ifdef DMA2_Channel5
case (uint32_t)DMA2_Channel5:
- return DMA2_Channel5_IRQn;
+ return DMA2_Channel5_IRQn;
#endif
#ifdef DMA2_Channel6
case (uint32_t)DMA2_Channel6:
- return DMA2_Channel6_IRQn;
+ return DMA2_Channel6_IRQn;
#endif
#ifdef DMA2_Channel7
case (uint32_t)DMA2_Channel7:
- return DMA2_Channel7_IRQn;
+ return DMA2_Channel7_IRQn;
#endif
#ifdef DMA2_Channel8
case (uint32_t)DMA2_Channel8:
- return DMA2_Channel8_IRQn;
+ return DMA2_Channel8_IRQn;
#endif
#ifdef DMA1_Stream0
case (uint32_t)DMA1_Stream0:
- return DMA1_Stream0_IRQn;
+ return DMA1_Stream0_IRQn;
#endif
#ifdef DMA1_Stream1
case (uint32_t)DMA1_Stream1:
- return DMA1_Stream1_IRQn;
+ return DMA1_Stream1_IRQn;
#endif
#ifdef DMA1_Stream2
case (uint32_t)DMA1_Stream2:
- return DMA1_Stream2_IRQn;
+ return DMA1_Stream2_IRQn;
#endif
#ifdef DMA1_Stream3
case (uint32_t)DMA1_Stream3:
- return DMA1_Stream3_IRQn;
+ return DMA1_Stream3_IRQn;
#endif
#ifdef DMA1_Stream4
case (uint32_t)DMA1_Stream4:
- return DMA1_Stream4_IRQn;
+ return DMA1_Stream4_IRQn;
#endif
#ifdef DMA1_Stream5
case (uint32_t)DMA1_Stream5:
- return DMA1_Stream5_IRQn;
+ return DMA1_Stream5_IRQn;
#endif
#ifdef DMA1_Stream6
case (uint32_t)DMA1_Stream6:
- return DMA1_Stream6_IRQn;
+ return DMA1_Stream6_IRQn;
#endif
#ifdef DMA1_Stream7
case (uint32_t)DMA1_Stream7:
- return DMA1_Stream7_IRQn;
+ return DMA1_Stream7_IRQn;
#endif
#ifdef DMA2_Stream0
case (uint32_t)DMA2_Stream0:
- return DMA2_Stream0_IRQn;
+ return DMA2_Stream0_IRQn;
#endif
#ifdef DMA2_Stream1
case (uint32_t)DMA2_Stream1:
- return DMA2_Stream1_IRQn;
+ return DMA2_Stream1_IRQn;
#endif
#ifdef DMA2_Stream2
case (uint32_t)DMA2_Stream2:
- return DMA2_Stream2_IRQn;
+ return DMA2_Stream2_IRQn;
#endif
#ifdef DMA2_Stream3
case (uint32_t)DMA2_Stream3:
- return DMA2_Stream3_IRQn;
+ return DMA2_Stream3_IRQn;
#endif
#ifdef DMA2_Stream4
case (uint32_t)DMA2_Stream4:
- return DMA2_Stream4_IRQn;
+ return DMA2_Stream4_IRQn;
#endif
#ifdef DMA2_Stream5
case (uint32_t)DMA2_Stream5:
- return DMA2_Stream5_IRQn;
+ return DMA2_Stream5_IRQn;
#endif
#ifdef DMA2_Stream6
case (uint32_t)DMA2_Stream6:
- return DMA2_Stream6_IRQn;
+ return DMA2_Stream6_IRQn;
#endif
#ifdef DMA2_Stream7
case (uint32_t)DMA2_Stream7:
- return DMA2_Stream7_IRQn;
+ return DMA2_Stream7_IRQn;
#endif
default:
- return NC;
- }
+ return NC;
+ }
}
/**
@@ -437,11 +437,11 @@ IRQn_Type get_dma_interrupt(
*/
void prepare_dma(DMA_HandleTypeDef *dma_handle)
{
- dma_index_t dma_index = get_dma_index(dma_handle->Instance);
- if (dma_index == NC) {
- return;
- }
- dma_handles[dma_index] = dma_handle;
+ dma_index_t dma_index = get_dma_index(dma_handle->Instance);
+ if (dma_index == NC) {
+ return;
+ }
+ dma_handles[dma_index] = dma_handle;
}
/**
@@ -451,11 +451,11 @@ void prepare_dma(DMA_HandleTypeDef *dma_handle)
*/
void end_dma(DMA_HandleTypeDef *dma_handle)
{
- dma_index_t dma_index = get_dma_index(dma_handle->Instance);
- if (dma_index == NC) {
- return;
- }
- dma_handles[dma_index] = NULL;
+ dma_index_t dma_index = get_dma_index(dma_handle->Instance);
+ if (dma_index == NC) {
+ return;
+ }
+ dma_handles[dma_index] = NULL;
}
#ifdef DMA1_Channel1
@@ -466,9 +466,9 @@ void end_dma(DMA_HandleTypeDef *dma_handle)
*/
void DMA1_Channel1_IRQHandler()
{
- if (dma_handles[DMA1_CHANNEL1_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL1_INDEX]);
- }
+ if (dma_handles[DMA1_CHANNEL1_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL1_INDEX]);
+ }
}
#endif
@@ -480,9 +480,9 @@ void DMA1_Channel1_IRQHandler()
*/
void DMA1_Channel2_IRQHandler()
{
- if (dma_handles[DMA1_CHANNEL2_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL2_INDEX]);
- }
+ if (dma_handles[DMA1_CHANNEL2_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL2_INDEX]);
+ }
}
#endif
@@ -494,9 +494,9 @@ void DMA1_Channel2_IRQHandler()
*/
void DMA1_Channel3_IRQHandler()
{
- if (dma_handles[DMA1_CHANNEL3_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL3_INDEX]);
- }
+ if (dma_handles[DMA1_CHANNEL3_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL3_INDEX]);
+ }
}
#endif
@@ -508,9 +508,9 @@ void DMA1_Channel3_IRQHandler()
*/
void DMA1_Channel4_IRQHandler()
{
- if (dma_handles[DMA1_CHANNEL4_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL4_INDEX]);
- }
+ if (dma_handles[DMA1_CHANNEL4_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL4_INDEX]);
+ }
}
#endif
@@ -522,9 +522,9 @@ void DMA1_Channel4_IRQHandler()
*/
void DMA1_Channel5_IRQHandler()
{
- if (dma_handles[DMA1_CHANNEL5_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL5_INDEX]);
- }
+ if (dma_handles[DMA1_CHANNEL5_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL5_INDEX]);
+ }
}
#endif
@@ -535,9 +535,9 @@ void DMA1_Channel5_IRQHandler()
*/
void DMA1_Channel6_IRQHandler()
{
- if (dma_handles[DMA1_CHANNEL6_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL6_INDEX]);
- }
+ if (dma_handles[DMA1_CHANNEL6_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL6_INDEX]);
+ }
}
#endif
@@ -549,9 +549,9 @@ void DMA1_Channel6_IRQHandler()
*/
void DMA1_Channel7_IRQHandler()
{
- if (dma_handles[DMA1_CHANNEL7_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL7_INDEX]);
- }
+ if (dma_handles[DMA1_CHANNEL7_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL7_INDEX]);
+ }
}
#endif
@@ -563,9 +563,9 @@ void DMA1_Channel7_IRQHandler()
*/
void DMA2_Channel1_IRQHandler()
{
- if (dma_handles[DMA2_CHANNEL1_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL1_INDEX]);
- }
+ if (dma_handles[DMA2_CHANNEL1_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL1_INDEX]);
+ }
}
#endif
@@ -577,9 +577,9 @@ void DMA2_Channel1_IRQHandler()
*/
void DMA2_Channel2_IRQHandler()
{
- if (dma_handles[DMA2_CHANNEL2_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL2_INDEX]);
- }
+ if (dma_handles[DMA2_CHANNEL2_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL2_INDEX]);
+ }
}
#endif
@@ -591,9 +591,9 @@ void DMA2_Channel2_IRQHandler()
*/
void DMA2_Channel3_IRQHandler()
{
- if (dma_handles[DMA2_CHANNEL3_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL3_INDEX]);
- }
+ if (dma_handles[DMA2_CHANNEL3_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL3_INDEX]);
+ }
}
#endif
@@ -605,9 +605,9 @@ void DMA2_Channel3_IRQHandler()
*/
void DMA2_Channel4_IRQHandler()
{
- if (dma_handles[DMA2_CHANNEL4_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL4_INDEX]);
- }
+ if (dma_handles[DMA2_CHANNEL4_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL4_INDEX]);
+ }
}
#endif
@@ -619,9 +619,9 @@ void DMA2_Channel4_IRQHandler()
*/
void DMA2_Channel5_IRQHandler()
{
- if (dma_handles[DMA2_CHANNEL5_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL5_INDEX]);
- }
+ if (dma_handles[DMA2_CHANNEL5_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL5_INDEX]);
+ }
}
#endif
@@ -633,9 +633,9 @@ void DMA2_Channel5_IRQHandler()
*/
void DMA2_Channel6_IRQHandler()
{
- if (dma_handles[DMA2_CHANNEL6_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL6_INDEX]);
- }
+ if (dma_handles[DMA2_CHANNEL6_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL6_INDEX]);
+ }
}
#endif
@@ -647,9 +647,9 @@ void DMA2_Channel6_IRQHandler()
*/
void DMA2_Channel7_IRQHandler()
{
- if (dma_handles[DMA2_CHANNEL7_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL7_INDEX]);
- }
+ if (dma_handles[DMA2_CHANNEL7_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL7_INDEX]);
+ }
}
#endif
@@ -661,153 +661,153 @@ void DMA2_Channel7_IRQHandler()
*/
void DMA2_Channel8_IRQHandler()
{
- if (dma_handles[DMA2_CHANNEL8_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL8_INDEX]);
- }
+ if (dma_handles[DMA2_CHANNEL8_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL8_INDEX]);
+ }
}
#endif
#ifdef DMA1_Stream0
void DMA1_Stream0_IRQHandler()
{
- if (dma_handles[DMA1_STREAM0_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM0_INDEX]);
- }
+ if (dma_handles[DMA1_STREAM0_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM0_INDEX]);
+ }
}
#endif
#ifdef DMA1_Stream1
void DMA1_Stream1_IRQHandler()
{
- if (dma_handles[DMA1_STREAM1_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM1_INDEX]);
- }
+ if (dma_handles[DMA1_STREAM1_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM1_INDEX]);
+ }
}
#endif
#ifdef DMA1_Stream2
void DMA1_Stream2_IRQHandler()
{
- if (dma_handles[DMA1_STREAM2_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM2_INDEX]);
- }
+ if (dma_handles[DMA1_STREAM2_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM2_INDEX]);
+ }
}
#endif
#ifdef DMA1_Stream3
void DMA1_Stream3_IRQHandler()
{
- if (dma_handles[DMA1_STREAM3_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM3_INDEX]);
- }
+ if (dma_handles[DMA1_STREAM3_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM3_INDEX]);
+ }
}
#endif
#ifdef DMA1_Stream4
void DMA1_Stream4_IRQHandler()
{
- if (dma_handles[DMA1_STREAM4_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM4_INDEX]);
- }
+ if (dma_handles[DMA1_STREAM4_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM4_INDEX]);
+ }
}
#endif
#ifdef DMA1_Stream5
void DMA1_Stream5_IRQHandler()
{
- if (dma_handles[DMA1_STREAM5_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM5_INDEX]);
- }
+ if (dma_handles[DMA1_STREAM5_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM5_INDEX]);
+ }
}
#endif
#ifdef DMA1_Stream6
void DMA1_Stream6_IRQHandler()
{
- if (dma_handles[DMA1_STREAM6_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM6_INDEX]);
- }
+ if (dma_handles[DMA1_STREAM6_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM6_INDEX]);
+ }
}
#endif
#ifdef DMA1_Stream7
void DMA1_Stream7_IRQHandler()
{
- if (dma_handles[DMA1_STREAM7_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM7_INDEX]);
- }
+ if (dma_handles[DMA1_STREAM7_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_STREAM7_INDEX]);
+ }
}
#endif
#ifdef DMA2_Stream0
void DMA2_Stream0_IRQHandler()
{
- if (dma_handles[DMA2_STREAM0_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM0_INDEX]);
- }
+ if (dma_handles[DMA2_STREAM0_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM0_INDEX]);
+ }
}
#endif
#ifdef DMA2_Stream1
void DMA2_Stream1_IRQHandler()
{
- if (dma_handles[DMA2_STREAM1_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM1_INDEX]);
- }
+ if (dma_handles[DMA2_STREAM1_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM1_INDEX]);
+ }
}
#endif
#ifdef DMA2_Stream2
void DMA2_Stream2_IRQHandler()
{
- if (dma_handles[DMA2_STREAM2_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM2_INDEX]);
- }
+ if (dma_handles[DMA2_STREAM2_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM2_INDEX]);
+ }
}
#endif
#ifdef DMA2_Stream3
void DMA2_Stream3_IRQHandler()
{
- if (dma_handles[DMA2_STREAM3_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM3_INDEX]);
- }
+ if (dma_handles[DMA2_STREAM3_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM3_INDEX]);
+ }
}
#endif
#ifdef DMA2_Stream4
void DMA2_Stream4_IRQHandler()
{
- if (dma_handles[DMA2_STREAM4_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM4_INDEX]);
- }
+ if (dma_handles[DMA2_STREAM4_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM4_INDEX]);
+ }
}
#endif
#ifdef DMA2_Stream5
void DMA2_Stream5_IRQHandler()
{
- if (dma_handles[DMA2_STREAM5_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM5_INDEX]);
- }
+ if (dma_handles[DMA2_STREAM5_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM5_INDEX]);
+ }
}
#endif
#ifdef DMA2_Stream6
void DMA2_Stream6_IRQHandler()
{
- if (dma_handles[DMA2_STREAM6_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM6_INDEX]);
- }
+ if (dma_handles[DMA2_STREAM6_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM6_INDEX]);
+ }
}
#endif
#ifdef DMA2_Stream7
void DMA2_Stream7_IRQHandler()
{
- if (dma_handles[DMA2_STREAM7_INDEX] != NULL) {
- HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM7_INDEX]);
- }
+ if (dma_handles[DMA2_STREAM7_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_STREAM7_INDEX]);
+ }
}
#endif
diff --git a/cores/arduino/stm32/dma.h b/cores/arduino/stm32/dma.h
index 596897ac08..0909dd60ef 100644
--- a/cores/arduino/stm32/dma.h
+++ b/cores/arduino/stm32/dma.h
@@ -53,11 +53,11 @@ extern "C" {
*/
IRQn_Type get_dma_interrupt(
#if defined(STM32F2xx) || defined(STM32F4xx) || defined(STM32F7xx)
- DMA_Stream_TypeDef
+ DMA_Stream_TypeDef
#else
- DMA_Channel_TypeDef
+ DMA_Channel_TypeDef
#endif
- *instance);
+ *instance);
/**
* @brief This function will store the DMA handle in the appropriate slot
From f5e6b7dcd44cb85d2b24c2390fd39e62c2636aff Mon Sep 17 00:00:00 2001
From: xC0000005 <32139633+xC0000005@users.noreply.github.com>
Date: Wed, 11 Dec 2019 12:49:16 -0800
Subject: [PATCH 14/18] Move files to SRCWrapper Library.
---
.../stm32 => libraries/SrcWrapper}/dma.c | 36 +++++++++++++++++++
.../stm32 => libraries/SrcWrapper}/dma.h | 13 -------
2 files changed, 36 insertions(+), 13 deletions(-)
rename {cores/arduino/stm32 => libraries/SrcWrapper}/dma.c (95%)
rename {cores/arduino/stm32 => libraries/SrcWrapper}/dma.h (89%)
diff --git a/cores/arduino/stm32/dma.c b/libraries/SrcWrapper/dma.c
similarity index 95%
rename from cores/arduino/stm32/dma.c
rename to libraries/SrcWrapper/dma.c
index d2115c1fa8..d1b045a6e1 100644
--- a/cores/arduino/stm32/dma.c
+++ b/libraries/SrcWrapper/dma.c
@@ -667,6 +667,42 @@ void DMA2_Channel8_IRQHandler()
}
#endif
+
+/* Combined handlers
+DMA1_Ch2_3_DMA2_Ch1_2_IRQn
+DMA1_Ch4_7_DMA2_Ch3_5_IRQn
+DMA1_Channel2_3_IRQn
+DMA1_Channel4_5_6_7_IRQn
+DMA1_Channel4_5_IRQn
+DMA2_Channel4_5_IRQn
+*/
+
+#if defined(DMA1_Channel2) && defined(DMA1_Channel3) && defined(DMA2_Channel1) && defined(DMA2_Channel2)
+/**
+ * @brief DMA1 and DMA2 hander for channels 2,3 and 1,2
+ * @param None
+ * @retval None
+ */
+void DMA1_Ch2_3_DMA2_Ch1_2_IRQHandler()
+{
+ if (dma_handles[DMA1_CHANNEL2_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL2_INDEX]);
+ }
+
+ if (dma_handles[DMA1_CHANNEL3_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA1_CHANNEL3_INDEX]);
+ }
+
+ if (dma_handles[DMA2_CHANNEL1_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL1_INDEX]);
+ }
+
+ if (dma_handles[DMA2_CHANNEL1_INDEX] != NULL) {
+ HAL_DMA_IRQHandler(dma_handles[DMA2_CHANNEL2_INDEX]);
+ }
+}
+#endif
+
#ifdef DMA1_Stream0
void DMA1_Stream0_IRQHandler()
{
diff --git a/cores/arduino/stm32/dma.h b/libraries/SrcWrapper/dma.h
similarity index 89%
rename from cores/arduino/stm32/dma.h
rename to libraries/SrcWrapper/dma.h
index 0909dd60ef..85d21d54f4 100644
--- a/cores/arduino/stm32/dma.h
+++ b/libraries/SrcWrapper/dma.h
@@ -46,19 +46,6 @@ extern "C" {
#include
-/**
- * @brief This function will get the interrupt number for a DMA
- * @param dma_handle : dma channel or strea
- * @retval None
- */
-IRQn_Type get_dma_interrupt(
-#if defined(STM32F2xx) || defined(STM32F4xx) || defined(STM32F7xx)
- DMA_Stream_TypeDef
-#else
- DMA_Channel_TypeDef
-#endif
- *instance);
-
/**
* @brief This function will store the DMA handle in the appropriate slot
* @param dma_handle : dma handle
From 8ab6ad944b913f313caaa10758c2b80c200f8f65 Mon Sep 17 00:00:00 2001
From: xC0000005 <32139633+xC0000005@users.noreply.github.com>
Date: Wed, 11 Dec 2019 17:53:13 -0800
Subject: [PATCH 15/18] Astyle fixes.
---
libraries/SrcWrapper/dma.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/libraries/SrcWrapper/dma.c b/libraries/SrcWrapper/dma.c
index d1b045a6e1..036333b4cb 100644
--- a/libraries/SrcWrapper/dma.c
+++ b/libraries/SrcWrapper/dma.c
@@ -669,12 +669,12 @@ void DMA2_Channel8_IRQHandler()
/* Combined handlers
-DMA1_Ch2_3_DMA2_Ch1_2_IRQn
-DMA1_Ch4_7_DMA2_Ch3_5_IRQn
-DMA1_Channel2_3_IRQn
-DMA1_Channel4_5_6_7_IRQn
-DMA1_Channel4_5_IRQn
-DMA2_Channel4_5_IRQn
+DMA1_Ch2_3_DMA2_Ch1_2_IRQn
+DMA1_Ch4_7_DMA2_Ch3_5_IRQn
+DMA1_Channel2_3_IRQn
+DMA1_Channel4_5_6_7_IRQn
+DMA1_Channel4_5_IRQn
+DMA2_Channel4_5_IRQn
*/
#if defined(DMA1_Channel2) && defined(DMA1_Channel3) && defined(DMA2_Channel1) && defined(DMA2_Channel2)
From a89fb0f6d03caeb296c52945965cad947582174a Mon Sep 17 00:00:00 2001
From: xC0000005 <32139633+xC0000005@users.noreply.github.com>
Date: Wed, 11 Dec 2019 18:02:32 -0800
Subject: [PATCH 16/18] Fix move location.
---
libraries/SrcWrapper/{ => src/stm32}/dma.c | 0
libraries/SrcWrapper/{ => src/stm32}/dma.h | 0
2 files changed, 0 insertions(+), 0 deletions(-)
rename libraries/SrcWrapper/{ => src/stm32}/dma.c (100%)
rename libraries/SrcWrapper/{ => src/stm32}/dma.h (100%)
diff --git a/libraries/SrcWrapper/dma.c b/libraries/SrcWrapper/src/stm32/dma.c
similarity index 100%
rename from libraries/SrcWrapper/dma.c
rename to libraries/SrcWrapper/src/stm32/dma.c
diff --git a/libraries/SrcWrapper/dma.h b/libraries/SrcWrapper/src/stm32/dma.h
similarity index 100%
rename from libraries/SrcWrapper/dma.h
rename to libraries/SrcWrapper/src/stm32/dma.h
From df8e3edb2e58484c9e8a72a041df080f3d2ebdb0 Mon Sep 17 00:00:00 2001
From: xC0000005 <32139633+xC0000005@users.noreply.github.com>
Date: Sat, 14 Dec 2019 09:44:03 -0800
Subject: [PATCH 17/18] Only the .c file needs to be in the library.
---
{libraries/SrcWrapper/src => cores/arduino}/stm32/dma.h | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename {libraries/SrcWrapper/src => cores/arduino}/stm32/dma.h (100%)
diff --git a/libraries/SrcWrapper/src/stm32/dma.h b/cores/arduino/stm32/dma.h
similarity index 100%
rename from libraries/SrcWrapper/src/stm32/dma.h
rename to cores/arduino/stm32/dma.h
From 3cabef85fdb8d2c9571d168dadab6be309ca9317 Mon Sep 17 00:00:00 2001
From: xC0000005 <32139633+xC0000005@users.noreply.github.com>
Date: Sat, 14 Dec 2019 13:56:00 -0800
Subject: [PATCH 18/18] Remove IRQn function since DMA class isn't part of PR.
---
libraries/SrcWrapper/src/stm32/dma.c | 143 ---------------------------
1 file changed, 143 deletions(-)
diff --git a/libraries/SrcWrapper/src/stm32/dma.c b/libraries/SrcWrapper/src/stm32/dma.c
index 036333b4cb..0b3aeb5a16 100644
--- a/libraries/SrcWrapper/src/stm32/dma.c
+++ b/libraries/SrcWrapper/src/stm32/dma.c
@@ -287,149 +287,6 @@ static dma_index_t get_dma_index(
}
}
-/**
- * @brief This function will get the interrupt number for a DMA
- * @param dma_handle : dma channel or strea
- * @retval None
- */
-IRQn_Type get_dma_interrupt(
-#if defined(STM32F2xx) || defined(STM32F4xx) || defined(STM32F7xx)
- DMA_Stream_TypeDef
-#else
- DMA_Channel_TypeDef
-#endif
- *instance)
-{
- switch ((uint32_t)instance) {
-#ifdef DMA1_Channel1
- case (uint32_t)DMA1_Channel1:
- return DMA1_Channel1_IRQn;
-#endif
-#ifdef DMA1_Channel2
- case (uint32_t)DMA1_Channel2:
- return DMA1_Channel2_IRQn;
-#endif
-#ifdef DMA1_Channel3
- case (uint32_t)DMA1_Channel3:
- return DMA1_Channel3_IRQn;
-#endif
-#ifdef DMA1_Channel4
- case (uint32_t)DMA1_Channel4:
- return DMA1_Channel4_IRQn;
-#endif
-#ifdef DMA1_Channel5
- case (uint32_t)DMA1_Channel5:
- return DMA1_Channel5_IRQn;
-#endif
-#ifdef DMA1_Channel6
- case (uint32_t)DMA1_Channel6:
- return DMA1_Channel6_IRQn;
-#endif
-#ifdef DMA1_Channel7
- case (uint32_t)DMA1_Channel7:
- return DMA1_Channel7_IRQn;
-#endif
-#ifdef DMA2_Channel1
- case (uint32_t)DMA2_Channel1:
- return DMA2_Channel1_IRQn;
-#endif
-#ifdef DMA2_Channel2
- case (uint32_t)DMA2_Channel2:
- return DMA2_Channel2_IRQn;
-#endif
-#ifdef DMA2_Channel3
- case (uint32_t)DMA2_Channel3:
- return DMA2_Channel3_IRQn;
-#endif
-#ifdef DMA2_Channel4
- case (uint32_t)DMA2_Channel4:
- return DMA2_Channel4_IRQn;
-#endif
-#ifdef DMA2_Channel5
- case (uint32_t)DMA2_Channel5:
- return DMA2_Channel5_IRQn;
-#endif
-#ifdef DMA2_Channel6
- case (uint32_t)DMA2_Channel6:
- return DMA2_Channel6_IRQn;
-#endif
-#ifdef DMA2_Channel7
- case (uint32_t)DMA2_Channel7:
- return DMA2_Channel7_IRQn;
-#endif
-#ifdef DMA2_Channel8
- case (uint32_t)DMA2_Channel8:
- return DMA2_Channel8_IRQn;
-#endif
-#ifdef DMA1_Stream0
- case (uint32_t)DMA1_Stream0:
- return DMA1_Stream0_IRQn;
-#endif
-#ifdef DMA1_Stream1
- case (uint32_t)DMA1_Stream1:
- return DMA1_Stream1_IRQn;
-#endif
-#ifdef DMA1_Stream2
- case (uint32_t)DMA1_Stream2:
- return DMA1_Stream2_IRQn;
-#endif
-#ifdef DMA1_Stream3
- case (uint32_t)DMA1_Stream3:
- return DMA1_Stream3_IRQn;
-#endif
-#ifdef DMA1_Stream4
- case (uint32_t)DMA1_Stream4:
- return DMA1_Stream4_IRQn;
-#endif
-#ifdef DMA1_Stream5
- case (uint32_t)DMA1_Stream5:
- return DMA1_Stream5_IRQn;
-#endif
-#ifdef DMA1_Stream6
- case (uint32_t)DMA1_Stream6:
- return DMA1_Stream6_IRQn;
-#endif
-#ifdef DMA1_Stream7
- case (uint32_t)DMA1_Stream7:
- return DMA1_Stream7_IRQn;
-#endif
-#ifdef DMA2_Stream0
- case (uint32_t)DMA2_Stream0:
- return DMA2_Stream0_IRQn;
-#endif
-#ifdef DMA2_Stream1
- case (uint32_t)DMA2_Stream1:
- return DMA2_Stream1_IRQn;
-#endif
-#ifdef DMA2_Stream2
- case (uint32_t)DMA2_Stream2:
- return DMA2_Stream2_IRQn;
-#endif
-#ifdef DMA2_Stream3
- case (uint32_t)DMA2_Stream3:
- return DMA2_Stream3_IRQn;
-#endif
-#ifdef DMA2_Stream4
- case (uint32_t)DMA2_Stream4:
- return DMA2_Stream4_IRQn;
-#endif
-#ifdef DMA2_Stream5
- case (uint32_t)DMA2_Stream5:
- return DMA2_Stream5_IRQn;
-#endif
-#ifdef DMA2_Stream6
- case (uint32_t)DMA2_Stream6:
- return DMA2_Stream6_IRQn;
-#endif
-#ifdef DMA2_Stream7
- case (uint32_t)DMA2_Stream7:
- return DMA2_Stream7_IRQn;
-#endif
- default:
- return NC;
- }
-}
-
/**
* @brief This function will store the DMA handle in the appropriate slot
* @param dma_handle : dma handle