STM32746G-Discovery board drivers V1.0.0
Dependents: F746_SD_GraphicEqualizer_ren0620
Fork of BSP_DISCO_F746NG by
Revision 2:458ab1edf6b2, committed 2016-03-24
- Comitter:
- adustm
- Date:
- Thu Mar 24 20:50:59 2016 +0000
- Parent:
- 1:ee089790cdbb
- Child:
- 3:286943c42d38
- Commit message:
- Update BSP to allow the use of Audio interrupts in mbed context
Changed in this revision
| stm32746g_discovery.h | Show annotated file Show diff for this revision Revisions of this file |
| stm32746g_discovery_audio.c | Show annotated file Show diff for this revision Revisions of this file |
--- a/stm32746g_discovery.h Mon Jan 04 15:19:15 2016 +0000
+++ b/stm32746g_discovery.h Thu Mar 24 20:50:59 2016 +0000
@@ -46,6 +46,7 @@
/* Includes ------------------------------------------------------------------*/
#include "stm32f7xx_hal.h"
+#include "cmsis_nvic.h"
/** @addtogroup BSP
* @{
--- a/stm32746g_discovery_audio.c Mon Jan 04 15:19:15 2016 +0000
+++ b/stm32746g_discovery_audio.c Thu Mar 24 20:50:59 2016 +0000
@@ -147,6 +147,9 @@
/** @defgroup STM32746G_DISCOVERY_AUDIO_Private_Function_Prototypes STM32746G_DISCOVERY AUDIO Private Function Prototypes
* @{
*/
+static void AUDIO_IN_INT_IRQHandler(void);
+static void AUDIO_IN_SAIx_DMAx_IRQHandler(void);
+static void AUDIO_OUT_SAIx_DMAx_IRQHandler(void);
static void SAIx_Out_Init(uint32_t AudioFreq);
static void SAIx_Out_DeInit(void);
static void SAIx_In_Init(uint32_t SaiOutMode, uint32_t SlotActive, uint32_t AudioFreq);
@@ -599,10 +602,20 @@
/* Configure the DMA Stream */
HAL_DMA_Init(&hdma_sai_tx);
}
-
+#if ( __MBED__ == 1)
+ // Enable interrupt
+ IRQn_Type irqn = (IRQn_Type)(AUDIO_OUT_SAIx_DMAx_IRQ);
+ NVIC_ClearPendingIRQ(irqn);
+ NVIC_DisableIRQ(irqn);
+ NVIC_SetPriority(irqn, AUDIO_OUT_IRQ_PREPRIO);
+ NVIC_SetVector(irqn, (uint32_t)AUDIO_OUT_SAIx_DMAx_IRQHandler);
+ NVIC_EnableIRQ(irqn);
+
+#else
/* SAI DMA IRQ Channel configuration */
HAL_NVIC_SetPriority(AUDIO_OUT_SAIx_DMAx_IRQ, AUDIO_OUT_IRQ_PREPRIO, 0);
HAL_NVIC_EnableIRQ(AUDIO_OUT_SAIx_DMAx_IRQ);
+#endif
}
/**
@@ -1168,12 +1181,30 @@
}
/* SAI DMA IRQ Channel configuration */
+#if ( __MBED__ == 1)
+ IRQn_Type irqn = (IRQn_Type)(AUDIO_IN_SAIx_DMAx_IRQ);
+ NVIC_ClearPendingIRQ(irqn);
+ NVIC_DisableIRQ(irqn);
+ NVIC_SetPriority(irqn, AUDIO_IN_IRQ_PREPRIO);
+ NVIC_SetVector(irqn, (uint32_t)AUDIO_IN_SAIx_DMAx_IRQHandler);
+ NVIC_EnableIRQ(irqn);
+#else
HAL_NVIC_SetPriority(AUDIO_IN_SAIx_DMAx_IRQ, AUDIO_IN_IRQ_PREPRIO, 0);
HAL_NVIC_EnableIRQ(AUDIO_IN_SAIx_DMAx_IRQ);
+#endif
/* Audio INT IRQ Channel configuration */
+#if ( __MBED__ == 1)
+ irqn = (IRQn_Type)(AUDIO_IN_INT_IRQ);
+ NVIC_ClearPendingIRQ(irqn);
+ NVIC_DisableIRQ(irqn);
+ NVIC_SetPriority(irqn, AUDIO_IN_IRQ_PREPRIO);
+ NVIC_SetVector(irqn, (uint32_t)AUDIO_IN_INT_IRQHandler);
+ NVIC_EnableIRQ(irqn);
+#else
HAL_NVIC_SetPriority(AUDIO_IN_INT_IRQ, AUDIO_IN_IRQ_PREPRIO, 0);
HAL_NVIC_EnableIRQ(AUDIO_IN_INT_IRQ);
+#endif
}
/**
@@ -1340,6 +1371,39 @@
HAL_SAI_DeInit(&haudio_in_sai);
}
+/**
+ * @brief This function handles External line 15_10 interrupt request.
+ * @param None
+ * @retval None
+ */
+static void AUDIO_IN_INT_IRQHandler(void)
+{
+ /* Interrupt handler shared between SD_DETECT pin, USER_KEY button and touch screen interrupt */
+ if (__HAL_GPIO_EXTI_GET_IT(AUDIO_IN_INT_GPIO_PIN) != RESET)
+ {
+ HAL_GPIO_EXTI_IRQHandler(AUDIO_IN_INT_GPIO_PIN); /* Audio Interrupt */
+ }
+}
+
+/**
+ * @brief This function handles DMA2 Stream 7 interrupt request.
+ * @param None
+ * @retval None
+ */
+static void AUDIO_IN_SAIx_DMAx_IRQHandler(void)
+{
+ HAL_DMA_IRQHandler(haudio_in_sai.hdmarx);
+}
+
+/**
+ * @brief This function handles DMA2 Stream 6 interrupt request.
+ * @param None
+ * @retval None
+ */
+static void AUDIO_OUT_SAIx_DMAx_IRQHandler(void)
+{
+ HAL_DMA_IRQHandler(haudio_out_sai.hdmatx);
+}
/**
* @}
