mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Committer:
mbed_official
Date:
Mon Sep 28 20:15:09 2015 +0100
Revision:
634:ac7d6880524d
Parent:
632:7687fb9c4f91
Synchronized with git revision 9b7d23d47153c298a6d24de9a415202705889d11

Full URL: https://github.com/mbedmicro/mbed/commit/9b7d23d47153c298a6d24de9a415202705889d11/

Revert "[NUCLEO_F303K8] add support of the STM32F303K8"

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 330:c80ac197fa6a 1 /**
mbed_official 330:c80ac197fa6a 2 ******************************************************************************
mbed_official 330:c80ac197fa6a 3 * @file stm32f3xx_hal_pcd.h
mbed_official 330:c80ac197fa6a 4 * @author MCD Application Team
mbed_official 634:ac7d6880524d 5 * @version V1.1.0
mbed_official 634:ac7d6880524d 6 * @date 12-Sept-2014
mbed_official 330:c80ac197fa6a 7 * @brief Header file of PCD HAL module.
mbed_official 330:c80ac197fa6a 8 ******************************************************************************
mbed_official 330:c80ac197fa6a 9 * @attention
mbed_official 330:c80ac197fa6a 10 *
mbed_official 634:ac7d6880524d 11 * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
mbed_official 330:c80ac197fa6a 12 *
mbed_official 330:c80ac197fa6a 13 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 330:c80ac197fa6a 14 * are permitted provided that the following conditions are met:
mbed_official 330:c80ac197fa6a 15 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 330:c80ac197fa6a 16 * this list of conditions and the following disclaimer.
mbed_official 330:c80ac197fa6a 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 330:c80ac197fa6a 18 * this list of conditions and the following disclaimer in the documentation
mbed_official 330:c80ac197fa6a 19 * and/or other materials provided with the distribution.
mbed_official 330:c80ac197fa6a 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 330:c80ac197fa6a 21 * may be used to endorse or promote products derived from this software
mbed_official 330:c80ac197fa6a 22 * without specific prior written permission.
mbed_official 330:c80ac197fa6a 23 *
mbed_official 330:c80ac197fa6a 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 330:c80ac197fa6a 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 330:c80ac197fa6a 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 330:c80ac197fa6a 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 330:c80ac197fa6a 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 330:c80ac197fa6a 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 330:c80ac197fa6a 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 330:c80ac197fa6a 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 330:c80ac197fa6a 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 330:c80ac197fa6a 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 330:c80ac197fa6a 34 *
mbed_official 330:c80ac197fa6a 35 ******************************************************************************
mbed_official 330:c80ac197fa6a 36 */
mbed_official 330:c80ac197fa6a 37
mbed_official 330:c80ac197fa6a 38 /* Define to prevent recursive inclusion -------------------------------------*/
mbed_official 330:c80ac197fa6a 39 #ifndef __STM32F3xx_HAL_PCD_H
mbed_official 330:c80ac197fa6a 40 #define __STM32F3xx_HAL_PCD_H
mbed_official 330:c80ac197fa6a 41
mbed_official 330:c80ac197fa6a 42 #ifdef __cplusplus
mbed_official 330:c80ac197fa6a 43 extern "C" {
mbed_official 330:c80ac197fa6a 44 #endif
mbed_official 330:c80ac197fa6a 45
mbed_official 330:c80ac197fa6a 46 #if defined(STM32F302xE) || defined(STM32F303xE) || \
mbed_official 330:c80ac197fa6a 47 defined(STM32F302xC) || defined(STM32F303xC) || \
mbed_official 330:c80ac197fa6a 48 defined(STM32F302x8) || \
mbed_official 330:c80ac197fa6a 49 defined(STM32F373xC)
mbed_official 330:c80ac197fa6a 50
mbed_official 330:c80ac197fa6a 51 /* Includes ------------------------------------------------------------------*/
mbed_official 330:c80ac197fa6a 52 #include "stm32f3xx_hal_def.h"
mbed_official 330:c80ac197fa6a 53
mbed_official 330:c80ac197fa6a 54 /** @addtogroup STM32F3xx_HAL_Driver
mbed_official 330:c80ac197fa6a 55 * @{
mbed_official 330:c80ac197fa6a 56 */
mbed_official 330:c80ac197fa6a 57
mbed_official 330:c80ac197fa6a 58 /** @addtogroup PCD
mbed_official 330:c80ac197fa6a 59 * @{
mbed_official 330:c80ac197fa6a 60 */
mbed_official 330:c80ac197fa6a 61
mbed_official 330:c80ac197fa6a 62 /* Exported types ------------------------------------------------------------*/
mbed_official 330:c80ac197fa6a 63 /** @defgroup PCD_Exported_Types PCD Exported Types
mbed_official 330:c80ac197fa6a 64 * @{
mbed_official 330:c80ac197fa6a 65 */
mbed_official 330:c80ac197fa6a 66
mbed_official 330:c80ac197fa6a 67 /**
mbed_official 330:c80ac197fa6a 68 * @brief PCD State structures definition
mbed_official 330:c80ac197fa6a 69 */
mbed_official 330:c80ac197fa6a 70 typedef enum
mbed_official 330:c80ac197fa6a 71 {
mbed_official 330:c80ac197fa6a 72 PCD_READY = 0x00,
mbed_official 330:c80ac197fa6a 73 PCD_ERROR = 0x01,
mbed_official 330:c80ac197fa6a 74 PCD_BUSY = 0x02,
mbed_official 330:c80ac197fa6a 75 PCD_TIMEOUT = 0x03
mbed_official 330:c80ac197fa6a 76 } PCD_StateTypeDef;
mbed_official 330:c80ac197fa6a 77
mbed_official 330:c80ac197fa6a 78 typedef enum
mbed_official 330:c80ac197fa6a 79 {
mbed_official 330:c80ac197fa6a 80 /* double buffered endpoint direction */
mbed_official 330:c80ac197fa6a 81 PCD_EP_DBUF_OUT,
mbed_official 330:c80ac197fa6a 82 PCD_EP_DBUF_IN,
mbed_official 330:c80ac197fa6a 83 PCD_EP_DBUF_ERR,
mbed_official 330:c80ac197fa6a 84 }PCD_EP_DBUF_DIR;
mbed_official 330:c80ac197fa6a 85
mbed_official 330:c80ac197fa6a 86 /* endpoint buffer number */
mbed_official 330:c80ac197fa6a 87 typedef enum
mbed_official 330:c80ac197fa6a 88 {
mbed_official 330:c80ac197fa6a 89 PCD_EP_NOBUF,
mbed_official 330:c80ac197fa6a 90 PCD_EP_BUF0,
mbed_official 330:c80ac197fa6a 91 PCD_EP_BUF1
mbed_official 330:c80ac197fa6a 92 }PCD_EP_BUF_NUM;
mbed_official 330:c80ac197fa6a 93
mbed_official 330:c80ac197fa6a 94 /**
mbed_official 330:c80ac197fa6a 95 * @brief PCD Initialization Structure definition
mbed_official 330:c80ac197fa6a 96 */
mbed_official 330:c80ac197fa6a 97 typedef struct
mbed_official 330:c80ac197fa6a 98 {
mbed_official 330:c80ac197fa6a 99 uint32_t dev_endpoints; /*!< Device Endpoints number.
mbed_official 330:c80ac197fa6a 100 This parameter depends on the used USB core.
mbed_official 330:c80ac197fa6a 101 This parameter must be a number between Min_Data = 1 and Max_Data = 15 */
mbed_official 330:c80ac197fa6a 102
mbed_official 330:c80ac197fa6a 103 uint32_t speed; /*!< USB Core speed.
mbed_official 330:c80ac197fa6a 104 This parameter can be any value of @ref USB_Core_Speed */
mbed_official 330:c80ac197fa6a 105
mbed_official 330:c80ac197fa6a 106 uint32_t ep0_mps; /*!< Set the Endpoint 0 Max Packet size.
mbed_official 330:c80ac197fa6a 107 This parameter can be any value of @ref USB_EP0_MPS */
mbed_official 330:c80ac197fa6a 108
mbed_official 330:c80ac197fa6a 109 uint32_t phy_itface; /*!< Select the used PHY interface.
mbed_official 330:c80ac197fa6a 110 This parameter can be any value of @ref USB_Core_PHY */
mbed_official 330:c80ac197fa6a 111
mbed_official 330:c80ac197fa6a 112 uint32_t Sof_enable; /*!< Enable or disable the output of the SOF signal. */
mbed_official 330:c80ac197fa6a 113
mbed_official 330:c80ac197fa6a 114 uint32_t low_power_enable; /*!< Enable or disable Low Power mode */
mbed_official 330:c80ac197fa6a 115
mbed_official 330:c80ac197fa6a 116 uint32_t lpm_enable; /*!< Enable or disable Battery charging. */
mbed_official 330:c80ac197fa6a 117
mbed_official 330:c80ac197fa6a 118 uint32_t battery_charging_enable; /*!< Enable or disable Battery charging. */
mbed_official 330:c80ac197fa6a 119
mbed_official 330:c80ac197fa6a 120 }PCD_InitTypeDef;
mbed_official 330:c80ac197fa6a 121
mbed_official 330:c80ac197fa6a 122 typedef struct
mbed_official 330:c80ac197fa6a 123 {
mbed_official 330:c80ac197fa6a 124 uint8_t num; /*!< Endpoint number
mbed_official 330:c80ac197fa6a 125 This parameter must be a number between Min_Data = 1 and Max_Data = 15 */
mbed_official 330:c80ac197fa6a 126
mbed_official 330:c80ac197fa6a 127 uint8_t is_in; /*!< Endpoint direction
mbed_official 330:c80ac197fa6a 128 This parameter must be a number between Min_Data = 0 and Max_Data = 1 */
mbed_official 330:c80ac197fa6a 129
mbed_official 330:c80ac197fa6a 130 uint8_t is_stall; /*!< Endpoint stall condition
mbed_official 330:c80ac197fa6a 131 This parameter must be a number between Min_Data = 0 and Max_Data = 1 */
mbed_official 330:c80ac197fa6a 132
mbed_official 330:c80ac197fa6a 133 uint8_t type; /*!< Endpoint type
mbed_official 330:c80ac197fa6a 134 This parameter can be any value of @ref USB_EP_Type */
mbed_official 330:c80ac197fa6a 135
mbed_official 330:c80ac197fa6a 136 uint16_t pmaadress; /*!< PMA Address
mbed_official 330:c80ac197fa6a 137 This parameter can be any value between Min_addr = 0 and Max_addr = 1K */
mbed_official 330:c80ac197fa6a 138
mbed_official 330:c80ac197fa6a 139
mbed_official 330:c80ac197fa6a 140 uint16_t pmaaddr0; /*!< PMA Address0
mbed_official 330:c80ac197fa6a 141 This parameter can be any value between Min_addr = 0 and Max_addr = 1K */
mbed_official 330:c80ac197fa6a 142
mbed_official 330:c80ac197fa6a 143
mbed_official 330:c80ac197fa6a 144 uint16_t pmaaddr1; /*!< PMA Address1
mbed_official 330:c80ac197fa6a 145 This parameter can be any value between Min_addr = 0 and Max_addr = 1K */
mbed_official 330:c80ac197fa6a 146
mbed_official 330:c80ac197fa6a 147
mbed_official 330:c80ac197fa6a 148 uint8_t doublebuffer; /*!< Double buffer enable
mbed_official 330:c80ac197fa6a 149 This parameter can be 0 or 1 */
mbed_official 330:c80ac197fa6a 150
mbed_official 330:c80ac197fa6a 151 uint32_t maxpacket; /*!< Endpoint Max packet size
mbed_official 330:c80ac197fa6a 152 This parameter must be a number between Min_Data = 0 and Max_Data = 64KB */
mbed_official 330:c80ac197fa6a 153
mbed_official 330:c80ac197fa6a 154 uint8_t *xfer_buff; /*!< Pointer to transfer buffer */
mbed_official 330:c80ac197fa6a 155
mbed_official 330:c80ac197fa6a 156
mbed_official 330:c80ac197fa6a 157 uint32_t xfer_len; /*!< Current transfer length */
mbed_official 330:c80ac197fa6a 158
mbed_official 330:c80ac197fa6a 159 uint32_t xfer_count; /*!< Partial transfer length in case of multi packet transfer */
mbed_official 330:c80ac197fa6a 160
mbed_official 330:c80ac197fa6a 161 }PCD_EPTypeDef;
mbed_official 330:c80ac197fa6a 162
mbed_official 330:c80ac197fa6a 163 typedef USB_TypeDef PCD_TypeDef;
mbed_official 330:c80ac197fa6a 164
mbed_official 330:c80ac197fa6a 165 /**
mbed_official 330:c80ac197fa6a 166 * @brief PCD Handle Structure definition
mbed_official 330:c80ac197fa6a 167 */
mbed_official 330:c80ac197fa6a 168 typedef struct
mbed_official 330:c80ac197fa6a 169 {
mbed_official 330:c80ac197fa6a 170 PCD_TypeDef *Instance; /*!< Register base address */
mbed_official 330:c80ac197fa6a 171 PCD_InitTypeDef Init; /*!< PCD required parameters */
mbed_official 330:c80ac197fa6a 172 __IO uint8_t USB_Address; /*!< USB Address */
mbed_official 330:c80ac197fa6a 173 PCD_EPTypeDef IN_ep[8]; /*!< IN endpoint parameters */
mbed_official 330:c80ac197fa6a 174 PCD_EPTypeDef OUT_ep[8]; /*!< OUT endpoint parameters */
mbed_official 330:c80ac197fa6a 175 HAL_LockTypeDef Lock; /*!< PCD peripheral status */
mbed_official 330:c80ac197fa6a 176 __IO PCD_StateTypeDef State; /*!< PCD communication state */
mbed_official 330:c80ac197fa6a 177 uint32_t Setup[12]; /*!< Setup packet buffer */
mbed_official 330:c80ac197fa6a 178 void *pData; /*!< Pointer to upper stack Handler */
mbed_official 330:c80ac197fa6a 179
mbed_official 330:c80ac197fa6a 180 } PCD_HandleTypeDef;
mbed_official 330:c80ac197fa6a 181
mbed_official 330:c80ac197fa6a 182 /**
mbed_official 330:c80ac197fa6a 183 * @}
mbed_official 330:c80ac197fa6a 184 */
mbed_official 330:c80ac197fa6a 185
mbed_official 330:c80ac197fa6a 186 #include "stm32f3xx_hal_pcd_ex.h"
mbed_official 330:c80ac197fa6a 187 /* Exported constants --------------------------------------------------------*/
mbed_official 330:c80ac197fa6a 188 /** @defgroup PCD_Exported_Constants PCD Exported Constants
mbed_official 330:c80ac197fa6a 189 * @{
mbed_official 330:c80ac197fa6a 190 */
mbed_official 330:c80ac197fa6a 191
mbed_official 330:c80ac197fa6a 192 /** @defgroup USB_Core_Speed USB Core Speed
mbed_official 330:c80ac197fa6a 193 * @{
mbed_official 330:c80ac197fa6a 194 */
mbed_official 330:c80ac197fa6a 195 #define PCD_SPEED_HIGH 0 /* Not Supported */
mbed_official 330:c80ac197fa6a 196 #define PCD_SPEED_FULL 2
mbed_official 330:c80ac197fa6a 197 /**
mbed_official 330:c80ac197fa6a 198 * @}
mbed_official 330:c80ac197fa6a 199 */
mbed_official 330:c80ac197fa6a 200
mbed_official 330:c80ac197fa6a 201 /** @defgroup USB_Core_PHY USB Core PHY
mbed_official 330:c80ac197fa6a 202 * @{
mbed_official 330:c80ac197fa6a 203 */
mbed_official 330:c80ac197fa6a 204 #define PCD_PHY_EMBEDDED 2
mbed_official 330:c80ac197fa6a 205 /**
mbed_official 330:c80ac197fa6a 206 * @}
mbed_official 330:c80ac197fa6a 207 */
mbed_official 330:c80ac197fa6a 208
mbed_official 330:c80ac197fa6a 209 /** @defgroup USB_EP0_MPS USB EP0 MPS
mbed_official 330:c80ac197fa6a 210 * @{
mbed_official 330:c80ac197fa6a 211 */
mbed_official 330:c80ac197fa6a 212 #define DEP0CTL_MPS_64 0
mbed_official 330:c80ac197fa6a 213 #define DEP0CTL_MPS_32 1
mbed_official 330:c80ac197fa6a 214 #define DEP0CTL_MPS_16 2
mbed_official 330:c80ac197fa6a 215 #define DEP0CTL_MPS_8 3
mbed_official 330:c80ac197fa6a 216
mbed_official 330:c80ac197fa6a 217 #define PCD_EP0MPS_64 DEP0CTL_MPS_64
mbed_official 330:c80ac197fa6a 218 #define PCD_EP0MPS_32 DEP0CTL_MPS_32
mbed_official 330:c80ac197fa6a 219 #define PCD_EP0MPS_16 DEP0CTL_MPS_16
mbed_official 330:c80ac197fa6a 220 #define PCD_EP0MPS_08 DEP0CTL_MPS_8
mbed_official 330:c80ac197fa6a 221 /**
mbed_official 330:c80ac197fa6a 222 * @}
mbed_official 330:c80ac197fa6a 223 */
mbed_official 330:c80ac197fa6a 224
mbed_official 330:c80ac197fa6a 225 /** @defgroup USB_EP_Type USB EP Type
mbed_official 330:c80ac197fa6a 226 * @{
mbed_official 330:c80ac197fa6a 227 */
mbed_official 330:c80ac197fa6a 228 #define PCD_EP_TYPE_CTRL 0
mbed_official 330:c80ac197fa6a 229 #define PCD_EP_TYPE_ISOC 1
mbed_official 330:c80ac197fa6a 230 #define PCD_EP_TYPE_BULK 2
mbed_official 330:c80ac197fa6a 231 #define PCD_EP_TYPE_INTR 3
mbed_official 330:c80ac197fa6a 232 /**
mbed_official 330:c80ac197fa6a 233 * @}
mbed_official 330:c80ac197fa6a 234 */
mbed_official 330:c80ac197fa6a 235
mbed_official 330:c80ac197fa6a 236 /** @defgroup USB_ENDP USB ENDP
mbed_official 330:c80ac197fa6a 237 * @{
mbed_official 330:c80ac197fa6a 238 */
mbed_official 330:c80ac197fa6a 239
mbed_official 330:c80ac197fa6a 240 #define PCD_ENDP0 ((uint8_t)0)
mbed_official 330:c80ac197fa6a 241 #define PCD_ENDP1 ((uint8_t)1)
mbed_official 330:c80ac197fa6a 242 #define PCD_ENDP2 ((uint8_t)2)
mbed_official 330:c80ac197fa6a 243 #define PCD_ENDP3 ((uint8_t)3)
mbed_official 330:c80ac197fa6a 244 #define PCD_ENDP4 ((uint8_t)4)
mbed_official 330:c80ac197fa6a 245 #define PCD_ENDP5 ((uint8_t)5)
mbed_official 330:c80ac197fa6a 246 #define PCD_ENDP6 ((uint8_t)6)
mbed_official 330:c80ac197fa6a 247 #define PCD_ENDP7 ((uint8_t)7)
mbed_official 330:c80ac197fa6a 248
mbed_official 330:c80ac197fa6a 249 /* Endpoint Kind */
mbed_official 330:c80ac197fa6a 250 #define PCD_SNG_BUF 0
mbed_official 330:c80ac197fa6a 251 #define PCD_DBL_BUF 1
mbed_official 330:c80ac197fa6a 252
mbed_official 330:c80ac197fa6a 253 #define IS_PCD_ALL_INSTANCE IS_USB_ALL_INSTANCE
mbed_official 330:c80ac197fa6a 254
mbed_official 330:c80ac197fa6a 255 /**
mbed_official 330:c80ac197fa6a 256 * @}
mbed_official 330:c80ac197fa6a 257 */
mbed_official 330:c80ac197fa6a 258
mbed_official 330:c80ac197fa6a 259 /**
mbed_official 330:c80ac197fa6a 260 * @}
mbed_official 330:c80ac197fa6a 261 */
mbed_official 330:c80ac197fa6a 262
mbed_official 330:c80ac197fa6a 263 /* Exported macros -----------------------------------------------------------*/
mbed_official 330:c80ac197fa6a 264
mbed_official 330:c80ac197fa6a 265 /** @defgroup PCD_Exported_Macros PCD Exported Macros
mbed_official 330:c80ac197fa6a 266 * @brief macros to handle interrupts and specific clock configurations
mbed_official 330:c80ac197fa6a 267 * @{
mbed_official 330:c80ac197fa6a 268 */
mbed_official 330:c80ac197fa6a 269 #define __HAL_PCD_GET_FLAG(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->ISTR) & (__INTERRUPT__)) == (__INTERRUPT__))
mbed_official 330:c80ac197fa6a 270 #define __HAL_PCD_CLEAR_FLAG(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->ISTR) = ~(__INTERRUPT__))
mbed_official 330:c80ac197fa6a 271
mbed_official 330:c80ac197fa6a 272 #define USB_EXTI_LINE_WAKEUP ((uint32_t)0x00040000) /*!< External interrupt line 18 Connected to the USB FS EXTI Line */
mbed_official 330:c80ac197fa6a 273
mbed_official 330:c80ac197fa6a 274 #define __HAL_USB_EXTI_ENABLE_IT() EXTI->IMR |= USB_EXTI_LINE_WAKEUP
mbed_official 330:c80ac197fa6a 275 #define __HAL_USB_EXTI_DISABLE_IT() EXTI->IMR &= ~(USB_EXTI_LINE_WAKEUP)
mbed_official 330:c80ac197fa6a 276 #define __HAL_USB_EXTI_GENERATE_SWIT(__EXTILINE__) (EXTI->SWIER |= (__EXTILINE__))
mbed_official 330:c80ac197fa6a 277
mbed_official 330:c80ac197fa6a 278 #define __HAL_USB_EXTI_GET_FLAG() EXTI->PR & (USB_EXTI_LINE_WAKEUP)
mbed_official 330:c80ac197fa6a 279 #define __HAL_USB_EXTI_CLEAR_FLAG() EXTI->PR = USB_EXTI_LINE_WAKEUP
mbed_official 330:c80ac197fa6a 280
mbed_official 330:c80ac197fa6a 281 #define __HAL_USB_EXTI_SET_RISING_EDGE_TRIGGER() do {\
mbed_official 330:c80ac197fa6a 282 EXTI->FTSR &= ~(USB_EXTI_LINE_WAKEUP);\
mbed_official 330:c80ac197fa6a 283 EXTI->RTSR |= USB_EXTI_LINE_WAKEUP;\
mbed_official 330:c80ac197fa6a 284 } while(0)
mbed_official 330:c80ac197fa6a 285
mbed_official 330:c80ac197fa6a 286 #define __HAL_USB_EXTI_SET_FALLING_EDGE_TRIGGER() do {\
mbed_official 330:c80ac197fa6a 287 EXTI->FTSR |= (USB_EXTI_LINE_WAKEUP);\
mbed_official 330:c80ac197fa6a 288 EXTI->RTSR &= ~(USB_EXTI_LINE_WAKEUP);\
mbed_official 330:c80ac197fa6a 289 } while(0)
mbed_official 330:c80ac197fa6a 290
mbed_official 330:c80ac197fa6a 291 #define __HAL_USB_EXTI_SET_FALLINGRISING_TRIGGER() do {\
mbed_official 330:c80ac197fa6a 292 EXTI->RTSR &= ~(USB_EXTI_LINE_WAKEUP);\
mbed_official 330:c80ac197fa6a 293 EXTI->FTSR &= ~(USB_EXTI_LINE_WAKEUP);\
mbed_official 330:c80ac197fa6a 294 EXTI->RTSR |= USB_EXTI_LINE_WAKEUP;\
mbed_official 330:c80ac197fa6a 295 EXTI->FTSR |= USB_EXTI_LINE_WAKEUP;\
mbed_official 330:c80ac197fa6a 296 } while(0)
mbed_official 330:c80ac197fa6a 297 /**
mbed_official 330:c80ac197fa6a 298 * @}
mbed_official 330:c80ac197fa6a 299 */
mbed_official 330:c80ac197fa6a 300
mbed_official 330:c80ac197fa6a 301 /* Internal macros -----------------------------------------------------------*/
mbed_official 330:c80ac197fa6a 302
mbed_official 330:c80ac197fa6a 303 /** @defgroup PCD_Private_Macros PCD Private Macros
mbed_official 330:c80ac197fa6a 304 * @brief macros to handle interrupts and specific clock configurations
mbed_official 330:c80ac197fa6a 305 * @{
mbed_official 330:c80ac197fa6a 306 */
mbed_official 330:c80ac197fa6a 307
mbed_official 330:c80ac197fa6a 308 /* SetENDPOINT */
mbed_official 330:c80ac197fa6a 309 #define PCD_SET_ENDPOINT(USBx, bEpNum,wRegValue) (*(&USBx->EP0R + bEpNum * 2)= (uint16_t)wRegValue)
mbed_official 330:c80ac197fa6a 310
mbed_official 330:c80ac197fa6a 311 /* GetENDPOINT */
mbed_official 330:c80ac197fa6a 312 #define PCD_GET_ENDPOINT(USBx, bEpNum) (*(&USBx->EP0R + bEpNum * 2))
mbed_official 330:c80ac197fa6a 313
mbed_official 330:c80ac197fa6a 314
mbed_official 330:c80ac197fa6a 315
mbed_official 330:c80ac197fa6a 316 /**
mbed_official 330:c80ac197fa6a 317 * @brief sets the type in the endpoint register(bits EP_TYPE[1:0])
mbed_official 330:c80ac197fa6a 318 * @param USBx: USB peripheral instance register address.
mbed_official 330:c80ac197fa6a 319 * @param bEpNum: Endpoint Number.
mbed_official 330:c80ac197fa6a 320 * @param wType: Endpoint Type.
mbed_official 330:c80ac197fa6a 321 * @retval None
mbed_official 330:c80ac197fa6a 322 */
mbed_official 330:c80ac197fa6a 323 #define PCD_SET_EPTYPE(USBx, bEpNum,wType) (PCD_SET_ENDPOINT(USBx, bEpNum,\
mbed_official 330:c80ac197fa6a 324 ((PCD_GET_ENDPOINT(USBx, bEpNum) & USB_EP_T_MASK) | wType )))
mbed_official 330:c80ac197fa6a 325
mbed_official 330:c80ac197fa6a 326 /**
mbed_official 330:c80ac197fa6a 327 * @brief gets the type in the endpoint register(bits EP_TYPE[1:0])
mbed_official 330:c80ac197fa6a 328 * @param USBx: USB peripheral instance register address.
mbed_official 330:c80ac197fa6a 329 * @param bEpNum: Endpoint Number.
mbed_official 330:c80ac197fa6a 330 * @retval Endpoint Type
mbed_official 330:c80ac197fa6a 331 */
mbed_official 330:c80ac197fa6a 332 #define PCD_GET_EPTYPE(USBx, bEpNum) (PCD_GET_ENDPOINT(USBx, bEpNum) & USB_EP_T_FIELD)
mbed_official 330:c80ac197fa6a 333
mbed_official 330:c80ac197fa6a 334
mbed_official 330:c80ac197fa6a 335 /**
mbed_official 330:c80ac197fa6a 336 * @brief free buffer used from the application realizing it to the line
mbed_official 330:c80ac197fa6a 337 toggles bit SW_BUF in the double buffered endpoint register
mbed_official 330:c80ac197fa6a 338 * @param USBx: USB peripheral instance register address.
mbed_official 330:c80ac197fa6a 339 * @param bEpNum: Endpoint Number.
mbed_official 330:c80ac197fa6a 340 * @param bDir: Direction
mbed_official 330:c80ac197fa6a 341 * @retval None
mbed_official 330:c80ac197fa6a 342 */
mbed_official 330:c80ac197fa6a 343 #define PCD_FreeUserBuffer(USBx, bEpNum, bDir)\
mbed_official 330:c80ac197fa6a 344 {\
mbed_official 330:c80ac197fa6a 345 if (bDir == PCD_EP_DBUF_OUT)\
mbed_official 330:c80ac197fa6a 346 { /* OUT double buffered endpoint */\
mbed_official 330:c80ac197fa6a 347 PCD_TX_DTOG(USBx, bEpNum);\
mbed_official 330:c80ac197fa6a 348 }\
mbed_official 330:c80ac197fa6a 349 else if (bDir == PCD_EP_DBUF_IN)\
mbed_official 330:c80ac197fa6a 350 { /* IN double buffered endpoint */\
mbed_official 330:c80ac197fa6a 351 PCD_RX_DTOG(USBx, bEpNum);\
mbed_official 330:c80ac197fa6a 352 }\
mbed_official 330:c80ac197fa6a 353 }
mbed_official 330:c80ac197fa6a 354
mbed_official 330:c80ac197fa6a 355 /**
mbed_official 330:c80ac197fa6a 356 * @brief gets direction of the double buffered endpoint
mbed_official 330:c80ac197fa6a 357 * @param USBx: USB peripheral instance register address.
mbed_official 330:c80ac197fa6a 358 * @param bEpNum: Endpoint Number.
mbed_official 330:c80ac197fa6a 359 * @retval EP_DBUF_OUT, EP_DBUF_IN,
mbed_official 330:c80ac197fa6a 360 * EP_DBUF_ERR if the endpoint counter not yet programmed.
mbed_official 330:c80ac197fa6a 361 */
mbed_official 330:c80ac197fa6a 362 #define PCD_GET_DB_DIR(USBx, bEpNum)\
mbed_official 330:c80ac197fa6a 363 {\
mbed_official 330:c80ac197fa6a 364 if ((uint16_t)(*PCD_EP_RX_CNT(USBx, bEpNum) & 0xFC00) != 0)\
mbed_official 330:c80ac197fa6a 365 return(PCD_EP_DBUF_OUT);\
mbed_official 330:c80ac197fa6a 366 else if (((uint16_t)(*PCD_EP_TX_CNT(USBx, bEpNum)) & 0x03FF) != 0)\
mbed_official 330:c80ac197fa6a 367 return(PCD_EP_DBUF_IN);\
mbed_official 330:c80ac197fa6a 368 else\
mbed_official 330:c80ac197fa6a 369 return(PCD_EP_DBUF_ERR);\
mbed_official 330:c80ac197fa6a 370 }
mbed_official 330:c80ac197fa6a 371
mbed_official 330:c80ac197fa6a 372 /**
mbed_official 330:c80ac197fa6a 373 * @brief sets the status for tx transfer (bits STAT_TX[1:0]).
mbed_official 330:c80ac197fa6a 374 * @param USBx: USB peripheral instance register address.
mbed_official 330:c80ac197fa6a 375 * @param bEpNum: Endpoint Number.
mbed_official 330:c80ac197fa6a 376 * @param wState: new state
mbed_official 330:c80ac197fa6a 377 * @retval None
mbed_official 330:c80ac197fa6a 378 */
mbed_official 330:c80ac197fa6a 379 #define PCD_SET_EP_TX_STATUS(USBx, bEpNum, wState) {\
mbed_official 330:c80ac197fa6a 380 register uint16_t _wRegVal; \
mbed_official 330:c80ac197fa6a 381 \
mbed_official 330:c80ac197fa6a 382 _wRegVal = PCD_GET_ENDPOINT(USBx, bEpNum) & USB_EPTX_DTOGMASK;\
mbed_official 330:c80ac197fa6a 383 /* toggle first bit ? */ \
mbed_official 330:c80ac197fa6a 384 if((USB_EPTX_DTOG1 & wState)!= 0) \
mbed_official 330:c80ac197fa6a 385 _wRegVal ^= USB_EPTX_DTOG1; \
mbed_official 330:c80ac197fa6a 386 /* toggle second bit ? */ \
mbed_official 330:c80ac197fa6a 387 if((USB_EPTX_DTOG2 & wState)!= 0) \
mbed_official 330:c80ac197fa6a 388 _wRegVal ^= USB_EPTX_DTOG2; \
mbed_official 330:c80ac197fa6a 389 PCD_SET_ENDPOINT(USBx, bEpNum, (_wRegVal | USB_EP_CTR_RX|USB_EP_CTR_TX)); \
mbed_official 330:c80ac197fa6a 390 } /* PCD_SET_EP_TX_STATUS */
mbed_official 330:c80ac197fa6a 391
mbed_official 330:c80ac197fa6a 392 /**
mbed_official 330:c80ac197fa6a 393 * @brief sets the status for rx transfer (bits STAT_TX[1:0])
mbed_official 330:c80ac197fa6a 394 * @param USBx: USB peripheral instance register address.
mbed_official 330:c80ac197fa6a 395 * @param bEpNum: Endpoint Number.
mbed_official 330:c80ac197fa6a 396 * @param wState: new state
mbed_official 330:c80ac197fa6a 397 * @retval None
mbed_official 330:c80ac197fa6a 398 */
mbed_official 330:c80ac197fa6a 399 #define PCD_SET_EP_RX_STATUS(USBx, bEpNum,wState) {\
mbed_official 330:c80ac197fa6a 400 register uint16_t _wRegVal; \
mbed_official 330:c80ac197fa6a 401 \
mbed_official 330:c80ac197fa6a 402 _wRegVal = PCD_GET_ENDPOINT(USBx, bEpNum) & USB_EPRX_DTOGMASK;\
mbed_official 330:c80ac197fa6a 403 /* toggle first bit ? */ \
mbed_official 330:c80ac197fa6a 404 if((USB_EPRX_DTOG1 & wState)!= 0) \
mbed_official 330:c80ac197fa6a 405 _wRegVal ^= USB_EPRX_DTOG1; \
mbed_official 330:c80ac197fa6a 406 /* toggle second bit ? */ \
mbed_official 330:c80ac197fa6a 407 if((USB_EPRX_DTOG2 & wState)!= 0) \
mbed_official 330:c80ac197fa6a 408 _wRegVal ^= USB_EPRX_DTOG2; \
mbed_official 330:c80ac197fa6a 409 PCD_SET_ENDPOINT(USBx, bEpNum, (_wRegVal | USB_EP_CTR_RX|USB_EP_CTR_TX)); \
mbed_official 330:c80ac197fa6a 410 } /* PCD_SET_EP_RX_STATUS */
mbed_official 330:c80ac197fa6a 411
mbed_official 330:c80ac197fa6a 412 /**
mbed_official 330:c80ac197fa6a 413 * @brief sets the status for rx & tx (bits STAT_TX[1:0] & STAT_RX[1:0])
mbed_official 330:c80ac197fa6a 414 * @param USBx: USB peripheral instance register address.
mbed_official 330:c80ac197fa6a 415 * @param bEpNum: Endpoint Number.
mbed_official 330:c80ac197fa6a 416 * @param wStaterx: new state.
mbed_official 330:c80ac197fa6a 417 * @param wStatetx: new state.
mbed_official 330:c80ac197fa6a 418 * @retval None
mbed_official 330:c80ac197fa6a 419 */
mbed_official 330:c80ac197fa6a 420 #define PCD_SET_EP_TXRX_STATUS(USBx,bEpNum,wStaterx,wStatetx) {\
mbed_official 330:c80ac197fa6a 421 register uint32_t _wRegVal; \
mbed_official 330:c80ac197fa6a 422 \
mbed_official 330:c80ac197fa6a 423 _wRegVal = PCD_GET_ENDPOINT(USBx, bEpNum) & (USB_EPRX_DTOGMASK |USB_EPTX_STAT) ;\
mbed_official 330:c80ac197fa6a 424 /* toggle first bit ? */ \
mbed_official 330:c80ac197fa6a 425 if((USB_EPRX_DTOG1 & wStaterx)!= 0) \
mbed_official 330:c80ac197fa6a 426 _wRegVal ^= USB_EPRX_DTOG1; \
mbed_official 330:c80ac197fa6a 427 /* toggle second bit ? */ \
mbed_official 330:c80ac197fa6a 428 if((USB_EPRX_DTOG2 & wStaterx)!= 0) \
mbed_official 330:c80ac197fa6a 429 _wRegVal ^= USB_EPRX_DTOG2; \
mbed_official 330:c80ac197fa6a 430 /* toggle first bit ? */ \
mbed_official 330:c80ac197fa6a 431 if((USB_EPTX_DTOG1 & wStatetx)!= 0) \
mbed_official 330:c80ac197fa6a 432 _wRegVal ^= USB_EPTX_DTOG1; \
mbed_official 330:c80ac197fa6a 433 /* toggle second bit ? */ \
mbed_official 330:c80ac197fa6a 434 if((USB_EPTX_DTOG2 & wStatetx)!= 0) \
mbed_official 330:c80ac197fa6a 435 _wRegVal ^= USB_EPTX_DTOG2; \
mbed_official 330:c80ac197fa6a 436 PCD_SET_ENDPOINT(USBx, bEpNum, _wRegVal | USB_EP_CTR_RX|USB_EP_CTR_TX); \
mbed_official 330:c80ac197fa6a 437 } /* PCD_SET_EP_TXRX_STATUS */
mbed_official 330:c80ac197fa6a 438
mbed_official 330:c80ac197fa6a 439 /**
mbed_official 330:c80ac197fa6a 440 * @brief gets the status for tx/rx transfer (bits STAT_TX[1:0]
mbed_official 330:c80ac197fa6a 441 * /STAT_RX[1:0])
mbed_official 330:c80ac197fa6a 442 * @param USBx: USB peripheral instance register address.
mbed_official 330:c80ac197fa6a 443 * @param bEpNum: Endpoint Number.
mbed_official 330:c80ac197fa6a 444 * @retval status
mbed_official 330:c80ac197fa6a 445 */
mbed_official 330:c80ac197fa6a 446 #define PCD_GET_EP_TX_STATUS(USBx, bEpNum) ((uint16_t)PCD_GET_ENDPOINT(USBx, bEpNum) & USB_EPTX_STAT)
mbed_official 330:c80ac197fa6a 447
mbed_official 330:c80ac197fa6a 448 #define PCD_GET_EP_RX_STATUS(USBx, bEpNum) ((uint16_t)PCD_GET_ENDPOINT(USBx, bEpNum) & USB_EPRX_STAT)
mbed_official 330:c80ac197fa6a 449
mbed_official 330:c80ac197fa6a 450 /**
mbed_official 330:c80ac197fa6a 451 * @brief sets directly the VALID tx/rx-status into the endpoint register
mbed_official 330:c80ac197fa6a 452 * @param USBx: USB peripheral instance register address.
mbed_official 330:c80ac197fa6a 453 * @param bEpNum: Endpoint Number.
mbed_official 330:c80ac197fa6a 454 * @retval None
mbed_official 330:c80ac197fa6a 455 */
mbed_official 330:c80ac197fa6a 456 #define PCD_SET_EP_TX_VALID(USBx, bEpNum) (PCD_SET_EP_TX_STATUS(USBx, bEpNum, USB_EP_TX_VALID))
mbed_official 330:c80ac197fa6a 457
mbed_official 330:c80ac197fa6a 458 #define PCD_SET_EP_RX_VALID(USBx, bEpNum) (PCD_SET_EP_RX_STATUS(USBx, bEpNum, USB_EP_RX_VALID))
mbed_official 330:c80ac197fa6a 459
mbed_official 330:c80ac197fa6a 460 /**
mbed_official 330:c80ac197fa6a 461 * @brief checks stall condition in an endpoint.
mbed_official 330:c80ac197fa6a 462 * @param USBx: USB peripheral instance register address.
mbed_official 330:c80ac197fa6a 463 * @param bEpNum: Endpoint Number.
mbed_official 330:c80ac197fa6a 464 * @retval TRUE = endpoint in stall condition.
mbed_official 330:c80ac197fa6a 465 */
mbed_official 330:c80ac197fa6a 466 #define PCD_GET_EP_TX_STALL_STATUS(USBx, bEpNum) (PCD_GET_EP_TX_STATUS(USBx, bEpNum) \
mbed_official 330:c80ac197fa6a 467 == USB_EP_TX_STALL)
mbed_official 330:c80ac197fa6a 468 #define PCD_GET_EP_RX_STALL_STATUS(USBx, bEpNum) (PCD_GET_EP_RX_STATUS(USBx, bEpNum) \
mbed_official 330:c80ac197fa6a 469 == USB_EP_RX_STALL)
mbed_official 330:c80ac197fa6a 470
mbed_official 330:c80ac197fa6a 471 /**
mbed_official 330:c80ac197fa6a 472 * @brief set & clear EP_KIND bit.
mbed_official 330:c80ac197fa6a 473 * @param USBx: USB peripheral instance register address.
mbed_official 330:c80ac197fa6a 474 * @param bEpNum: Endpoint Number.
mbed_official 330:c80ac197fa6a 475 * @retval None
mbed_official 330:c80ac197fa6a 476 */
mbed_official 330:c80ac197fa6a 477 #define PCD_SET_EP_KIND(USBx, bEpNum) (PCD_SET_ENDPOINT(USBx, bEpNum, \
mbed_official 330:c80ac197fa6a 478 (USB_EP_CTR_RX|USB_EP_CTR_TX|((PCD_GET_ENDPOINT(USBx, bEpNum) | USB_EP_KIND) & USB_EPREG_MASK))))
mbed_official 330:c80ac197fa6a 479 #define PCD_CLEAR_EP_KIND(USBx, bEpNum) (PCD_SET_ENDPOINT(USBx, bEpNum, \
mbed_official 330:c80ac197fa6a 480 (USB_EP_CTR_RX|USB_EP_CTR_TX|(PCD_GET_ENDPOINT(USBx, bEpNum) & USB_EPKIND_MASK))))
mbed_official 330:c80ac197fa6a 481
mbed_official 330:c80ac197fa6a 482 /**
mbed_official 330:c80ac197fa6a 483 * @brief Sets/clears directly STATUS_OUT bit in the endpoint register.
mbed_official 330:c80ac197fa6a 484 * @param USBx: USB peripheral instance register address.
mbed_official 330:c80ac197fa6a 485 * @param bEpNum: Endpoint Number.
mbed_official 330:c80ac197fa6a 486 * @retval None
mbed_official 330:c80ac197fa6a 487 */
mbed_official 330:c80ac197fa6a 488 #define PCD_SET_OUT_STATUS(USBx, bEpNum) PCD_SET_EP_KIND(USBx, bEpNum)
mbed_official 330:c80ac197fa6a 489 #define PCD_CLEAR_OUT_STATUS(USBx, bEpNum) PCD_CLEAR_EP_KIND(USBx, bEpNum)
mbed_official 330:c80ac197fa6a 490
mbed_official 330:c80ac197fa6a 491 /**
mbed_official 330:c80ac197fa6a 492 * @brief Sets/clears directly EP_KIND bit in the endpoint register.
mbed_official 330:c80ac197fa6a 493 * @param USBx: USB peripheral instance register address.
mbed_official 330:c80ac197fa6a 494 * @param bEpNum: Endpoint Number.
mbed_official 330:c80ac197fa6a 495 * @retval None
mbed_official 330:c80ac197fa6a 496 */
mbed_official 330:c80ac197fa6a 497 #define PCD_SET_EP_DBUF(USBx, bEpNum) PCD_SET_EP_KIND(USBx, bEpNum)
mbed_official 330:c80ac197fa6a 498 #define PCD_CLEAR_EP_DBUF(USBx, bEpNum) PCD_CLEAR_EP_KIND(USBx, bEpNum)
mbed_official 330:c80ac197fa6a 499
mbed_official 330:c80ac197fa6a 500 /**
mbed_official 330:c80ac197fa6a 501 * @brief Clears bit CTR_RX / CTR_TX in the endpoint register.
mbed_official 330:c80ac197fa6a 502 * @param USBx: USB peripheral instance register address.
mbed_official 330:c80ac197fa6a 503 * @param bEpNum: Endpoint Number.
mbed_official 330:c80ac197fa6a 504 * @retval None
mbed_official 330:c80ac197fa6a 505 */
mbed_official 330:c80ac197fa6a 506 #define PCD_CLEAR_RX_EP_CTR(USBx, bEpNum) (PCD_SET_ENDPOINT(USBx, bEpNum,\
mbed_official 330:c80ac197fa6a 507 PCD_GET_ENDPOINT(USBx, bEpNum) & 0x7FFF & USB_EPREG_MASK))
mbed_official 330:c80ac197fa6a 508 #define PCD_CLEAR_TX_EP_CTR(USBx, bEpNum) (PCD_SET_ENDPOINT(USBx, bEpNum,\
mbed_official 330:c80ac197fa6a 509 PCD_GET_ENDPOINT(USBx, bEpNum) & 0xFF7F & USB_EPREG_MASK))
mbed_official 330:c80ac197fa6a 510
mbed_official 330:c80ac197fa6a 511 /**
mbed_official 330:c80ac197fa6a 512 * @brief Toggles DTOG_RX / DTOG_TX bit in the endpoint register.
mbed_official 330:c80ac197fa6a 513 * @param USBx: USB peripheral instance register address.
mbed_official 330:c80ac197fa6a 514 * @param bEpNum: Endpoint Number.
mbed_official 330:c80ac197fa6a 515 * @retval None
mbed_official 330:c80ac197fa6a 516 */
mbed_official 330:c80ac197fa6a 517 #define PCD_RX_DTOG(USBx, bEpNum) (PCD_SET_ENDPOINT(USBx, bEpNum, \
mbed_official 330:c80ac197fa6a 518 USB_EP_CTR_RX|USB_EP_CTR_TX|USB_EP_DTOG_RX | (PCD_GET_ENDPOINT(USBx, bEpNum) & USB_EPREG_MASK)))
mbed_official 330:c80ac197fa6a 519 #define PCD_TX_DTOG(USBx, bEpNum) (PCD_SET_ENDPOINT(USBx, bEpNum, \
mbed_official 330:c80ac197fa6a 520 USB_EP_CTR_RX|USB_EP_CTR_TX|USB_EP_DTOG_TX | (PCD_GET_ENDPOINT(USBx, bEpNum) & USB_EPREG_MASK)))
mbed_official 330:c80ac197fa6a 521
mbed_official 330:c80ac197fa6a 522 /**
mbed_official 330:c80ac197fa6a 523 * @brief Clears DTOG_RX / DTOG_TX bit in the endpoint register.
mbed_official 330:c80ac197fa6a 524 * @param USBx: USB peripheral instance register address.
mbed_official 330:c80ac197fa6a 525 * @param bEpNum: Endpoint Number.
mbed_official 330:c80ac197fa6a 526 * @retval None
mbed_official 330:c80ac197fa6a 527 */
mbed_official 330:c80ac197fa6a 528 #define PCD_CLEAR_RX_DTOG(USBx, bEpNum) if((PCD_GET_ENDPOINT(USBx, bEpNum) & USB_EP_DTOG_RX) != 0)\
mbed_official 330:c80ac197fa6a 529 PCD_RX_DTOG(USBx, bEpNum)
mbed_official 330:c80ac197fa6a 530 #define PCD_CLEAR_TX_DTOG(USBx, bEpNum) if((PCD_GET_ENDPOINT(USBx, bEpNum) & USB_EP_DTOG_TX) != 0)\
mbed_official 330:c80ac197fa6a 531 PCD_TX_DTOG(USBx, bEpNum)
mbed_official 330:c80ac197fa6a 532
mbed_official 330:c80ac197fa6a 533 /**
mbed_official 330:c80ac197fa6a 534 * @brief Sets address in an endpoint register.
mbed_official 330:c80ac197fa6a 535 * @param USBx: USB peripheral instance register address.
mbed_official 330:c80ac197fa6a 536 * @param bEpNum: Endpoint Number.
mbed_official 330:c80ac197fa6a 537 * @param bAddr: Address.
mbed_official 330:c80ac197fa6a 538 * @retval None
mbed_official 330:c80ac197fa6a 539 */
mbed_official 330:c80ac197fa6a 540 #define PCD_SET_EP_ADDRESS(USBx, bEpNum,bAddr) PCD_SET_ENDPOINT(USBx, bEpNum,\
mbed_official 330:c80ac197fa6a 541 USB_EP_CTR_RX|USB_EP_CTR_TX|(PCD_GET_ENDPOINT(USBx, bEpNum) & USB_EPREG_MASK) | bAddr)
mbed_official 330:c80ac197fa6a 542
mbed_official 330:c80ac197fa6a 543 #define PCD_GET_EP_ADDRESS(USBx, bEpNum) ((uint8_t)(PCD_GET_ENDPOINT(USBx, bEpNum) & USB_EPADDR_FIELD))
mbed_official 330:c80ac197fa6a 544
mbed_official 330:c80ac197fa6a 545 /**
mbed_official 330:c80ac197fa6a 546 * @brief sets address of the tx/rx buffer.
mbed_official 330:c80ac197fa6a 547 * @param USBx: USB peripheral instance register address.
mbed_official 330:c80ac197fa6a 548 * @param bEpNum: Endpoint Number.
mbed_official 330:c80ac197fa6a 549 * @param wAddr: address to be set (must be word aligned).
mbed_official 330:c80ac197fa6a 550 * @retval None
mbed_official 330:c80ac197fa6a 551 */
mbed_official 330:c80ac197fa6a 552 #define PCD_SET_EP_TX_ADDRESS(USBx, bEpNum,wAddr) (*PCD_EP_TX_ADDRESS(USBx, bEpNum) = ((wAddr >> 1) << 1))
mbed_official 330:c80ac197fa6a 553 #define PCD_SET_EP_RX_ADDRESS(USBx, bEpNum,wAddr) (*PCD_EP_RX_ADDRESS(USBx, bEpNum) = ((wAddr >> 1) << 1))
mbed_official 330:c80ac197fa6a 554
mbed_official 330:c80ac197fa6a 555 /**
mbed_official 330:c80ac197fa6a 556 * @brief Gets address of the tx/rx buffer.
mbed_official 330:c80ac197fa6a 557 * @param USBx: USB peripheral instance register address.
mbed_official 330:c80ac197fa6a 558 * @param bEpNum: Endpoint Number.
mbed_official 330:c80ac197fa6a 559 * @retval address of the buffer.
mbed_official 330:c80ac197fa6a 560 */
mbed_official 330:c80ac197fa6a 561 #define PCD_GET_EP_TX_ADDRESS(USBx, bEpNum) ((uint16_t)*PCD_EP_TX_ADDRESS(USBx, bEpNum))
mbed_official 330:c80ac197fa6a 562 #define PCD_GET_EP_RX_ADDRESS(USBx, bEpNum) ((uint16_t)*PCD_EP_RX_ADDRESS(USBx, bEpNum))
mbed_official 330:c80ac197fa6a 563
mbed_official 330:c80ac197fa6a 564 /**
mbed_official 330:c80ac197fa6a 565 * @brief Sets counter of rx buffer with no. of blocks.
mbed_official 330:c80ac197fa6a 566 * @param dwReg: Register
mbed_official 330:c80ac197fa6a 567 * @param wCount: Counter.
mbed_official 330:c80ac197fa6a 568 * @param wNBlocks: no. of Blocks.
mbed_official 330:c80ac197fa6a 569 * @retval None
mbed_official 330:c80ac197fa6a 570 */
mbed_official 330:c80ac197fa6a 571 #define PCD_CALC_BLK32(dwReg,wCount,wNBlocks) {\
mbed_official 330:c80ac197fa6a 572 wNBlocks = wCount >> 5;\
mbed_official 330:c80ac197fa6a 573 if((wCount & 0x1f) == 0)\
mbed_official 330:c80ac197fa6a 574 wNBlocks--;\
mbed_official 330:c80ac197fa6a 575 *pdwReg = (uint16_t)((wNBlocks << 10) | 0x8000);\
mbed_official 330:c80ac197fa6a 576 }/* PCD_CALC_BLK32 */
mbed_official 330:c80ac197fa6a 577
mbed_official 330:c80ac197fa6a 578 #define PCD_CALC_BLK2(dwReg,wCount,wNBlocks) {\
mbed_official 330:c80ac197fa6a 579 wNBlocks = wCount >> 1;\
mbed_official 330:c80ac197fa6a 580 if((wCount & 0x1) != 0)\
mbed_official 330:c80ac197fa6a 581 wNBlocks++;\
mbed_official 330:c80ac197fa6a 582 *pdwReg = (uint16_t)(wNBlocks << 10);\
mbed_official 330:c80ac197fa6a 583 }/* PCD_CALC_BLK2 */
mbed_official 330:c80ac197fa6a 584
mbed_official 330:c80ac197fa6a 585 #define PCD_SET_EP_CNT_RX_REG(dwReg,wCount) {\
mbed_official 330:c80ac197fa6a 586 uint16_t wNBlocks;\
mbed_official 330:c80ac197fa6a 587 if(wCount > 62){PCD_CALC_BLK32(dwReg,wCount,wNBlocks);}\
mbed_official 330:c80ac197fa6a 588 else {PCD_CALC_BLK2(dwReg,wCount,wNBlocks);}\
mbed_official 330:c80ac197fa6a 589 }/* PCD_SET_EP_CNT_RX_REG */
mbed_official 330:c80ac197fa6a 590
mbed_official 330:c80ac197fa6a 591 #define PCD_SET_EP_RX_DBUF0_CNT(USBx, bEpNum,wCount) {\
mbed_official 330:c80ac197fa6a 592 uint16_t *pdwReg = PCD_EP_TX_CNT(USBx, bEpNum); \
mbed_official 330:c80ac197fa6a 593 PCD_SET_EP_CNT_RX_REG(pdwReg, wCount);\
mbed_official 330:c80ac197fa6a 594 }
mbed_official 330:c80ac197fa6a 595 /**
mbed_official 330:c80ac197fa6a 596 * @brief sets counter for the tx/rx buffer.
mbed_official 330:c80ac197fa6a 597 * @param USBx: USB peripheral instance register address.
mbed_official 330:c80ac197fa6a 598 * @param bEpNum: Endpoint Number.
mbed_official 330:c80ac197fa6a 599 * @param wCount: Counter value.
mbed_official 330:c80ac197fa6a 600 * @retval None
mbed_official 330:c80ac197fa6a 601 */
mbed_official 330:c80ac197fa6a 602 #define PCD_SET_EP_TX_CNT(USBx, bEpNum,wCount) (*PCD_EP_TX_CNT(USBx, bEpNum) = wCount)
mbed_official 330:c80ac197fa6a 603
mbed_official 330:c80ac197fa6a 604
mbed_official 330:c80ac197fa6a 605 /**
mbed_official 330:c80ac197fa6a 606 * @brief gets counter of the tx buffer.
mbed_official 330:c80ac197fa6a 607 * @param USBx: USB peripheral instance register address.
mbed_official 330:c80ac197fa6a 608 * @param bEpNum: Endpoint Number.
mbed_official 330:c80ac197fa6a 609 * @retval Counter value
mbed_official 330:c80ac197fa6a 610 */
mbed_official 330:c80ac197fa6a 611 #define PCD_GET_EP_TX_CNT(USBx, bEpNum)((uint16_t)(*PCD_EP_TX_CNT(USBx, bEpNum)) & 0x3ff)
mbed_official 330:c80ac197fa6a 612 #define PCD_GET_EP_RX_CNT(USBx, bEpNum)((uint16_t)(*PCD_EP_RX_CNT(USBx, bEpNum)) & 0x3ff)
mbed_official 330:c80ac197fa6a 613
mbed_official 330:c80ac197fa6a 614 /**
mbed_official 330:c80ac197fa6a 615 * @brief Sets buffer 0/1 address in a double buffer endpoint.
mbed_official 330:c80ac197fa6a 616 * @param USBx: USB peripheral instance register address.
mbed_official 330:c80ac197fa6a 617 * @param bEpNum: Endpoint Number.
mbed_official 330:c80ac197fa6a 618 * @param wBuf0Addr: buffer 0 address.
mbed_official 330:c80ac197fa6a 619 * @retval Counter value
mbed_official 330:c80ac197fa6a 620 */
mbed_official 330:c80ac197fa6a 621 #define PCD_SET_EP_DBUF0_ADDR(USBx, bEpNum,wBuf0Addr) {PCD_SET_EP_TX_ADDRESS(USBx, bEpNum, wBuf0Addr);}
mbed_official 330:c80ac197fa6a 622 #define PCD_SET_EP_DBUF1_ADDR(USBx, bEpNum,wBuf1Addr) {PCD_SET_EP_RX_ADDRESS(USBx, bEpNum, wBuf1Addr);}
mbed_official 330:c80ac197fa6a 623
mbed_official 330:c80ac197fa6a 624 /**
mbed_official 330:c80ac197fa6a 625 * @brief Sets addresses in a double buffer endpoint.
mbed_official 330:c80ac197fa6a 626 * @param USBx: USB peripheral instance register address.
mbed_official 330:c80ac197fa6a 627 * @param bEpNum: Endpoint Number.
mbed_official 330:c80ac197fa6a 628 * @param wBuf0Addr: buffer 0 address.
mbed_official 330:c80ac197fa6a 629 * @param wBuf1Addr = buffer 1 address.
mbed_official 330:c80ac197fa6a 630 * @retval None
mbed_official 330:c80ac197fa6a 631 */
mbed_official 330:c80ac197fa6a 632 #define PCD_SET_EP_DBUF_ADDR(USBx, bEpNum,wBuf0Addr,wBuf1Addr) { \
mbed_official 330:c80ac197fa6a 633 PCD_SET_EP_DBUF0_ADDR(USBx, bEpNum, wBuf0Addr);\
mbed_official 330:c80ac197fa6a 634 PCD_SET_EP_DBUF1_ADDR(USBx, bEpNum, wBuf1Addr);\
mbed_official 330:c80ac197fa6a 635 } /* PCD_SET_EP_DBUF_ADDR */
mbed_official 330:c80ac197fa6a 636
mbed_official 330:c80ac197fa6a 637 /**
mbed_official 330:c80ac197fa6a 638 * @brief Gets buffer 0/1 address of a double buffer endpoint.
mbed_official 330:c80ac197fa6a 639 * @param USBx: USB peripheral instance register address.
mbed_official 330:c80ac197fa6a 640 * @param bEpNum: Endpoint Number.
mbed_official 330:c80ac197fa6a 641 * @retval None
mbed_official 330:c80ac197fa6a 642 */
mbed_official 330:c80ac197fa6a 643 #define PCD_GET_EP_DBUF0_ADDR(USBx, bEpNum) (PCD_GET_EP_TX_ADDRESS(USBx, bEpNum))
mbed_official 330:c80ac197fa6a 644 #define PCD_GET_EP_DBUF1_ADDR(USBx, bEpNum) (PCD_GET_EP_RX_ADDRESS(USBx, bEpNum))
mbed_official 330:c80ac197fa6a 645
mbed_official 330:c80ac197fa6a 646 /**
mbed_official 330:c80ac197fa6a 647 * @brief Gets buffer 0/1 address of a double buffer endpoint.
mbed_official 330:c80ac197fa6a 648 * @param USBx: USB peripheral instance register address.
mbed_official 330:c80ac197fa6a 649 * @param bEpNum: Endpoint Number.
mbed_official 330:c80ac197fa6a 650 * @param bDir: endpoint dir EP_DBUF_OUT = OUT
mbed_official 330:c80ac197fa6a 651 * EP_DBUF_IN = IN
mbed_official 330:c80ac197fa6a 652 * @param wCount: Counter value
mbed_official 330:c80ac197fa6a 653 * @retval None
mbed_official 330:c80ac197fa6a 654 */
mbed_official 330:c80ac197fa6a 655 #define PCD_SET_EP_DBUF0_CNT(USBx, bEpNum, bDir, wCount) { \
mbed_official 330:c80ac197fa6a 656 if(bDir == PCD_EP_DBUF_OUT)\
mbed_official 330:c80ac197fa6a 657 /* OUT endpoint */ \
mbed_official 330:c80ac197fa6a 658 {PCD_SET_EP_RX_DBUF0_CNT(USBx, bEpNum,wCount);} \
mbed_official 330:c80ac197fa6a 659 else if(bDir == PCD_EP_DBUF_IN)\
mbed_official 330:c80ac197fa6a 660 /* IN endpoint */ \
mbed_official 330:c80ac197fa6a 661 *PCD_EP_TX_CNT(USBx, bEpNum) = (uint32_t)wCount; \
mbed_official 330:c80ac197fa6a 662 } /* SetEPDblBuf0Count*/
mbed_official 330:c80ac197fa6a 663
mbed_official 330:c80ac197fa6a 664 #define PCD_SET_EP_DBUF1_CNT(USBx, bEpNum, bDir, wCount) { \
mbed_official 330:c80ac197fa6a 665 if(bDir == PCD_EP_DBUF_OUT)\
mbed_official 330:c80ac197fa6a 666 /* OUT endpoint */ \
mbed_official 330:c80ac197fa6a 667 {PCD_SET_EP_RX_CNT(USBx, bEpNum,wCount);}\
mbed_official 330:c80ac197fa6a 668 else if(bDir == PCD_EP_DBUF_IN)\
mbed_official 330:c80ac197fa6a 669 /* IN endpoint */\
mbed_official 330:c80ac197fa6a 670 *PCD_EP_RX_CNT(USBx, bEpNum) = (uint32_t)wCount; \
mbed_official 330:c80ac197fa6a 671 } /* SetEPDblBuf1Count */
mbed_official 330:c80ac197fa6a 672
mbed_official 330:c80ac197fa6a 673 #define PCD_SET_EP_DBUF_CNT(USBx, bEpNum, bDir, wCount) {\
mbed_official 330:c80ac197fa6a 674 PCD_SET_EP_DBUF0_CNT(USBx, bEpNum, bDir, wCount); \
mbed_official 330:c80ac197fa6a 675 PCD_SET_EP_DBUF1_CNT(USBx, bEpNum, bDir, wCount); \
mbed_official 330:c80ac197fa6a 676 } /* PCD_SET_EP_DBUF_CNT */
mbed_official 330:c80ac197fa6a 677
mbed_official 330:c80ac197fa6a 678 /**
mbed_official 330:c80ac197fa6a 679 * @brief Gets buffer 0/1 rx/tx counter for double buffering.
mbed_official 330:c80ac197fa6a 680 * @param USBx: USB peripheral instance register address.
mbed_official 330:c80ac197fa6a 681 * @param bEpNum: Endpoint Number.
mbed_official 330:c80ac197fa6a 682 * @retval None
mbed_official 330:c80ac197fa6a 683 */
mbed_official 330:c80ac197fa6a 684 #define PCD_GET_EP_DBUF0_CNT(USBx, bEpNum) (PCD_GET_EP_TX_CNT(USBx, bEpNum))
mbed_official 330:c80ac197fa6a 685 #define PCD_GET_EP_DBUF1_CNT(USBx, bEpNum) (PCD_GET_EP_RX_CNT(USBx, bEpNum))
mbed_official 330:c80ac197fa6a 686
mbed_official 330:c80ac197fa6a 687
mbed_official 330:c80ac197fa6a 688 /**
mbed_official 330:c80ac197fa6a 689 * @}
mbed_official 330:c80ac197fa6a 690 */
mbed_official 330:c80ac197fa6a 691
mbed_official 330:c80ac197fa6a 692 /* Exported functions --------------------------------------------------------*/
mbed_official 330:c80ac197fa6a 693
mbed_official 330:c80ac197fa6a 694 /** @addtogroup PCD_Exported_Functions
mbed_official 330:c80ac197fa6a 695 * @{
mbed_official 330:c80ac197fa6a 696 */
mbed_official 330:c80ac197fa6a 697
mbed_official 330:c80ac197fa6a 698 /** @addtogroup PCD_Exported_Functions_Group1 Initialization and de-initialization functions
mbed_official 330:c80ac197fa6a 699 * @{
mbed_official 330:c80ac197fa6a 700 */
mbed_official 330:c80ac197fa6a 701 /* Initialization/de-initialization functions **********************************/
mbed_official 330:c80ac197fa6a 702 HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd);
mbed_official 330:c80ac197fa6a 703 HAL_StatusTypeDef HAL_PCD_DeInit (PCD_HandleTypeDef *hpcd);
mbed_official 330:c80ac197fa6a 704 void HAL_PCD_MspInit(PCD_HandleTypeDef *hpcd);
mbed_official 330:c80ac197fa6a 705 void HAL_PCD_MspDeInit(PCD_HandleTypeDef *hpcd);
mbed_official 330:c80ac197fa6a 706
mbed_official 330:c80ac197fa6a 707 /**
mbed_official 330:c80ac197fa6a 708 * @}
mbed_official 330:c80ac197fa6a 709 */
mbed_official 330:c80ac197fa6a 710
mbed_official 330:c80ac197fa6a 711 /** @addtogroup PCD_Exported_Functions_Group2 Input and Output operation functions
mbed_official 330:c80ac197fa6a 712 * @{
mbed_official 330:c80ac197fa6a 713 */
mbed_official 330:c80ac197fa6a 714 /* I/O operation functions *****************************************************/
mbed_official 330:c80ac197fa6a 715 /* Non-Blocking mode: Interrupt */
mbed_official 330:c80ac197fa6a 716 HAL_StatusTypeDef HAL_PCD_Start(PCD_HandleTypeDef *hpcd);
mbed_official 330:c80ac197fa6a 717 HAL_StatusTypeDef HAL_PCD_Stop(PCD_HandleTypeDef *hpcd);
mbed_official 330:c80ac197fa6a 718 void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd);
mbed_official 330:c80ac197fa6a 719
mbed_official 330:c80ac197fa6a 720 void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum);
mbed_official 330:c80ac197fa6a 721 void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum);
mbed_official 330:c80ac197fa6a 722 void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd);
mbed_official 330:c80ac197fa6a 723 void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd);
mbed_official 330:c80ac197fa6a 724 void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd);
mbed_official 330:c80ac197fa6a 725 void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd);
mbed_official 330:c80ac197fa6a 726 void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd);
mbed_official 330:c80ac197fa6a 727 void HAL_PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum);
mbed_official 330:c80ac197fa6a 728 void HAL_PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum);
mbed_official 330:c80ac197fa6a 729 void HAL_PCD_ConnectCallback(PCD_HandleTypeDef *hpcd);
mbed_official 330:c80ac197fa6a 730 void HAL_PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd);
mbed_official 330:c80ac197fa6a 731
mbed_official 330:c80ac197fa6a 732 /**
mbed_official 330:c80ac197fa6a 733 * @}
mbed_official 330:c80ac197fa6a 734 */
mbed_official 330:c80ac197fa6a 735
mbed_official 330:c80ac197fa6a 736 /** @addtogroup PCD_Exported_Functions_Group3 Peripheral Control functions
mbed_official 330:c80ac197fa6a 737 * @{
mbed_official 330:c80ac197fa6a 738 */
mbed_official 330:c80ac197fa6a 739 /* Peripheral Control functions ************************************************/
mbed_official 330:c80ac197fa6a 740 HAL_StatusTypeDef HAL_PCD_DevConnect(PCD_HandleTypeDef *hpcd);
mbed_official 330:c80ac197fa6a 741 HAL_StatusTypeDef HAL_PCD_DevDisconnect(PCD_HandleTypeDef *hpcd);
mbed_official 330:c80ac197fa6a 742 HAL_StatusTypeDef HAL_PCD_SetAddress(PCD_HandleTypeDef *hpcd, uint8_t address);
mbed_official 330:c80ac197fa6a 743 HAL_StatusTypeDef HAL_PCD_EP_Open(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint16_t ep_mps, uint8_t ep_type);
mbed_official 330:c80ac197fa6a 744 HAL_StatusTypeDef HAL_PCD_EP_Close(PCD_HandleTypeDef *hpcd, uint8_t ep_addr);
mbed_official 330:c80ac197fa6a 745 HAL_StatusTypeDef HAL_PCD_EP_Receive(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len);
mbed_official 330:c80ac197fa6a 746 HAL_StatusTypeDef HAL_PCD_EP_Transmit(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len);
mbed_official 330:c80ac197fa6a 747 uint16_t HAL_PCD_EP_GetRxCount(PCD_HandleTypeDef *hpcd, uint8_t ep_addr);
mbed_official 330:c80ac197fa6a 748 HAL_StatusTypeDef HAL_PCD_EP_SetStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr);
mbed_official 330:c80ac197fa6a 749 HAL_StatusTypeDef HAL_PCD_EP_ClrStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr);
mbed_official 330:c80ac197fa6a 750 HAL_StatusTypeDef HAL_PCD_EP_Flush(PCD_HandleTypeDef *hpcd, uint8_t ep_addr);
mbed_official 330:c80ac197fa6a 751 HAL_StatusTypeDef HAL_PCD_ActiveRemoteWakeup(PCD_HandleTypeDef *hpcd);
mbed_official 330:c80ac197fa6a 752 HAL_StatusTypeDef HAL_PCD_DeActiveRemoteWakeup(PCD_HandleTypeDef *hpcd);
mbed_official 330:c80ac197fa6a 753 /**
mbed_official 330:c80ac197fa6a 754 * @}
mbed_official 330:c80ac197fa6a 755 */
mbed_official 330:c80ac197fa6a 756
mbed_official 330:c80ac197fa6a 757 /** @addtogroup PCD_Exported_Functions_Group4 Peripheral State functions
mbed_official 330:c80ac197fa6a 758 * @{
mbed_official 330:c80ac197fa6a 759 */
mbed_official 330:c80ac197fa6a 760 /* Peripheral State functions **************************************************/
mbed_official 330:c80ac197fa6a 761 PCD_StateTypeDef HAL_PCD_GetState(PCD_HandleTypeDef *hpcd);
mbed_official 330:c80ac197fa6a 762 /**
mbed_official 330:c80ac197fa6a 763 * @}
mbed_official 330:c80ac197fa6a 764 */
mbed_official 330:c80ac197fa6a 765
mbed_official 330:c80ac197fa6a 766 /** @addtogroup PCDEx_Private_Functions PCD Extended Private Functions
mbed_official 330:c80ac197fa6a 767 * @{
mbed_official 330:c80ac197fa6a 768 */
mbed_official 330:c80ac197fa6a 769 void PCD_WritePMA(USB_TypeDef *USBx, uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes);
mbed_official 330:c80ac197fa6a 770 void PCD_ReadPMA(USB_TypeDef *USBx, uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes);
mbed_official 330:c80ac197fa6a 771 /**
mbed_official 330:c80ac197fa6a 772 * @}
mbed_official 330:c80ac197fa6a 773 */
mbed_official 330:c80ac197fa6a 774
mbed_official 330:c80ac197fa6a 775 /**
mbed_official 330:c80ac197fa6a 776 * @}
mbed_official 330:c80ac197fa6a 777 */
mbed_official 330:c80ac197fa6a 778
mbed_official 330:c80ac197fa6a 779 /**
mbed_official 330:c80ac197fa6a 780 * @}
mbed_official 330:c80ac197fa6a 781 */
mbed_official 330:c80ac197fa6a 782
mbed_official 330:c80ac197fa6a 783 /**
mbed_official 330:c80ac197fa6a 784 * @}
mbed_official 330:c80ac197fa6a 785 */
mbed_official 330:c80ac197fa6a 786 #endif /* STM32F302xE || STM32F303xE || */
mbed_official 330:c80ac197fa6a 787 /* STM32F302xC || STM32F303xC || */
mbed_official 330:c80ac197fa6a 788 /* STM32F302x8 || */
mbed_official 330:c80ac197fa6a 789 /* STM32F373xC */
mbed_official 330:c80ac197fa6a 790
mbed_official 330:c80ac197fa6a 791 #ifdef __cplusplus
mbed_official 330:c80ac197fa6a 792 }
mbed_official 330:c80ac197fa6a 793 #endif
mbed_official 330:c80ac197fa6a 794
mbed_official 330:c80ac197fa6a 795
mbed_official 330:c80ac197fa6a 796 #endif /* __STM32F3xx_HAL_PCD_H */
mbed_official 330:c80ac197fa6a 797
mbed_official 330:c80ac197fa6a 798 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/