QuakeGod
2023-02-01 47857ed32cb8737a25f26970b222e29727f1c93b
提交 | 用户 | age
bfc108 1 /**
Q 2   ******************************************************************************
3   * @file    stm32f0xx_hal_spi_ex.c
4   * @author  MCD Application Team
5   * @brief   Extended SPI HAL module driver.
6   *          This file provides firmware functions to manage the following
7   *          SPI peripheral extended functionalities :
8   *           + IO operation functions
9   *
10   ******************************************************************************
11   * @attention
12   *
13   * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
14   *
15   * Redistribution and use in source and binary forms, with or without modification,
16   * are permitted provided that the following conditions are met:
17   *   1. Redistributions of source code must retain the above copyright notice,
18   *      this list of conditions and the following disclaimer.
19   *   2. Redistributions in binary form must reproduce the above copyright notice,
20   *      this list of conditions and the following disclaimer in the documentation
21   *      and/or other materials provided with the distribution.
22   *   3. Neither the name of STMicroelectronics nor the names of its contributors
23   *      may be used to endorse or promote products derived from this software
24   *      without specific prior written permission.
25   *
26   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
27   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
29   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
30   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
31   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
32   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
33   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
34   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36   *
37   ******************************************************************************
38   */
39
40 /* Includes ------------------------------------------------------------------*/
41 #include "stm32f0xx_hal.h"
42
43 /** @addtogroup STM32F0xx_HAL_Driver
44   * @{
45   */
46
47 /** @defgroup SPIEx SPIEx
48   * @brief SPI Extended HAL module driver
49   * @{
50   */
51 #ifdef HAL_SPI_MODULE_ENABLED
52
53 /* Private typedef -----------------------------------------------------------*/
54 /* Private defines -----------------------------------------------------------*/
55 /** @defgroup SPIEx_Private_Constants SPIEx Private Constants
56   * @{
57   */
58 #define SPI_FIFO_SIZE       4
59 /**
60   * @}
61   */
62
63 /* Private macros ------------------------------------------------------------*/
64 /* Private variables ---------------------------------------------------------*/
65 /* Private function prototypes -----------------------------------------------*/
66 /* Exported functions ---------------------------------------------------------*/
67
68 /** @defgroup SPIEx_Exported_Functions SPIEx Exported Functions
69   * @{
70   */
71
72 /** @defgroup SPIEx_Exported_Functions_Group1 IO operation functions
73   *  @brief   Data transfers functions
74   *
75 @verbatim
76   ==============================================================================
77                       ##### IO operation functions #####
78  ===============================================================================
79  [..]
80     This subsection provides a set of extended functions to manage the SPI
81     data transfers.
82
83     (#) Rx data flush function:
84         (++) HAL_SPIEx_FlushRxFifo()
85
86 @endverbatim
87   * @{
88   */
89
90 /**
91   * @brief Flush the RX fifo.
92   * @param  hspi pointer to a SPI_HandleTypeDef structure that contains
93   *               the configuration information for the specified SPI module.
94   * @retval HAL status
95   */
96 HAL_StatusTypeDef HAL_SPIEx_FlushRxFifo(SPI_HandleTypeDef *hspi)
97 {
98   __IO uint32_t tmpreg;
99   uint8_t  count = 0U;
100   while ((hspi->Instance->SR & SPI_FLAG_FRLVL) !=  SPI_FRLVL_EMPTY)
101   {
102     count++;
103     tmpreg = hspi->Instance->DR;
104     UNUSED(tmpreg); /* To avoid GCC warning */
105     if (count == SPI_FIFO_SIZE)
106     {
107       return HAL_TIMEOUT;
108     }
109   }
110   return HAL_OK;
111 }
112
113 /**
114   * @}
115   */
116
117 /**
118   * @}
119   */
120
121 #endif /* HAL_SPI_MODULE_ENABLED */
122
123 /**
124   * @}
125   */
126
127 /**
128   * @}
129   */
130
131 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/