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