Build libraries for stm32l1xx and stm32f10x
[fw/stlink] / example / libs_stm / inc / stm32f10x / stm32f10x_spi.h
1 /**\r
2   ******************************************************************************\r
3   * @file    stm32f10x_spi.h\r
4   * @author  MCD Application Team\r
5   * @version V3.3.0\r
6   * @date    04/16/2010\r
7   * @brief   This file contains all the functions prototypes for the SPI firmware \r
8   *          library.\r
9   ******************************************************************************\r
10   * @copy\r
11   *\r
12   * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS\r
13   * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE\r
14   * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY\r
15   * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING\r
16   * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE\r
17   * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.\r
18   *\r
19   * <h2><center>&copy; COPYRIGHT 2010 STMicroelectronics</center></h2>\r
20   */ \r
21 \r
22 /* Define to prevent recursive inclusion -------------------------------------*/\r
23 #ifndef __STM32F10x_SPI_H\r
24 #define __STM32F10x_SPI_H\r
25 \r
26 #ifdef __cplusplus\r
27  extern "C" {\r
28 #endif\r
29 \r
30 /* Includes ------------------------------------------------------------------*/\r
31 #include "stm32f10x.h"\r
32 \r
33 /** @addtogroup STM32F10x_StdPeriph_Driver\r
34   * @{\r
35   */\r
36 \r
37 /** @addtogroup SPI\r
38   * @{\r
39   */ \r
40 \r
41 /** @defgroup SPI_Exported_Types\r
42   * @{\r
43   */\r
44 \r
45 /** \r
46   * @brief  SPI Init structure definition  \r
47   */\r
48 \r
49 typedef struct\r
50 {\r
51   uint16_t SPI_Direction;           /*!< Specifies the SPI unidirectional or bidirectional data mode.\r
52                                          This parameter can be a value of @ref SPI_data_direction */\r
53 \r
54   uint16_t SPI_Mode;                /*!< Specifies the SPI operating mode.\r
55                                          This parameter can be a value of @ref SPI_mode */\r
56 \r
57   uint16_t SPI_DataSize;            /*!< Specifies the SPI data size.\r
58                                          This parameter can be a value of @ref SPI_data_size */\r
59 \r
60   uint16_t SPI_CPOL;                /*!< Specifies the serial clock steady state.\r
61                                          This parameter can be a value of @ref SPI_Clock_Polarity */\r
62 \r
63   uint16_t SPI_CPHA;                /*!< Specifies the clock active edge for the bit capture.\r
64                                          This parameter can be a value of @ref SPI_Clock_Phase */\r
65 \r
66   uint16_t SPI_NSS;                 /*!< Specifies whether the NSS signal is managed by\r
67                                          hardware (NSS pin) or by software using the SSI bit.\r
68                                          This parameter can be a value of @ref SPI_Slave_Select_management */\r
69  \r
70   uint16_t SPI_BaudRatePrescaler;   /*!< Specifies the Baud Rate prescaler value which will be\r
71                                          used to configure the transmit and receive SCK clock.\r
72                                          This parameter can be a value of @ref SPI_BaudRate_Prescaler.\r
73                                          @note The communication clock is derived from the master\r
74                                                clock. The slave clock does not need to be set. */\r
75 \r
76   uint16_t SPI_FirstBit;            /*!< Specifies whether data transfers start from MSB or LSB bit.\r
77                                          This parameter can be a value of @ref SPI_MSB_LSB_transmission */\r
78 \r
79   uint16_t SPI_CRCPolynomial;       /*!< Specifies the polynomial used for the CRC calculation. */\r
80 }SPI_InitTypeDef;\r
81 \r
82 /** \r
83   * @brief  I2S Init structure definition  \r
84   */\r
85 \r
86 typedef struct\r
87 {\r
88 \r
89   uint16_t I2S_Mode;         /*!< Specifies the I2S operating mode.\r
90                                   This parameter can be a value of @ref I2S_Mode */\r
91 \r
92   uint16_t I2S_Standard;     /*!< Specifies the standard used for the I2S communication.\r
93                                   This parameter can be a value of @ref I2S_Standard */\r
94 \r
95   uint16_t I2S_DataFormat;   /*!< Specifies the data format for the I2S communication.\r
96                                   This parameter can be a value of @ref I2S_Data_Format */\r
97 \r
98   uint16_t I2S_MCLKOutput;   /*!< Specifies whether the I2S MCLK output is enabled or not.\r
99                                   This parameter can be a value of @ref I2S_MCLK_Output */\r
100 \r
101   uint32_t I2S_AudioFreq;    /*!< Specifies the frequency selected for the I2S communication.\r
102                                   This parameter can be a value of @ref I2S_Audio_Frequency */\r
103 \r
104   uint16_t I2S_CPOL;         /*!< Specifies the idle state of the I2S clock.\r
105                                   This parameter can be a value of @ref I2S_Clock_Polarity */\r
106 }I2S_InitTypeDef;\r
107 \r
108 /**\r
109   * @}\r
110   */\r
111 \r
112 /** @defgroup SPI_Exported_Constants\r
113   * @{\r
114   */\r
115 \r
116 #define IS_SPI_ALL_PERIPH(PERIPH) (((PERIPH) == SPI1) || \\r
117                                    ((PERIPH) == SPI2) || \\r
118                                    ((PERIPH) == SPI3))\r
119 \r
120 #define IS_SPI_23_PERIPH(PERIPH) (((PERIPH) == SPI2) || \\r
121                                   ((PERIPH) == SPI3))\r
122 \r
123 /** @defgroup SPI_data_direction \r
124   * @{\r
125   */\r
126   \r
127 #define SPI_Direction_2Lines_FullDuplex ((uint16_t)0x0000)\r
128 #define SPI_Direction_2Lines_RxOnly     ((uint16_t)0x0400)\r
129 #define SPI_Direction_1Line_Rx          ((uint16_t)0x8000)\r
130 #define SPI_Direction_1Line_Tx          ((uint16_t)0xC000)\r
131 #define IS_SPI_DIRECTION_MODE(MODE) (((MODE) == SPI_Direction_2Lines_FullDuplex) || \\r
132                                      ((MODE) == SPI_Direction_2Lines_RxOnly) || \\r
133                                      ((MODE) == SPI_Direction_1Line_Rx) || \\r
134                                      ((MODE) == SPI_Direction_1Line_Tx))\r
135 /**\r
136   * @}\r
137   */\r
138 \r
139 /** @defgroup SPI_mode \r
140   * @{\r
141   */\r
142 \r
143 #define SPI_Mode_Master                 ((uint16_t)0x0104)\r
144 #define SPI_Mode_Slave                  ((uint16_t)0x0000)\r
145 #define IS_SPI_MODE(MODE) (((MODE) == SPI_Mode_Master) || \\r
146                            ((MODE) == SPI_Mode_Slave))\r
147 /**\r
148   * @}\r
149   */\r
150 \r
151 /** @defgroup SPI_data_size \r
152   * @{\r
153   */\r
154 \r
155 #define SPI_DataSize_16b                ((uint16_t)0x0800)\r
156 #define SPI_DataSize_8b                 ((uint16_t)0x0000)\r
157 #define IS_SPI_DATASIZE(DATASIZE) (((DATASIZE) == SPI_DataSize_16b) || \\r
158                                    ((DATASIZE) == SPI_DataSize_8b))\r
159 /**\r
160   * @}\r
161   */ \r
162 \r
163 /** @defgroup SPI_Clock_Polarity \r
164   * @{\r
165   */\r
166 \r
167 #define SPI_CPOL_Low                    ((uint16_t)0x0000)\r
168 #define SPI_CPOL_High                   ((uint16_t)0x0002)\r
169 #define IS_SPI_CPOL(CPOL) (((CPOL) == SPI_CPOL_Low) || \\r
170                            ((CPOL) == SPI_CPOL_High))\r
171 /**\r
172   * @}\r
173   */\r
174 \r
175 /** @defgroup SPI_Clock_Phase \r
176   * @{\r
177   */\r
178 \r
179 #define SPI_CPHA_1Edge                  ((uint16_t)0x0000)\r
180 #define SPI_CPHA_2Edge                  ((uint16_t)0x0001)\r
181 #define IS_SPI_CPHA(CPHA) (((CPHA) == SPI_CPHA_1Edge) || \\r
182                            ((CPHA) == SPI_CPHA_2Edge))\r
183 /**\r
184   * @}\r
185   */\r
186 \r
187 /** @defgroup SPI_Slave_Select_management \r
188   * @{\r
189   */\r
190 \r
191 #define SPI_NSS_Soft                    ((uint16_t)0x0200)\r
192 #define SPI_NSS_Hard                    ((uint16_t)0x0000)\r
193 #define IS_SPI_NSS(NSS) (((NSS) == SPI_NSS_Soft) || \\r
194                          ((NSS) == SPI_NSS_Hard))\r
195 /**\r
196   * @}\r
197   */ \r
198 \r
199 /** @defgroup SPI_BaudRate_Prescaler \r
200   * @{\r
201   */\r
202 \r
203 #define SPI_BaudRatePrescaler_2         ((uint16_t)0x0000)\r
204 #define SPI_BaudRatePrescaler_4         ((uint16_t)0x0008)\r
205 #define SPI_BaudRatePrescaler_8         ((uint16_t)0x0010)\r
206 #define SPI_BaudRatePrescaler_16        ((uint16_t)0x0018)\r
207 #define SPI_BaudRatePrescaler_32        ((uint16_t)0x0020)\r
208 #define SPI_BaudRatePrescaler_64        ((uint16_t)0x0028)\r
209 #define SPI_BaudRatePrescaler_128       ((uint16_t)0x0030)\r
210 #define SPI_BaudRatePrescaler_256       ((uint16_t)0x0038)\r
211 #define IS_SPI_BAUDRATE_PRESCALER(PRESCALER) (((PRESCALER) == SPI_BaudRatePrescaler_2) || \\r
212                                               ((PRESCALER) == SPI_BaudRatePrescaler_4) || \\r
213                                               ((PRESCALER) == SPI_BaudRatePrescaler_8) || \\r
214                                               ((PRESCALER) == SPI_BaudRatePrescaler_16) || \\r
215                                               ((PRESCALER) == SPI_BaudRatePrescaler_32) || \\r
216                                               ((PRESCALER) == SPI_BaudRatePrescaler_64) || \\r
217                                               ((PRESCALER) == SPI_BaudRatePrescaler_128) || \\r
218                                               ((PRESCALER) == SPI_BaudRatePrescaler_256))\r
219 /**\r
220   * @}\r
221   */ \r
222 \r
223 /** @defgroup SPI_MSB_LSB_transmission \r
224   * @{\r
225   */\r
226 \r
227 #define SPI_FirstBit_MSB                ((uint16_t)0x0000)\r
228 #define SPI_FirstBit_LSB                ((uint16_t)0x0080)\r
229 #define IS_SPI_FIRST_BIT(BIT) (((BIT) == SPI_FirstBit_MSB) || \\r
230                                ((BIT) == SPI_FirstBit_LSB))\r
231 /**\r
232   * @}\r
233   */\r
234 \r
235 /** @defgroup I2S_Mode \r
236   * @{\r
237   */\r
238 \r
239 #define I2S_Mode_SlaveTx                ((uint16_t)0x0000)\r
240 #define I2S_Mode_SlaveRx                ((uint16_t)0x0100)\r
241 #define I2S_Mode_MasterTx               ((uint16_t)0x0200)\r
242 #define I2S_Mode_MasterRx               ((uint16_t)0x0300)\r
243 #define IS_I2S_MODE(MODE) (((MODE) == I2S_Mode_SlaveTx) || \\r
244                            ((MODE) == I2S_Mode_SlaveRx) || \\r
245                            ((MODE) == I2S_Mode_MasterTx) || \\r
246                            ((MODE) == I2S_Mode_MasterRx) )\r
247 /**\r
248   * @}\r
249   */\r
250 \r
251 /** @defgroup I2S_Standard \r
252   * @{\r
253   */\r
254 \r
255 #define I2S_Standard_Phillips           ((uint16_t)0x0000)\r
256 #define I2S_Standard_MSB                ((uint16_t)0x0010)\r
257 #define I2S_Standard_LSB                ((uint16_t)0x0020)\r
258 #define I2S_Standard_PCMShort           ((uint16_t)0x0030)\r
259 #define I2S_Standard_PCMLong            ((uint16_t)0x00B0)\r
260 #define IS_I2S_STANDARD(STANDARD) (((STANDARD) == I2S_Standard_Phillips) || \\r
261                                    ((STANDARD) == I2S_Standard_MSB) || \\r
262                                    ((STANDARD) == I2S_Standard_LSB) || \\r
263                                    ((STANDARD) == I2S_Standard_PCMShort) || \\r
264                                    ((STANDARD) == I2S_Standard_PCMLong))\r
265 /**\r
266   * @}\r
267   */\r
268 \r
269 /** @defgroup I2S_Data_Format \r
270   * @{\r
271   */\r
272 \r
273 #define I2S_DataFormat_16b              ((uint16_t)0x0000)\r
274 #define I2S_DataFormat_16bextended      ((uint16_t)0x0001)\r
275 #define I2S_DataFormat_24b              ((uint16_t)0x0003)\r
276 #define I2S_DataFormat_32b              ((uint16_t)0x0005)\r
277 #define IS_I2S_DATA_FORMAT(FORMAT) (((FORMAT) == I2S_DataFormat_16b) || \\r
278                                     ((FORMAT) == I2S_DataFormat_16bextended) || \\r
279                                     ((FORMAT) == I2S_DataFormat_24b) || \\r
280                                     ((FORMAT) == I2S_DataFormat_32b))\r
281 /**\r
282   * @}\r
283   */ \r
284 \r
285 /** @defgroup I2S_MCLK_Output \r
286   * @{\r
287   */\r
288 \r
289 #define I2S_MCLKOutput_Enable           ((uint16_t)0x0200)\r
290 #define I2S_MCLKOutput_Disable          ((uint16_t)0x0000)\r
291 #define IS_I2S_MCLK_OUTPUT(OUTPUT) (((OUTPUT) == I2S_MCLKOutput_Enable) || \\r
292                                     ((OUTPUT) == I2S_MCLKOutput_Disable))\r
293 /**\r
294   * @}\r
295   */\r
296 \r
297 /** @defgroup I2S_Audio_Frequency \r
298   * @{\r
299   */\r
300 \r
301 #define I2S_AudioFreq_96k                ((uint32_t)96000)\r
302 #define I2S_AudioFreq_48k                ((uint32_t)48000)\r
303 #define I2S_AudioFreq_44k                ((uint32_t)44100)\r
304 #define I2S_AudioFreq_32k                ((uint32_t)32000)\r
305 #define I2S_AudioFreq_22k                ((uint32_t)22050)\r
306 #define I2S_AudioFreq_16k                ((uint32_t)16000)\r
307 #define I2S_AudioFreq_11k                ((uint32_t)11025)\r
308 #define I2S_AudioFreq_8k                 ((uint32_t)8000)\r
309 #define I2S_AudioFreq_Default            ((uint32_t)2)\r
310 #define IS_I2S_AUDIO_FREQ(FREQ) (((FREQ) == I2S_AudioFreq_96k) || \\r
311                                  ((FREQ) == I2S_AudioFreq_48k) || \\r
312                                  ((FREQ) == I2S_AudioFreq_44k) || \\r
313                                  ((FREQ) == I2S_AudioFreq_32k) || \\r
314                                  ((FREQ) == I2S_AudioFreq_22k) || \\r
315                                  ((FREQ) == I2S_AudioFreq_16k) || \\r
316                                  ((FREQ) == I2S_AudioFreq_11k) || \\r
317                                  ((FREQ) == I2S_AudioFreq_8k)  || \\r
318                                  ((FREQ) == I2S_AudioFreq_Default))\r
319 /**\r
320   * @}\r
321   */ \r
322 \r
323 /** @defgroup I2S_Clock_Polarity \r
324   * @{\r
325   */\r
326 \r
327 #define I2S_CPOL_Low                    ((uint16_t)0x0000)\r
328 #define I2S_CPOL_High                   ((uint16_t)0x0008)\r
329 #define IS_I2S_CPOL(CPOL) (((CPOL) == I2S_CPOL_Low) || \\r
330                            ((CPOL) == I2S_CPOL_High))\r
331 /**\r
332   * @}\r
333   */\r
334 \r
335 /** @defgroup SPI_I2S_DMA_transfer_requests \r
336   * @{\r
337   */\r
338 \r
339 #define SPI_I2S_DMAReq_Tx               ((uint16_t)0x0002)\r
340 #define SPI_I2S_DMAReq_Rx               ((uint16_t)0x0001)\r
341 #define IS_SPI_I2S_DMAREQ(DMAREQ) ((((DMAREQ) & (uint16_t)0xFFFC) == 0x00) && ((DMAREQ) != 0x00))\r
342 /**\r
343   * @}\r
344   */\r
345 \r
346 /** @defgroup SPI_NSS_internal_software_mangement \r
347   * @{\r
348   */\r
349 \r
350 #define SPI_NSSInternalSoft_Set         ((uint16_t)0x0100)\r
351 #define SPI_NSSInternalSoft_Reset       ((uint16_t)0xFEFF)\r
352 #define IS_SPI_NSS_INTERNAL(INTERNAL) (((INTERNAL) == SPI_NSSInternalSoft_Set) || \\r
353                                        ((INTERNAL) == SPI_NSSInternalSoft_Reset))\r
354 /**\r
355   * @}\r
356   */\r
357 \r
358 /** @defgroup SPI_CRC_Transmit_Receive \r
359   * @{\r
360   */\r
361 \r
362 #define SPI_CRC_Tx                      ((uint8_t)0x00)\r
363 #define SPI_CRC_Rx                      ((uint8_t)0x01)\r
364 #define IS_SPI_CRC(CRC) (((CRC) == SPI_CRC_Tx) || ((CRC) == SPI_CRC_Rx))\r
365 /**\r
366   * @}\r
367   */\r
368 \r
369 /** @defgroup SPI_direction_transmit_receive \r
370   * @{\r
371   */\r
372 \r
373 #define SPI_Direction_Rx                ((uint16_t)0xBFFF)\r
374 #define SPI_Direction_Tx                ((uint16_t)0x4000)\r
375 #define IS_SPI_DIRECTION(DIRECTION) (((DIRECTION) == SPI_Direction_Rx) || \\r
376                                      ((DIRECTION) == SPI_Direction_Tx))\r
377 /**\r
378   * @}\r
379   */\r
380 \r
381 /** @defgroup SPI_I2S_interrupts_definition \r
382   * @{\r
383   */\r
384 \r
385 #define SPI_I2S_IT_TXE                  ((uint8_t)0x71)\r
386 #define SPI_I2S_IT_RXNE                 ((uint8_t)0x60)\r
387 #define SPI_I2S_IT_ERR                  ((uint8_t)0x50)\r
388 #define IS_SPI_I2S_CONFIG_IT(IT) (((IT) == SPI_I2S_IT_TXE) || \\r
389                                  ((IT) == SPI_I2S_IT_RXNE) || \\r
390                                  ((IT) == SPI_I2S_IT_ERR))\r
391 #define SPI_I2S_IT_OVR                  ((uint8_t)0x56)\r
392 #define SPI_IT_MODF                     ((uint8_t)0x55)\r
393 #define SPI_IT_CRCERR                   ((uint8_t)0x54)\r
394 #define I2S_IT_UDR                      ((uint8_t)0x53)\r
395 #define IS_SPI_I2S_CLEAR_IT(IT) (((IT) == SPI_IT_CRCERR))\r
396 #define IS_SPI_I2S_GET_IT(IT) (((IT) == SPI_I2S_IT_RXNE) || ((IT) == SPI_I2S_IT_TXE) || \\r
397                                ((IT) == I2S_IT_UDR) || ((IT) == SPI_IT_CRCERR) || \\r
398                                ((IT) == SPI_IT_MODF) || ((IT) == SPI_I2S_IT_OVR))\r
399 /**\r
400   * @}\r
401   */\r
402 \r
403 /** @defgroup SPI_I2S_flags_definition \r
404   * @{\r
405   */\r
406 \r
407 #define SPI_I2S_FLAG_RXNE               ((uint16_t)0x0001)\r
408 #define SPI_I2S_FLAG_TXE                ((uint16_t)0x0002)\r
409 #define I2S_FLAG_CHSIDE                 ((uint16_t)0x0004)\r
410 #define I2S_FLAG_UDR                    ((uint16_t)0x0008)\r
411 #define SPI_FLAG_CRCERR                 ((uint16_t)0x0010)\r
412 #define SPI_FLAG_MODF                   ((uint16_t)0x0020)\r
413 #define SPI_I2S_FLAG_OVR                ((uint16_t)0x0040)\r
414 #define SPI_I2S_FLAG_BSY                ((uint16_t)0x0080)\r
415 #define IS_SPI_I2S_CLEAR_FLAG(FLAG) (((FLAG) == SPI_FLAG_CRCERR))\r
416 #define IS_SPI_I2S_GET_FLAG(FLAG) (((FLAG) == SPI_I2S_FLAG_BSY) || ((FLAG) == SPI_I2S_FLAG_OVR) || \\r
417                                    ((FLAG) == SPI_FLAG_MODF) || ((FLAG) == SPI_FLAG_CRCERR) || \\r
418                                    ((FLAG) == I2S_FLAG_UDR) || ((FLAG) == I2S_FLAG_CHSIDE) || \\r
419                                    ((FLAG) == SPI_I2S_FLAG_TXE) || ((FLAG) == SPI_I2S_FLAG_RXNE))\r
420 /**\r
421   * @}\r
422   */\r
423 \r
424 /** @defgroup SPI_CRC_polynomial \r
425   * @{\r
426   */\r
427 \r
428 #define IS_SPI_CRC_POLYNOMIAL(POLYNOMIAL) ((POLYNOMIAL) >= 0x1)\r
429 /**\r
430   * @}\r
431   */\r
432 \r
433 /**\r
434   * @}\r
435   */\r
436 \r
437 /** @defgroup SPI_Exported_Macros\r
438   * @{\r
439   */\r
440 \r
441 /**\r
442   * @}\r
443   */\r
444 \r
445 /** @defgroup SPI_Exported_Functions\r
446   * @{\r
447   */\r
448 \r
449 void SPI_I2S_DeInit(SPI_TypeDef* SPIx);\r
450 void SPI_Init(SPI_TypeDef* SPIx, SPI_InitTypeDef* SPI_InitStruct);\r
451 void I2S_Init(SPI_TypeDef* SPIx, I2S_InitTypeDef* I2S_InitStruct);\r
452 void SPI_StructInit(SPI_InitTypeDef* SPI_InitStruct);\r
453 void I2S_StructInit(I2S_InitTypeDef* I2S_InitStruct);\r
454 void SPI_Cmd(SPI_TypeDef* SPIx, FunctionalState NewState);\r
455 void I2S_Cmd(SPI_TypeDef* SPIx, FunctionalState NewState);\r
456 void SPI_I2S_ITConfig(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT, FunctionalState NewState);\r
457 void SPI_I2S_DMACmd(SPI_TypeDef* SPIx, uint16_t SPI_I2S_DMAReq, FunctionalState NewState);\r
458 void SPI_I2S_SendData(SPI_TypeDef* SPIx, uint16_t Data);\r
459 uint16_t SPI_I2S_ReceiveData(SPI_TypeDef* SPIx);\r
460 void SPI_NSSInternalSoftwareConfig(SPI_TypeDef* SPIx, uint16_t SPI_NSSInternalSoft);\r
461 void SPI_SSOutputCmd(SPI_TypeDef* SPIx, FunctionalState NewState);\r
462 void SPI_DataSizeConfig(SPI_TypeDef* SPIx, uint16_t SPI_DataSize);\r
463 void SPI_TransmitCRC(SPI_TypeDef* SPIx);\r
464 void SPI_CalculateCRC(SPI_TypeDef* SPIx, FunctionalState NewState);\r
465 uint16_t SPI_GetCRC(SPI_TypeDef* SPIx, uint8_t SPI_CRC);\r
466 uint16_t SPI_GetCRCPolynomial(SPI_TypeDef* SPIx);\r
467 void SPI_BiDirectionalLineConfig(SPI_TypeDef* SPIx, uint16_t SPI_Direction);\r
468 FlagStatus SPI_I2S_GetFlagStatus(SPI_TypeDef* SPIx, uint16_t SPI_I2S_FLAG);\r
469 void SPI_I2S_ClearFlag(SPI_TypeDef* SPIx, uint16_t SPI_I2S_FLAG);\r
470 ITStatus SPI_I2S_GetITStatus(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT);\r
471 void SPI_I2S_ClearITPendingBit(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT);\r
472 \r
473 #ifdef __cplusplus\r
474 }\r
475 #endif\r
476 \r
477 #endif /*__STM32F10x_SPI_H */\r
478 /**\r
479   * @}\r
480   */\r
481 \r
482 /**\r
483   * @}\r
484   */\r
485 \r
486 /**\r
487   * @}\r
488   */\r
489 \r
490 /******************* (C) COPYRIGHT 2010 STMicroelectronics *****END OF FILE****/\r