xref: /btstack/port/stm32-f4discovery-cc256x/bsp/stm32f4_discovery_audio.h (revision e0a94143c1f0305eb5125b599df7b54ca2d10b42)
1225f4ba4SMatthias Ringwald /**
2225f4ba4SMatthias Ringwald   ******************************************************************************
3225f4ba4SMatthias Ringwald   * @file    stm32f4_discovery_audio.h
4225f4ba4SMatthias Ringwald   * @author  MCD Application Team
5225f4ba4SMatthias Ringwald   * @version V2.1.2
6225f4ba4SMatthias Ringwald   * @date    27-January-2017
7225f4ba4SMatthias Ringwald   * @brief   This file contains the common defines and functions prototypes for
8225f4ba4SMatthias Ringwald   *          stm32f4_discovery_audio.c driver.
9225f4ba4SMatthias Ringwald   ******************************************************************************
10225f4ba4SMatthias Ringwald   * @attention
11225f4ba4SMatthias Ringwald   *
12225f4ba4SMatthias Ringwald   * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
13225f4ba4SMatthias Ringwald   *
14225f4ba4SMatthias Ringwald   * Redistribution and use in source and binary forms, with or without modification,
15225f4ba4SMatthias Ringwald   * are permitted provided that the following conditions are met:
16225f4ba4SMatthias Ringwald   *   1. Redistributions of source code must retain the above copyright notice,
17225f4ba4SMatthias Ringwald   *      this list of conditions and the following disclaimer.
18225f4ba4SMatthias Ringwald   *   2. Redistributions in binary form must reproduce the above copyright notice,
19225f4ba4SMatthias Ringwald   *      this list of conditions and the following disclaimer in the documentation
20225f4ba4SMatthias Ringwald   *      and/or other materials provided with the distribution.
21225f4ba4SMatthias Ringwald   *   3. Neither the name of STMicroelectronics nor the names of its contributors
22225f4ba4SMatthias Ringwald   *      may be used to endorse or promote products derived from this software
23225f4ba4SMatthias Ringwald   *      without specific prior written permission.
24225f4ba4SMatthias Ringwald   *
25225f4ba4SMatthias Ringwald   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
26225f4ba4SMatthias Ringwald   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27225f4ba4SMatthias Ringwald   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
28225f4ba4SMatthias Ringwald   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
29225f4ba4SMatthias Ringwald   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
30225f4ba4SMatthias Ringwald   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
31225f4ba4SMatthias Ringwald   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
32225f4ba4SMatthias Ringwald   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
33225f4ba4SMatthias Ringwald   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
34225f4ba4SMatthias Ringwald   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35225f4ba4SMatthias Ringwald   *
36225f4ba4SMatthias Ringwald   ******************************************************************************
37225f4ba4SMatthias Ringwald   */
38225f4ba4SMatthias Ringwald 
39225f4ba4SMatthias Ringwald /* Define to prevent recursive inclusion -------------------------------------*/
40225f4ba4SMatthias Ringwald #ifndef __STM32F4_DISCOVERY_AUDIO_H
41225f4ba4SMatthias Ringwald #define __STM32F4_DISCOVERY_AUDIO_H
42225f4ba4SMatthias Ringwald 
43225f4ba4SMatthias Ringwald #ifdef __cplusplus
44225f4ba4SMatthias Ringwald  extern "C" {
45225f4ba4SMatthias Ringwald #endif
46225f4ba4SMatthias Ringwald 
47225f4ba4SMatthias Ringwald /* Includes ------------------------------------------------------------------*/
48225f4ba4SMatthias Ringwald /* Include audio component Driver */
49225f4ba4SMatthias Ringwald #include "cs43l22.h"
50225f4ba4SMatthias Ringwald 
51225f4ba4SMatthias Ringwald #include "stm32f4_discovery.h"
52225f4ba4SMatthias Ringwald //#include "../../../Middlewares/ST/STM32_Audio/Addons/PDM/pdm_filter.h"
53225f4ba4SMatthias Ringwald 
54225f4ba4SMatthias Ringwald /** @addtogroup BSP
55225f4ba4SMatthias Ringwald   * @{
56225f4ba4SMatthias Ringwald   */
57225f4ba4SMatthias Ringwald 
58225f4ba4SMatthias Ringwald /** @addtogroup STM32F4_DISCOVERY
59225f4ba4SMatthias Ringwald   * @{
60225f4ba4SMatthias Ringwald   */
61225f4ba4SMatthias Ringwald 
62225f4ba4SMatthias Ringwald /** @addtogroup STM32F4_DISCOVERY_AUDIO
63225f4ba4SMatthias Ringwald   * @{
64225f4ba4SMatthias Ringwald   */
65225f4ba4SMatthias Ringwald 
66225f4ba4SMatthias Ringwald 
67225f4ba4SMatthias Ringwald /** @defgroup STM32F4_DISCOVERY_AUDIO_Exported_Types STM32F4 DISCOVERY AUDIO Exported Types
68225f4ba4SMatthias Ringwald   * @{
69225f4ba4SMatthias Ringwald   */
70225f4ba4SMatthias Ringwald /**
71225f4ba4SMatthias Ringwald   * @}
72225f4ba4SMatthias Ringwald   */
73225f4ba4SMatthias Ringwald 
74225f4ba4SMatthias Ringwald /** @defgroup STM32F4_DISCOVERY_AUDIO_OUT_Exported_Constants STM32F4 DISCOVERY AUDIO OUT Exported Constants
75225f4ba4SMatthias Ringwald   * @{
76225f4ba4SMatthias Ringwald   */
77225f4ba4SMatthias Ringwald 
78225f4ba4SMatthias Ringwald /*------------------------------------------------------------------------------
79225f4ba4SMatthias Ringwald                           AUDIO OUT CONFIGURATION
80225f4ba4SMatthias Ringwald ------------------------------------------------------------------------------*/
81225f4ba4SMatthias Ringwald 
82225f4ba4SMatthias Ringwald /* I2S peripheral configuration defines */
83225f4ba4SMatthias Ringwald #define I2S3                            SPI3
84225f4ba4SMatthias Ringwald #define I2S3_CLK_ENABLE()               __HAL_RCC_SPI3_CLK_ENABLE()
85225f4ba4SMatthias Ringwald #define I2S3_CLK_DISABLE()              __HAL_RCC_SPI3_CLK_DISABLE()
86225f4ba4SMatthias Ringwald #define I2S3_SCK_SD_WS_AF               GPIO_AF6_SPI3
87225f4ba4SMatthias Ringwald #define I2S3_SCK_SD_CLK_ENABLE()        __HAL_RCC_GPIOC_CLK_ENABLE()
88225f4ba4SMatthias Ringwald #define I2S3_MCK_CLK_ENABLE()           __HAL_RCC_GPIOC_CLK_ENABLE()
89225f4ba4SMatthias Ringwald #define I2S3_WS_CLK_ENABLE()            __HAL_RCC_GPIOA_CLK_ENABLE()
90225f4ba4SMatthias Ringwald #define I2S3_WS_PIN                     GPIO_PIN_4
91225f4ba4SMatthias Ringwald #define I2S3_SCK_PIN                    GPIO_PIN_10
92225f4ba4SMatthias Ringwald #define I2S3_SD_PIN                     GPIO_PIN_12
93225f4ba4SMatthias Ringwald #define I2S3_MCK_PIN                    GPIO_PIN_7
94225f4ba4SMatthias Ringwald #define I2S3_SCK_SD_GPIO_PORT           GPIOC
95225f4ba4SMatthias Ringwald #define I2S3_WS_GPIO_PORT               GPIOA
96225f4ba4SMatthias Ringwald #define I2S3_MCK_GPIO_PORT              GPIOC
97225f4ba4SMatthias Ringwald 
98225f4ba4SMatthias Ringwald /* I2S DMA Stream definitions */
99225f4ba4SMatthias Ringwald #define I2S3_DMAx_CLK_ENABLE()          __HAL_RCC_DMA1_CLK_ENABLE()
100225f4ba4SMatthias Ringwald #define I2S3_DMAx_CLK_DISABLE()         __HAL_RCC_DMA1_CLK_DISABLE()
101225f4ba4SMatthias Ringwald #define I2S3_DMAx_STREAM                DMA1_Stream7
102225f4ba4SMatthias Ringwald #define I2S3_DMAx_CHANNEL               DMA_CHANNEL_0
103225f4ba4SMatthias Ringwald #define I2S3_DMAx_IRQ                   DMA1_Stream7_IRQn
104225f4ba4SMatthias Ringwald #define I2S3_DMAx_PERIPH_DATA_SIZE      DMA_PDATAALIGN_HALFWORD
105225f4ba4SMatthias Ringwald #define I2S3_DMAx_MEM_DATA_SIZE         DMA_MDATAALIGN_HALFWORD
106225f4ba4SMatthias Ringwald #define DMA_MAX_SZE                     0xFFFF
107225f4ba4SMatthias Ringwald 
108225f4ba4SMatthias Ringwald #define I2S3_IRQHandler                 DMA1_Stream7_IRQHandler
109225f4ba4SMatthias Ringwald 
110225f4ba4SMatthias Ringwald /* Select the interrupt preemption priority and subpriority for the DMA interrupt */
111225f4ba4SMatthias Ringwald #define AUDIO_OUT_IRQ_PREPRIO           0x0E   /* Select the preemption priority level(0 is the highest) */
112225f4ba4SMatthias Ringwald 
113225f4ba4SMatthias Ringwald /*------------------------------------------------------------------------------
114225f4ba4SMatthias Ringwald                           AUDIO IN CONFIGURATION
115225f4ba4SMatthias Ringwald ------------------------------------------------------------------------------*/
116225f4ba4SMatthias Ringwald /* SPI Configuration defines */
117225f4ba4SMatthias Ringwald #define I2S2                            SPI2
118225f4ba4SMatthias Ringwald #define I2S2_CLK_ENABLE()               __HAL_RCC_SPI2_CLK_ENABLE()
119225f4ba4SMatthias Ringwald #define I2S2_CLK_DISABLE()              __HAL_RCC_SPI2_CLK_DISABLE()
120225f4ba4SMatthias Ringwald #define I2S2_SCK_PIN                    GPIO_PIN_10
121225f4ba4SMatthias Ringwald #define I2S2_SCK_GPIO_PORT              GPIOB
122225f4ba4SMatthias Ringwald #define I2S2_SCK_GPIO_CLK_ENABLE()      __HAL_RCC_GPIOB_CLK_ENABLE()
123225f4ba4SMatthias Ringwald #define I2S2_SCK_AF                     GPIO_AF5_SPI2
124225f4ba4SMatthias Ringwald 
125225f4ba4SMatthias Ringwald #define I2S2_MOSI_PIN                   GPIO_PIN_3
126225f4ba4SMatthias Ringwald #define I2S2_MOSI_GPIO_PORT             GPIOC
127225f4ba4SMatthias Ringwald #define I2S2_MOSI_GPIO_CLK_ENABLE()     __HAL_RCC_GPIOC_CLK_ENABLE()
128225f4ba4SMatthias Ringwald #define I2S2_MOSI_AF                    GPIO_AF5_SPI2
129225f4ba4SMatthias Ringwald 
130225f4ba4SMatthias Ringwald /* I2S DMA Stream Rx definitions */
131225f4ba4SMatthias Ringwald #define I2S2_DMAx_CLK_ENABLE()          __HAL_RCC_DMA1_CLK_ENABLE()
132225f4ba4SMatthias Ringwald #define I2S2_DMAx_CLK_DISABLE()         __HAL_RCC_DMA1_CLK_DISABLE()
133225f4ba4SMatthias Ringwald #define I2S2_DMAx_STREAM                DMA1_Stream3
134225f4ba4SMatthias Ringwald #define I2S2_DMAx_CHANNEL               DMA_CHANNEL_0
135225f4ba4SMatthias Ringwald #define I2S2_DMAx_IRQ                   DMA1_Stream3_IRQn
136225f4ba4SMatthias Ringwald #define I2S2_DMAx_PERIPH_DATA_SIZE      DMA_PDATAALIGN_HALFWORD
137225f4ba4SMatthias Ringwald #define I2S2_DMAx_MEM_DATA_SIZE         DMA_MDATAALIGN_HALFWORD
138225f4ba4SMatthias Ringwald 
139225f4ba4SMatthias Ringwald #define I2S2_IRQHandler                 DMA1_Stream3_IRQHandler
140225f4ba4SMatthias Ringwald 
141225f4ba4SMatthias Ringwald /* Select the interrupt preemption priority and subpriority for the IT/DMA interrupt */
142225f4ba4SMatthias Ringwald #define AUDIO_IN_IRQ_PREPRIO            0x0F   /* Select the preemption priority level(0 is the highest) */
143225f4ba4SMatthias Ringwald 
144225f4ba4SMatthias Ringwald /*------------------------------------------------------------------------------
145225f4ba4SMatthias Ringwald              CONFIGURATION: Audio Driver Configuration parameters
146225f4ba4SMatthias Ringwald ------------------------------------------------------------------------------*/
147225f4ba4SMatthias Ringwald 
148225f4ba4SMatthias Ringwald #define AUDIODATA_SIZE                  2   /* 16-bits audio data size */
149225f4ba4SMatthias Ringwald 
150225f4ba4SMatthias Ringwald /* Audio status definition */
151225f4ba4SMatthias Ringwald #define AUDIO_OK                        0
152225f4ba4SMatthias Ringwald #define AUDIO_ERROR                     1
153225f4ba4SMatthias Ringwald #define AUDIO_TIMEOUT                   2
154225f4ba4SMatthias Ringwald 
155225f4ba4SMatthias Ringwald /* AudioFreq * DataSize (2 bytes) * NumChannels (Stereo: 2) */
156225f4ba4SMatthias Ringwald #define DEFAULT_AUDIO_IN_FREQ                 I2S_AUDIOFREQ_16K
157225f4ba4SMatthias Ringwald #define DEFAULT_AUDIO_IN_BIT_RESOLUTION       16
158225f4ba4SMatthias Ringwald #define DEFAULT_AUDIO_IN_CHANNEL_NBR          1 /* Mono = 1, Stereo = 2 */
159225f4ba4SMatthias Ringwald #define DEFAULT_AUDIO_IN_VOLUME               64
160225f4ba4SMatthias Ringwald 
161225f4ba4SMatthias Ringwald /* PDM buffer input size */
162225f4ba4SMatthias Ringwald #define INTERNAL_BUFF_SIZE                    128*DEFAULT_AUDIO_IN_FREQ/16000*DEFAULT_AUDIO_IN_CHANNEL_NBR
163225f4ba4SMatthias Ringwald /* PCM buffer output size */
164225f4ba4SMatthias Ringwald #define PCM_OUT_SIZE                          DEFAULT_AUDIO_IN_FREQ/1000
165225f4ba4SMatthias Ringwald #define CHANNEL_DEMUX_MASK                    0x55
166225f4ba4SMatthias Ringwald 
167225f4ba4SMatthias Ringwald /*------------------------------------------------------------------------------
168225f4ba4SMatthias Ringwald                     OPTIONAL Configuration defines parameters
169225f4ba4SMatthias Ringwald ------------------------------------------------------------------------------*/
170225f4ba4SMatthias Ringwald 
171225f4ba4SMatthias Ringwald /**
172225f4ba4SMatthias Ringwald   * @}
173225f4ba4SMatthias Ringwald   */
174225f4ba4SMatthias Ringwald 
175225f4ba4SMatthias Ringwald /** @defgroup STM32F4_DISCOVERY_AUDIO_Exported_Variables STM32F4 DISCOVERY AUDIO Exported Variables
176225f4ba4SMatthias Ringwald   * @{
177225f4ba4SMatthias Ringwald   */
178225f4ba4SMatthias Ringwald extern __IO uint16_t AudioInVolume;
179225f4ba4SMatthias Ringwald /**
180225f4ba4SMatthias Ringwald   * @}
181225f4ba4SMatthias Ringwald   */
182225f4ba4SMatthias Ringwald 
183225f4ba4SMatthias Ringwald /** @defgroup STM32F4_DISCOVERY_AUDIO_Exported_Macros STM32F4 DISCOVERY AUDIO Exported Macros
184225f4ba4SMatthias Ringwald   * @{
185225f4ba4SMatthias Ringwald   */
186225f4ba4SMatthias Ringwald #define DMA_MAX(_X_)                (((_X_) <= DMA_MAX_SZE)? (_X_):DMA_MAX_SZE)
187225f4ba4SMatthias Ringwald /**
188225f4ba4SMatthias Ringwald   * @}
189225f4ba4SMatthias Ringwald   */
190225f4ba4SMatthias Ringwald 
191225f4ba4SMatthias Ringwald /** @defgroup STM32F4_DISCOVERY_AUDIO_OUT_Exported_Functions  STM32F4 DISCOVERY AUDIO OUT Exported Functions
192225f4ba4SMatthias Ringwald   * @{
193225f4ba4SMatthias Ringwald   */
194225f4ba4SMatthias Ringwald uint8_t BSP_AUDIO_OUT_Init(uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq);
195225f4ba4SMatthias Ringwald uint8_t BSP_AUDIO_OUT_Play(uint16_t* pBuffer, uint32_t Size);
196225f4ba4SMatthias Ringwald void    BSP_AUDIO_OUT_ChangeBuffer(uint16_t *pData, uint16_t Size);
197225f4ba4SMatthias Ringwald uint8_t BSP_AUDIO_OUT_Pause(void);
198225f4ba4SMatthias Ringwald uint8_t BSP_AUDIO_OUT_Resume(void);
199225f4ba4SMatthias Ringwald uint8_t BSP_AUDIO_OUT_Stop(uint32_t Option);
200225f4ba4SMatthias Ringwald uint8_t BSP_AUDIO_OUT_SetVolume(uint8_t Volume);
201225f4ba4SMatthias Ringwald void    BSP_AUDIO_OUT_SetFrequency(uint32_t AudioFreq);
202*e0a94143SDirk Helbig uint32_t BSP_AUDIO_OUT_GetFrequency();
203225f4ba4SMatthias Ringwald uint8_t BSP_AUDIO_OUT_SetMute(uint32_t Cmd);
204225f4ba4SMatthias Ringwald uint8_t BSP_AUDIO_OUT_SetOutputMode(uint8_t Output);
205225f4ba4SMatthias Ringwald 
206225f4ba4SMatthias Ringwald /* User Callbacks: user has to implement these functions in his code if they are needed. */
207225f4ba4SMatthias Ringwald /* This function is called when the requested data has been completely transferred. */
208225f4ba4SMatthias Ringwald void    BSP_AUDIO_OUT_TransferComplete_CallBack(void);
209225f4ba4SMatthias Ringwald 
210225f4ba4SMatthias Ringwald /* This function is called when half of the requested buffer has been transferred. */
211225f4ba4SMatthias Ringwald void    BSP_AUDIO_OUT_HalfTransfer_CallBack(void);
212225f4ba4SMatthias Ringwald 
213225f4ba4SMatthias Ringwald /* This function is called when an Interrupt due to transfer error on or peripheral
214225f4ba4SMatthias Ringwald    error occurs. */
215225f4ba4SMatthias Ringwald void    BSP_AUDIO_OUT_Error_CallBack(void);
216225f4ba4SMatthias Ringwald 
217225f4ba4SMatthias Ringwald /* These function can be modified in case the current settings (e.g. DMA stream)
218225f4ba4SMatthias Ringwald    need to be changed for specific application needs */
219225f4ba4SMatthias Ringwald void  BSP_AUDIO_OUT_ClockConfig(I2S_HandleTypeDef *hi2s, uint32_t AudioFreq, void *Params);
220225f4ba4SMatthias Ringwald void  BSP_AUDIO_OUT_MspInit(I2S_HandleTypeDef *hi2s, void *Params);
221225f4ba4SMatthias Ringwald void  BSP_AUDIO_OUT_MspDeInit(I2S_HandleTypeDef *hi2s, void *Params);
222225f4ba4SMatthias Ringwald 
223225f4ba4SMatthias Ringwald /**
224225f4ba4SMatthias Ringwald   * @}
225225f4ba4SMatthias Ringwald   */
226225f4ba4SMatthias Ringwald 
227225f4ba4SMatthias Ringwald /** @defgroup STM32F4_DISCOVERY_AUDIO_IN_Exported_Functions STM32F4 DISCOVERY AUDIO IN Exported Functions
228225f4ba4SMatthias Ringwald   * @{
229225f4ba4SMatthias Ringwald   */
230225f4ba4SMatthias Ringwald uint8_t BSP_AUDIO_IN_Init(uint32_t AudioFreq, uint32_t BitRes, uint32_t ChnlNbr);
231225f4ba4SMatthias Ringwald uint8_t BSP_AUDIO_IN_Record(uint16_t *pData, uint32_t Size);
232225f4ba4SMatthias Ringwald uint8_t BSP_AUDIO_IN_Stop(void);
233225f4ba4SMatthias Ringwald uint8_t BSP_AUDIO_IN_Pause(void);
234225f4ba4SMatthias Ringwald uint8_t BSP_AUDIO_IN_Resume(void);
235225f4ba4SMatthias Ringwald uint8_t BSP_AUDIO_IN_SetVolume(uint8_t Volume);
236225f4ba4SMatthias Ringwald uint8_t BSP_AUDIO_IN_PDMToPCM(uint16_t *PDMBuf, uint16_t *PCMBuf);
237225f4ba4SMatthias Ringwald /* User Callbacks: user has to implement these functions in his code if they are needed. */
238225f4ba4SMatthias Ringwald /* This function should be implemented by the user application.
239225f4ba4SMatthias Ringwald    It is called into this driver when the current buffer is filled to prepare the next
240225f4ba4SMatthias Ringwald    buffer pointer and its size. */
241225f4ba4SMatthias Ringwald void    BSP_AUDIO_IN_TransferComplete_CallBack(void);
242225f4ba4SMatthias Ringwald void    BSP_AUDIO_IN_HalfTransfer_CallBack(void);
243225f4ba4SMatthias Ringwald 
244225f4ba4SMatthias Ringwald /* This function is called when an Interrupt due to transfer error on or peripheral
245225f4ba4SMatthias Ringwald    error occurs. */
246225f4ba4SMatthias Ringwald void    BSP_AUDIO_IN_Error_Callback(void);
247225f4ba4SMatthias Ringwald 
248225f4ba4SMatthias Ringwald /* These function can be modified in case the current settings (e.g. DMA stream)
249225f4ba4SMatthias Ringwald    need to be changed for specific application needs */
250225f4ba4SMatthias Ringwald void  BSP_AUDIO_IN_ClockConfig(I2S_HandleTypeDef *hi2s, uint32_t AudioFreq, void *Params);
251225f4ba4SMatthias Ringwald void  BSP_AUDIO_IN_MspInit(I2S_HandleTypeDef *hi2s, void *Params);
252225f4ba4SMatthias Ringwald void  BSP_AUDIO_IN_MspDeInit(I2S_HandleTypeDef *hi2s, void *Params);
253225f4ba4SMatthias Ringwald 
254225f4ba4SMatthias Ringwald /**
255225f4ba4SMatthias Ringwald   * @}
256225f4ba4SMatthias Ringwald   */
257225f4ba4SMatthias Ringwald 
258225f4ba4SMatthias Ringwald /**
259225f4ba4SMatthias Ringwald   * @}
260225f4ba4SMatthias Ringwald   */
261225f4ba4SMatthias Ringwald 
262225f4ba4SMatthias Ringwald /**
263225f4ba4SMatthias Ringwald   * @}
264225f4ba4SMatthias Ringwald   */
265225f4ba4SMatthias Ringwald 
266225f4ba4SMatthias Ringwald /**
267225f4ba4SMatthias Ringwald   * @}
268225f4ba4SMatthias Ringwald   */
269225f4ba4SMatthias Ringwald 
270225f4ba4SMatthias Ringwald #ifdef __cplusplus
271225f4ba4SMatthias Ringwald }
272225f4ba4SMatthias Ringwald #endif
273225f4ba4SMatthias Ringwald 
274225f4ba4SMatthias Ringwald #endif /* __STM32F4_DISCOVERY_AUDIO_H */
275225f4ba4SMatthias Ringwald 
276225f4ba4SMatthias Ringwald /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
277