xref: /btstack/port/stm32-f4discovery-usb/bsp/stm32f4_discovery_audio.h (revision e0a94143c1f0305eb5125b599df7b54ca2d10b42)
1f763b8ceSMatthias Ringwald /**
2f763b8ceSMatthias Ringwald   ******************************************************************************
3f763b8ceSMatthias Ringwald   * @file    stm32f4_discovery_audio.h
4f763b8ceSMatthias Ringwald   * @author  MCD Application Team
5f763b8ceSMatthias Ringwald   * @version V2.1.2
6f763b8ceSMatthias Ringwald   * @date    27-January-2017
7f763b8ceSMatthias Ringwald   * @brief   This file contains the common defines and functions prototypes for
8f763b8ceSMatthias Ringwald   *          stm32f4_discovery_audio.c driver.
9f763b8ceSMatthias Ringwald   ******************************************************************************
10f763b8ceSMatthias Ringwald   * @attention
11f763b8ceSMatthias Ringwald   *
12f763b8ceSMatthias Ringwald   * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
13f763b8ceSMatthias Ringwald   *
14f763b8ceSMatthias Ringwald   * Redistribution and use in source and binary forms, with or without modification,
15f763b8ceSMatthias Ringwald   * are permitted provided that the following conditions are met:
16f763b8ceSMatthias Ringwald   *   1. Redistributions of source code must retain the above copyright notice,
17f763b8ceSMatthias Ringwald   *      this list of conditions and the following disclaimer.
18f763b8ceSMatthias Ringwald   *   2. Redistributions in binary form must reproduce the above copyright notice,
19f763b8ceSMatthias Ringwald   *      this list of conditions and the following disclaimer in the documentation
20f763b8ceSMatthias Ringwald   *      and/or other materials provided with the distribution.
21f763b8ceSMatthias Ringwald   *   3. Neither the name of STMicroelectronics nor the names of its contributors
22f763b8ceSMatthias Ringwald   *      may be used to endorse or promote products derived from this software
23f763b8ceSMatthias Ringwald   *      without specific prior written permission.
24f763b8ceSMatthias Ringwald   *
25f763b8ceSMatthias Ringwald   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
26f763b8ceSMatthias Ringwald   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27f763b8ceSMatthias Ringwald   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
28f763b8ceSMatthias Ringwald   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
29f763b8ceSMatthias Ringwald   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
30f763b8ceSMatthias Ringwald   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
31f763b8ceSMatthias Ringwald   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
32f763b8ceSMatthias Ringwald   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
33f763b8ceSMatthias Ringwald   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
34f763b8ceSMatthias Ringwald   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35f763b8ceSMatthias Ringwald   *
36f763b8ceSMatthias Ringwald   ******************************************************************************
37f763b8ceSMatthias Ringwald   */
38f763b8ceSMatthias Ringwald 
39f763b8ceSMatthias Ringwald /* Define to prevent recursive inclusion -------------------------------------*/
40f763b8ceSMatthias Ringwald #ifndef __STM32F4_DISCOVERY_AUDIO_H
41f763b8ceSMatthias Ringwald #define __STM32F4_DISCOVERY_AUDIO_H
42f763b8ceSMatthias Ringwald 
43f763b8ceSMatthias Ringwald #ifdef __cplusplus
44f763b8ceSMatthias Ringwald  extern "C" {
45f763b8ceSMatthias Ringwald #endif
46f763b8ceSMatthias Ringwald 
47f763b8ceSMatthias Ringwald /* Includes ------------------------------------------------------------------*/
48f763b8ceSMatthias Ringwald /* Include audio component Driver */
49f763b8ceSMatthias Ringwald #include "cs43l22.h"
50f763b8ceSMatthias Ringwald 
51f763b8ceSMatthias Ringwald #include "stm32f4_discovery.h"
52f763b8ceSMatthias Ringwald //#include "../../../Middlewares/ST/STM32_Audio/Addons/PDM/pdm_filter.h"
53f763b8ceSMatthias Ringwald 
54f763b8ceSMatthias Ringwald /** @addtogroup BSP
55f763b8ceSMatthias Ringwald   * @{
56f763b8ceSMatthias Ringwald   */
57f763b8ceSMatthias Ringwald 
58f763b8ceSMatthias Ringwald /** @addtogroup STM32F4_DISCOVERY
59f763b8ceSMatthias Ringwald   * @{
60f763b8ceSMatthias Ringwald   */
61f763b8ceSMatthias Ringwald 
62f763b8ceSMatthias Ringwald /** @addtogroup STM32F4_DISCOVERY_AUDIO
63f763b8ceSMatthias Ringwald   * @{
64f763b8ceSMatthias Ringwald   */
65f763b8ceSMatthias Ringwald 
66f763b8ceSMatthias Ringwald 
67f763b8ceSMatthias Ringwald /** @defgroup STM32F4_DISCOVERY_AUDIO_Exported_Types STM32F4 DISCOVERY AUDIO Exported Types
68f763b8ceSMatthias Ringwald   * @{
69f763b8ceSMatthias Ringwald   */
70f763b8ceSMatthias Ringwald /**
71f763b8ceSMatthias Ringwald   * @}
72f763b8ceSMatthias Ringwald   */
73f763b8ceSMatthias Ringwald 
74f763b8ceSMatthias Ringwald /** @defgroup STM32F4_DISCOVERY_AUDIO_OUT_Exported_Constants STM32F4 DISCOVERY AUDIO OUT Exported Constants
75f763b8ceSMatthias Ringwald   * @{
76f763b8ceSMatthias Ringwald   */
77f763b8ceSMatthias Ringwald 
78f763b8ceSMatthias Ringwald /*------------------------------------------------------------------------------
79f763b8ceSMatthias Ringwald                           AUDIO OUT CONFIGURATION
80f763b8ceSMatthias Ringwald ------------------------------------------------------------------------------*/
81f763b8ceSMatthias Ringwald 
82f763b8ceSMatthias Ringwald /* I2S peripheral configuration defines */
83f763b8ceSMatthias Ringwald #define I2S3                            SPI3
84f763b8ceSMatthias Ringwald #define I2S3_CLK_ENABLE()               __HAL_RCC_SPI3_CLK_ENABLE()
85f763b8ceSMatthias Ringwald #define I2S3_CLK_DISABLE()              __HAL_RCC_SPI3_CLK_DISABLE()
86f763b8ceSMatthias Ringwald #define I2S3_SCK_SD_WS_AF               GPIO_AF6_SPI3
87f763b8ceSMatthias Ringwald #define I2S3_SCK_SD_CLK_ENABLE()        __HAL_RCC_GPIOC_CLK_ENABLE()
88f763b8ceSMatthias Ringwald #define I2S3_MCK_CLK_ENABLE()           __HAL_RCC_GPIOC_CLK_ENABLE()
89f763b8ceSMatthias Ringwald #define I2S3_WS_CLK_ENABLE()            __HAL_RCC_GPIOA_CLK_ENABLE()
90f763b8ceSMatthias Ringwald #define I2S3_WS_PIN                     GPIO_PIN_4
91f763b8ceSMatthias Ringwald #define I2S3_SCK_PIN                    GPIO_PIN_10
92f763b8ceSMatthias Ringwald #define I2S3_SD_PIN                     GPIO_PIN_12
93f763b8ceSMatthias Ringwald #define I2S3_MCK_PIN                    GPIO_PIN_7
94f763b8ceSMatthias Ringwald #define I2S3_SCK_SD_GPIO_PORT           GPIOC
95f763b8ceSMatthias Ringwald #define I2S3_WS_GPIO_PORT               GPIOA
96f763b8ceSMatthias Ringwald #define I2S3_MCK_GPIO_PORT              GPIOC
97f763b8ceSMatthias Ringwald 
98f763b8ceSMatthias Ringwald /* I2S DMA Stream definitions */
99f763b8ceSMatthias Ringwald #define I2S3_DMAx_CLK_ENABLE()          __HAL_RCC_DMA1_CLK_ENABLE()
100f763b8ceSMatthias Ringwald #define I2S3_DMAx_CLK_DISABLE()         __HAL_RCC_DMA1_CLK_DISABLE()
101f763b8ceSMatthias Ringwald #define I2S3_DMAx_STREAM                DMA1_Stream7
102f763b8ceSMatthias Ringwald #define I2S3_DMAx_CHANNEL               DMA_CHANNEL_0
103f763b8ceSMatthias Ringwald #define I2S3_DMAx_IRQ                   DMA1_Stream7_IRQn
104f763b8ceSMatthias Ringwald #define I2S3_DMAx_PERIPH_DATA_SIZE      DMA_PDATAALIGN_HALFWORD
105f763b8ceSMatthias Ringwald #define I2S3_DMAx_MEM_DATA_SIZE         DMA_MDATAALIGN_HALFWORD
106f763b8ceSMatthias Ringwald #define DMA_MAX_SZE                     0xFFFF
107f763b8ceSMatthias Ringwald 
108f763b8ceSMatthias Ringwald #define I2S3_IRQHandler                 DMA1_Stream7_IRQHandler
109f763b8ceSMatthias Ringwald 
110f763b8ceSMatthias Ringwald /* Select the interrupt preemption priority and subpriority for the DMA interrupt */
111f763b8ceSMatthias Ringwald #define AUDIO_OUT_IRQ_PREPRIO           0x0E   /* Select the preemption priority level(0 is the highest) */
112f763b8ceSMatthias Ringwald 
113f763b8ceSMatthias Ringwald /*------------------------------------------------------------------------------
114f763b8ceSMatthias Ringwald                           AUDIO IN CONFIGURATION
115f763b8ceSMatthias Ringwald ------------------------------------------------------------------------------*/
116f763b8ceSMatthias Ringwald /* SPI Configuration defines */
117f763b8ceSMatthias Ringwald #define I2S2                            SPI2
118f763b8ceSMatthias Ringwald #define I2S2_CLK_ENABLE()               __HAL_RCC_SPI2_CLK_ENABLE()
119f763b8ceSMatthias Ringwald #define I2S2_CLK_DISABLE()              __HAL_RCC_SPI2_CLK_DISABLE()
120f763b8ceSMatthias Ringwald #define I2S2_SCK_PIN                    GPIO_PIN_10
121f763b8ceSMatthias Ringwald #define I2S2_SCK_GPIO_PORT              GPIOB
122f763b8ceSMatthias Ringwald #define I2S2_SCK_GPIO_CLK_ENABLE()      __HAL_RCC_GPIOB_CLK_ENABLE()
123f763b8ceSMatthias Ringwald #define I2S2_SCK_AF                     GPIO_AF5_SPI2
124f763b8ceSMatthias Ringwald 
125f763b8ceSMatthias Ringwald #define I2S2_MOSI_PIN                   GPIO_PIN_3
126f763b8ceSMatthias Ringwald #define I2S2_MOSI_GPIO_PORT             GPIOC
127f763b8ceSMatthias Ringwald #define I2S2_MOSI_GPIO_CLK_ENABLE()     __HAL_RCC_GPIOC_CLK_ENABLE()
128f763b8ceSMatthias Ringwald #define I2S2_MOSI_AF                    GPIO_AF5_SPI2
129f763b8ceSMatthias Ringwald 
130f763b8ceSMatthias Ringwald /* I2S DMA Stream Rx definitions */
131f763b8ceSMatthias Ringwald #define I2S2_DMAx_CLK_ENABLE()          __HAL_RCC_DMA1_CLK_ENABLE()
132f763b8ceSMatthias Ringwald #define I2S2_DMAx_CLK_DISABLE()         __HAL_RCC_DMA1_CLK_DISABLE()
133f763b8ceSMatthias Ringwald #define I2S2_DMAx_STREAM                DMA1_Stream3
134f763b8ceSMatthias Ringwald #define I2S2_DMAx_CHANNEL               DMA_CHANNEL_0
135f763b8ceSMatthias Ringwald #define I2S2_DMAx_IRQ                   DMA1_Stream3_IRQn
136f763b8ceSMatthias Ringwald #define I2S2_DMAx_PERIPH_DATA_SIZE      DMA_PDATAALIGN_HALFWORD
137f763b8ceSMatthias Ringwald #define I2S2_DMAx_MEM_DATA_SIZE         DMA_MDATAALIGN_HALFWORD
138f763b8ceSMatthias Ringwald 
139f763b8ceSMatthias Ringwald #define I2S2_IRQHandler                 DMA1_Stream3_IRQHandler
140f763b8ceSMatthias Ringwald 
141f763b8ceSMatthias Ringwald /* Select the interrupt preemption priority and subpriority for the IT/DMA interrupt */
142f763b8ceSMatthias Ringwald #define AUDIO_IN_IRQ_PREPRIO            0x0F   /* Select the preemption priority level(0 is the highest) */
143f763b8ceSMatthias Ringwald 
144f763b8ceSMatthias Ringwald /*------------------------------------------------------------------------------
145f763b8ceSMatthias Ringwald              CONFIGURATION: Audio Driver Configuration parameters
146f763b8ceSMatthias Ringwald ------------------------------------------------------------------------------*/
147f763b8ceSMatthias Ringwald 
148f763b8ceSMatthias Ringwald #define AUDIODATA_SIZE                  2   /* 16-bits audio data size */
149f763b8ceSMatthias Ringwald 
150f763b8ceSMatthias Ringwald /* Audio status definition */
151f763b8ceSMatthias Ringwald #define AUDIO_OK                        0
152f763b8ceSMatthias Ringwald #define AUDIO_ERROR                     1
153f763b8ceSMatthias Ringwald #define AUDIO_TIMEOUT                   2
154f763b8ceSMatthias Ringwald 
155f763b8ceSMatthias Ringwald /* AudioFreq * DataSize (2 bytes) * NumChannels (Stereo: 2) */
156f763b8ceSMatthias Ringwald #define DEFAULT_AUDIO_IN_FREQ                 I2S_AUDIOFREQ_16K
157f763b8ceSMatthias Ringwald #define DEFAULT_AUDIO_IN_BIT_RESOLUTION       16
158f763b8ceSMatthias Ringwald #define DEFAULT_AUDIO_IN_CHANNEL_NBR          1 /* Mono = 1, Stereo = 2 */
159f763b8ceSMatthias Ringwald #define DEFAULT_AUDIO_IN_VOLUME               64
160f763b8ceSMatthias Ringwald 
161f763b8ceSMatthias Ringwald /* PDM buffer input size */
162f763b8ceSMatthias Ringwald #define INTERNAL_BUFF_SIZE                    128*DEFAULT_AUDIO_IN_FREQ/16000*DEFAULT_AUDIO_IN_CHANNEL_NBR
163f763b8ceSMatthias Ringwald /* PCM buffer output size */
164f763b8ceSMatthias Ringwald #define PCM_OUT_SIZE                          DEFAULT_AUDIO_IN_FREQ/1000
165f763b8ceSMatthias Ringwald #define CHANNEL_DEMUX_MASK                    0x55
166f763b8ceSMatthias Ringwald 
167f763b8ceSMatthias Ringwald /*------------------------------------------------------------------------------
168f763b8ceSMatthias Ringwald                     OPTIONAL Configuration defines parameters
169f763b8ceSMatthias Ringwald ------------------------------------------------------------------------------*/
170f763b8ceSMatthias Ringwald 
171f763b8ceSMatthias Ringwald /**
172f763b8ceSMatthias Ringwald   * @}
173f763b8ceSMatthias Ringwald   */
174f763b8ceSMatthias Ringwald 
175f763b8ceSMatthias Ringwald /** @defgroup STM32F4_DISCOVERY_AUDIO_Exported_Variables STM32F4 DISCOVERY AUDIO Exported Variables
176f763b8ceSMatthias Ringwald   * @{
177f763b8ceSMatthias Ringwald   */
178f763b8ceSMatthias Ringwald extern __IO uint16_t AudioInVolume;
179f763b8ceSMatthias Ringwald /**
180f763b8ceSMatthias Ringwald   * @}
181f763b8ceSMatthias Ringwald   */
182f763b8ceSMatthias Ringwald 
183f763b8ceSMatthias Ringwald /** @defgroup STM32F4_DISCOVERY_AUDIO_Exported_Macros STM32F4 DISCOVERY AUDIO Exported Macros
184f763b8ceSMatthias Ringwald   * @{
185f763b8ceSMatthias Ringwald   */
186f763b8ceSMatthias Ringwald #define DMA_MAX(_X_)                (((_X_) <= DMA_MAX_SZE)? (_X_):DMA_MAX_SZE)
187f763b8ceSMatthias Ringwald /**
188f763b8ceSMatthias Ringwald   * @}
189f763b8ceSMatthias Ringwald   */
190f763b8ceSMatthias Ringwald 
191f763b8ceSMatthias Ringwald /** @defgroup STM32F4_DISCOVERY_AUDIO_OUT_Exported_Functions  STM32F4 DISCOVERY AUDIO OUT Exported Functions
192f763b8ceSMatthias Ringwald   * @{
193f763b8ceSMatthias Ringwald   */
194f763b8ceSMatthias Ringwald uint8_t BSP_AUDIO_OUT_Init(uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq);
195f763b8ceSMatthias Ringwald uint8_t BSP_AUDIO_OUT_Play(uint16_t* pBuffer, uint32_t Size);
196f763b8ceSMatthias Ringwald void    BSP_AUDIO_OUT_ChangeBuffer(uint16_t *pData, uint16_t Size);
197f763b8ceSMatthias Ringwald uint8_t BSP_AUDIO_OUT_Pause(void);
198f763b8ceSMatthias Ringwald uint8_t BSP_AUDIO_OUT_Resume(void);
199f763b8ceSMatthias Ringwald uint8_t BSP_AUDIO_OUT_Stop(uint32_t Option);
200f763b8ceSMatthias Ringwald uint8_t BSP_AUDIO_OUT_SetVolume(uint8_t Volume);
201f763b8ceSMatthias Ringwald void    BSP_AUDIO_OUT_SetFrequency(uint32_t AudioFreq);
202*e0a94143SDirk Helbig uint32_t BSP_AUDIO_OUT_GetFrequency();
203f763b8ceSMatthias Ringwald uint8_t BSP_AUDIO_OUT_SetMute(uint32_t Cmd);
204f763b8ceSMatthias Ringwald uint8_t BSP_AUDIO_OUT_SetOutputMode(uint8_t Output);
205f763b8ceSMatthias Ringwald 
206f763b8ceSMatthias Ringwald /* User Callbacks: user has to implement these functions in his code if they are needed. */
207f763b8ceSMatthias Ringwald /* This function is called when the requested data has been completely transferred. */
208f763b8ceSMatthias Ringwald void    BSP_AUDIO_OUT_TransferComplete_CallBack(void);
209f763b8ceSMatthias Ringwald 
210f763b8ceSMatthias Ringwald /* This function is called when half of the requested buffer has been transferred. */
211f763b8ceSMatthias Ringwald void    BSP_AUDIO_OUT_HalfTransfer_CallBack(void);
212f763b8ceSMatthias Ringwald 
213f763b8ceSMatthias Ringwald /* This function is called when an Interrupt due to transfer error on or peripheral
214f763b8ceSMatthias Ringwald    error occurs. */
215f763b8ceSMatthias Ringwald void    BSP_AUDIO_OUT_Error_CallBack(void);
216f763b8ceSMatthias Ringwald 
217f763b8ceSMatthias Ringwald /* These function can be modified in case the current settings (e.g. DMA stream)
218f763b8ceSMatthias Ringwald    need to be changed for specific application needs */
219f763b8ceSMatthias Ringwald void  BSP_AUDIO_OUT_ClockConfig(I2S_HandleTypeDef *hi2s, uint32_t AudioFreq, void *Params);
220f763b8ceSMatthias Ringwald void  BSP_AUDIO_OUT_MspInit(I2S_HandleTypeDef *hi2s, void *Params);
221f763b8ceSMatthias Ringwald void  BSP_AUDIO_OUT_MspDeInit(I2S_HandleTypeDef *hi2s, void *Params);
222f763b8ceSMatthias Ringwald 
223f763b8ceSMatthias Ringwald /**
224f763b8ceSMatthias Ringwald   * @}
225f763b8ceSMatthias Ringwald   */
226f763b8ceSMatthias Ringwald 
227f763b8ceSMatthias Ringwald /** @defgroup STM32F4_DISCOVERY_AUDIO_IN_Exported_Functions STM32F4 DISCOVERY AUDIO IN Exported Functions
228f763b8ceSMatthias Ringwald   * @{
229f763b8ceSMatthias Ringwald   */
230f763b8ceSMatthias Ringwald uint8_t BSP_AUDIO_IN_Init(uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr);
231f763b8ceSMatthias Ringwald uint8_t BSP_AUDIO_IN_Record(uint16_t *pData, uint32_t Size);
232f763b8ceSMatthias Ringwald uint8_t BSP_AUDIO_IN_Stop(void);
233f763b8ceSMatthias Ringwald uint8_t BSP_AUDIO_IN_Pause(void);
234f763b8ceSMatthias Ringwald uint8_t BSP_AUDIO_IN_Resume(void);
235f763b8ceSMatthias Ringwald uint8_t BSP_AUDIO_IN_SetVolume(uint8_t Volume);
236f763b8ceSMatthias Ringwald uint8_t BSP_AUDIO_IN_PDMToPCM(uint16_t *PDMBuf, uint16_t *PCMBuf);
237f763b8ceSMatthias Ringwald /* User Callbacks: user has to implement these functions in his code if they are needed. */
238f763b8ceSMatthias Ringwald /* This function should be implemented by the user application.
239f763b8ceSMatthias Ringwald    It is called into this driver when the current buffer is filled to prepare the next
240f763b8ceSMatthias Ringwald    buffer pointer and its size. */
241f763b8ceSMatthias Ringwald void    BSP_AUDIO_IN_TransferComplete_CallBack(void);
242f763b8ceSMatthias Ringwald void    BSP_AUDIO_IN_HalfTransfer_CallBack(void);
243f763b8ceSMatthias Ringwald 
244f763b8ceSMatthias Ringwald /* This function is called when an Interrupt due to transfer error on or peripheral
245f763b8ceSMatthias Ringwald    error occurs. */
246f763b8ceSMatthias Ringwald void    BSP_AUDIO_IN_Error_Callback(void);
247f763b8ceSMatthias Ringwald 
248f763b8ceSMatthias Ringwald /* These function can be modified in case the current settings (e.g. DMA stream)
249f763b8ceSMatthias Ringwald    need to be changed for specific application needs */
250f763b8ceSMatthias Ringwald void  BSP_AUDIO_IN_ClockConfig(I2S_HandleTypeDef *hi2s, uint32_t AudioFreq, void *Params);
251f763b8ceSMatthias Ringwald void  BSP_AUDIO_IN_MspInit(I2S_HandleTypeDef *hi2s, void *Params);
252f763b8ceSMatthias Ringwald void  BSP_AUDIO_IN_MspDeInit(I2S_HandleTypeDef *hi2s, void *Params);
253f763b8ceSMatthias Ringwald 
254f763b8ceSMatthias Ringwald /**
255f763b8ceSMatthias Ringwald   * @}
256f763b8ceSMatthias Ringwald   */
257f763b8ceSMatthias Ringwald 
258f763b8ceSMatthias Ringwald /**
259f763b8ceSMatthias Ringwald   * @}
260f763b8ceSMatthias Ringwald   */
261f763b8ceSMatthias Ringwald 
262f763b8ceSMatthias Ringwald /**
263f763b8ceSMatthias Ringwald   * @}
264f763b8ceSMatthias Ringwald   */
265f763b8ceSMatthias Ringwald 
266f763b8ceSMatthias Ringwald /**
267f763b8ceSMatthias Ringwald   * @}
268f763b8ceSMatthias Ringwald   */
269f763b8ceSMatthias Ringwald 
270f763b8ceSMatthias Ringwald #ifdef __cplusplus
271f763b8ceSMatthias Ringwald }
272f763b8ceSMatthias Ringwald #endif
273f763b8ceSMatthias Ringwald 
274f763b8ceSMatthias Ringwald #endif /* __STM32F4_DISCOVERY_AUDIO_H */
275f763b8ceSMatthias Ringwald 
276f763b8ceSMatthias Ringwald /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
277