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 10:45:10 2015 +0100
Revision:
630:825f75ca301e
Parent:
441:d2c15dda23c1
Synchronized with git revision 54fbe4144faf309c37205a5d39fa665daa919f10

Full URL: https://github.com/mbedmicro/mbed/commit/54fbe4144faf309c37205a5d39fa665daa919f10/

NUCLEO_F031K6 : Add new target

Who changed what in which revision?

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