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:
Wed Jul 01 09:45:11 2015 +0100
Revision:
579:53297373a894
Parent:
394:83f921546702
Synchronized with git revision d5b4d2ab9c47edb4dc5776e7177b0c2263459081

Full URL: https://github.com/mbedmicro/mbed/commit/d5b4d2ab9c47edb4dc5776e7177b0c2263459081/

Initial version of drivers for SAMR21

Who changed what in which revision?

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