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