1 /** 2 ****************************************************************************** 3 * @file stm32f4xx_hal_pcd.h 4 * @author MCD Application Team 5 * @brief Header file of PCD HAL module. 6 ****************************************************************************** 7 * @attention 8 * 9 * Copyright (c) 2016 STMicroelectronics. 10 * All rights reserved. 11 * 12 * This software is licensed under terms that can be found in the LICENSE file 13 * in the root directory of this software component. 14 * If no LICENSE file comes with this software, it is provided AS-IS. 15 * 16 ****************************************************************************** 17 */ 18 19 /* Define to prevent recursive inclusion -------------------------------------*/ 20 #ifndef STM32F4xx_HAL_PCD_H 21 #define STM32F4xx_HAL_PCD_H 22 23 #ifdef __cplusplus 24 extern "C" { 25 #endif 26 27 /* Includes ------------------------------------------------------------------*/ 28 #include "stm32f4xx_ll_usb.h" 29 30 #if defined (USB_OTG_FS) || defined (USB_OTG_HS) 31 32 /** @addtogroup STM32F4xx_HAL_Driver 33 * @{ 34 */ 35 36 /** @addtogroup PCD 37 * @{ 38 */ 39 40 /* Exported types ------------------------------------------------------------*/ 41 /** @defgroup PCD_Exported_Types PCD Exported Types 42 * @{ 43 */ 44 45 /** 46 * @brief PCD State structure definition 47 */ 48 typedef enum 49 { 50 HAL_PCD_STATE_RESET = 0x00, 51 HAL_PCD_STATE_READY = 0x01, 52 HAL_PCD_STATE_ERROR = 0x02, 53 HAL_PCD_STATE_BUSY = 0x03, 54 HAL_PCD_STATE_TIMEOUT = 0x04 55 } PCD_StateTypeDef; 56 57 /* Device LPM suspend state */ 58 typedef enum 59 { 60 LPM_L0 = 0x00, /* on */ 61 LPM_L1 = 0x01, /* LPM L1 sleep */ 62 LPM_L2 = 0x02, /* suspend */ 63 LPM_L3 = 0x03, /* off */ 64 } PCD_LPM_StateTypeDef; 65 66 typedef enum 67 { 68 PCD_LPM_L0_ACTIVE = 0x00, /* on */ 69 PCD_LPM_L1_ACTIVE = 0x01, /* LPM L1 sleep */ 70 } PCD_LPM_MsgTypeDef; 71 72 typedef enum 73 { 74 PCD_BCD_ERROR = 0xFF, 75 PCD_BCD_CONTACT_DETECTION = 0xFE, 76 PCD_BCD_STD_DOWNSTREAM_PORT = 0xFD, 77 PCD_BCD_CHARGING_DOWNSTREAM_PORT = 0xFC, 78 PCD_BCD_DEDICATED_CHARGING_PORT = 0xFB, 79 PCD_BCD_DISCOVERY_COMPLETED = 0x00, 80 81 } PCD_BCD_MsgTypeDef; 82 83 #if defined (USB_OTG_FS) || defined (USB_OTG_HS) 84 typedef USB_OTG_GlobalTypeDef PCD_TypeDef; 85 typedef USB_OTG_CfgTypeDef PCD_InitTypeDef; 86 typedef USB_OTG_EPTypeDef PCD_EPTypeDef; 87 #endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */ 88 89 /** 90 * @brief PCD Handle Structure definition 91 */ 92 #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) 93 typedef struct __PCD_HandleTypeDef 94 #else 95 typedef struct 96 #endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ 97 { 98 PCD_TypeDef *Instance; /*!< Register base address */ 99 PCD_InitTypeDef Init; /*!< PCD required parameters */ 100 __IO uint8_t USB_Address; /*!< USB Address */ 101 PCD_EPTypeDef IN_ep[16]; /*!< IN endpoint parameters */ 102 PCD_EPTypeDef OUT_ep[16]; /*!< OUT endpoint parameters */ 103 HAL_LockTypeDef Lock; /*!< PCD peripheral status */ 104 __IO PCD_StateTypeDef State; /*!< PCD communication state */ 105 __IO uint32_t ErrorCode; /*!< PCD Error code */ 106 uint32_t Setup[12]; /*!< Setup packet buffer */ 107 PCD_LPM_StateTypeDef LPM_State; /*!< LPM State */ 108 uint32_t BESL; 109 uint32_t FrameNumber; /*!< Store Current Frame number */ 110 111 112 uint32_t lpm_active; /*!< Enable or disable the Link Power Management . 113 This parameter can be set to ENABLE or DISABLE */ 114 115 uint32_t battery_charging_active; /*!< Enable or disable Battery charging. 116 This parameter can be set to ENABLE or DISABLE */ 117 void *pData; /*!< Pointer to upper stack Handler */ 118 119 #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) 120 void (* SOFCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD SOF callback */ 121 void (* SetupStageCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Setup Stage callback */ 122 void (* ResetCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Reset callback */ 123 void (* SuspendCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Suspend callback */ 124 void (* ResumeCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Resume callback */ 125 void (* ConnectCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Connect callback */ 126 void (* DisconnectCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Disconnect callback */ 127 128 void (* DataOutStageCallback)(struct __PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< USB OTG PCD Data OUT Stage callback */ 129 void (* DataInStageCallback)(struct __PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< USB OTG PCD Data IN Stage callback */ 130 void (* ISOOUTIncompleteCallback)(struct __PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< USB OTG PCD ISO OUT Incomplete callback */ 131 void (* ISOINIncompleteCallback)(struct __PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< USB OTG PCD ISO IN Incomplete callback */ 132 void (* BCDCallback)(struct __PCD_HandleTypeDef *hpcd, PCD_BCD_MsgTypeDef msg); /*!< USB OTG PCD BCD callback */ 133 void (* LPMCallback)(struct __PCD_HandleTypeDef *hpcd, PCD_LPM_MsgTypeDef msg); /*!< USB OTG PCD LPM callback */ 134 135 void (* MspInitCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Msp Init callback */ 136 void (* MspDeInitCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Msp DeInit callback */ 137 #endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ 138 } PCD_HandleTypeDef; 139 140 /** 141 * @} 142 */ 143 144 /* Include PCD HAL Extended module */ 145 #include "stm32f4xx_hal_pcd_ex.h" 146 147 /* Exported constants --------------------------------------------------------*/ 148 /** @defgroup PCD_Exported_Constants PCD Exported Constants 149 * @{ 150 */ 151 152 /** @defgroup PCD_Speed PCD Speed 153 * @{ 154 */ 155 #define PCD_SPEED_HIGH USBD_HS_SPEED 156 #define PCD_SPEED_HIGH_IN_FULL USBD_HSINFS_SPEED 157 #define PCD_SPEED_FULL USBD_FS_SPEED 158 /** 159 * @} 160 */ 161 162 /** @defgroup PCD_PHY_Module PCD PHY Module 163 * @{ 164 */ 165 #define PCD_PHY_ULPI 1U 166 #define PCD_PHY_EMBEDDED 2U 167 #define PCD_PHY_UTMI 3U 168 /** 169 * @} 170 */ 171 172 /** @defgroup PCD_Error_Code_definition PCD Error Code definition 173 * @brief PCD Error Code definition 174 * @{ 175 */ 176 #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) 177 #define HAL_PCD_ERROR_INVALID_CALLBACK (0x00000010U) /*!< Invalid Callback error */ 178 #endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ 179 180 /** 181 * @} 182 */ 183 184 /** 185 * @} 186 */ 187 188 /* Exported macros -----------------------------------------------------------*/ 189 /** @defgroup PCD_Exported_Macros PCD Exported Macros 190 * @brief macros to handle interrupts and specific clock configurations 191 * @{ 192 */ 193 #if defined (USB_OTG_FS) || defined (USB_OTG_HS) 194 #define __HAL_PCD_ENABLE(__HANDLE__) (void)USB_EnableGlobalInt ((__HANDLE__)->Instance) 195 #define __HAL_PCD_DISABLE(__HANDLE__) (void)USB_DisableGlobalInt ((__HANDLE__)->Instance) 196 197 #define __HAL_PCD_GET_FLAG(__HANDLE__, __INTERRUPT__) \ 198 ((USB_ReadInterrupts((__HANDLE__)->Instance) & (__INTERRUPT__)) == (__INTERRUPT__)) 199 200 #define __HAL_PCD_CLEAR_FLAG(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->GINTSTS) &= (__INTERRUPT__)) 201 #define __HAL_PCD_IS_INVALID_INTERRUPT(__HANDLE__) (USB_ReadInterrupts((__HANDLE__)->Instance) == 0U) 202 203 #define __HAL_PCD_UNGATE_PHYCLOCK(__HANDLE__) \ 204 *(__IO uint32_t *)((uint32_t)((__HANDLE__)->Instance) + USB_OTG_PCGCCTL_BASE) &= ~(USB_OTG_PCGCCTL_STOPCLK) 205 206 #define __HAL_PCD_GATE_PHYCLOCK(__HANDLE__) \ 207 *(__IO uint32_t *)((uint32_t)((__HANDLE__)->Instance) + USB_OTG_PCGCCTL_BASE) |= USB_OTG_PCGCCTL_STOPCLK 208 209 #define __HAL_PCD_IS_PHY_SUSPENDED(__HANDLE__) \ 210 ((*(__IO uint32_t *)((uint32_t)((__HANDLE__)->Instance) + USB_OTG_PCGCCTL_BASE)) & 0x10U) 211 212 #define __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_IT() EXTI->IMR |= (USB_OTG_HS_WAKEUP_EXTI_LINE) 213 #define __HAL_USB_OTG_HS_WAKEUP_EXTI_DISABLE_IT() EXTI->IMR &= ~(USB_OTG_HS_WAKEUP_EXTI_LINE) 214 #define __HAL_USB_OTG_HS_WAKEUP_EXTI_GET_FLAG() EXTI->PR & (USB_OTG_HS_WAKEUP_EXTI_LINE) 215 #define __HAL_USB_OTG_HS_WAKEUP_EXTI_CLEAR_FLAG() EXTI->PR = (USB_OTG_HS_WAKEUP_EXTI_LINE) 216 217 #define __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_RISING_EDGE() \ 218 do { \ 219 EXTI->FTSR &= ~(USB_OTG_HS_WAKEUP_EXTI_LINE); \ 220 EXTI->RTSR |= USB_OTG_HS_WAKEUP_EXTI_LINE; \ 221 } while(0U) 222 #define __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_IT() EXTI->IMR |= USB_OTG_FS_WAKEUP_EXTI_LINE 223 #define __HAL_USB_OTG_FS_WAKEUP_EXTI_DISABLE_IT() EXTI->IMR &= ~(USB_OTG_FS_WAKEUP_EXTI_LINE) 224 #define __HAL_USB_OTG_FS_WAKEUP_EXTI_GET_FLAG() EXTI->PR & (USB_OTG_FS_WAKEUP_EXTI_LINE) 225 #define __HAL_USB_OTG_FS_WAKEUP_EXTI_CLEAR_FLAG() EXTI->PR = USB_OTG_FS_WAKEUP_EXTI_LINE 226 227 #define __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_RISING_EDGE() \ 228 do { \ 229 EXTI->FTSR &= ~(USB_OTG_FS_WAKEUP_EXTI_LINE); \ 230 EXTI->RTSR |= USB_OTG_FS_WAKEUP_EXTI_LINE; \ 231 } while(0U) 232 #endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */ 233 234 235 /** 236 * @} 237 */ 238 239 /* Exported functions --------------------------------------------------------*/ 240 /** @addtogroup PCD_Exported_Functions PCD Exported Functions 241 * @{ 242 */ 243 244 /* Initialization/de-initialization functions ********************************/ 245 /** @addtogroup PCD_Exported_Functions_Group1 Initialization and de-initialization functions 246 * @{ 247 */ 248 HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd); 249 HAL_StatusTypeDef HAL_PCD_DeInit(PCD_HandleTypeDef *hpcd); 250 void HAL_PCD_MspInit(PCD_HandleTypeDef *hpcd); 251 void HAL_PCD_MspDeInit(PCD_HandleTypeDef *hpcd); 252 253 #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) 254 /** @defgroup HAL_PCD_Callback_ID_enumeration_definition HAL USB OTG PCD Callback ID enumeration definition 255 * @brief HAL USB OTG PCD Callback ID enumeration definition 256 * @{ 257 */ 258 typedef enum 259 { 260 HAL_PCD_SOF_CB_ID = 0x01, /*!< USB PCD SOF callback ID */ 261 HAL_PCD_SETUPSTAGE_CB_ID = 0x02, /*!< USB PCD Setup Stage callback ID */ 262 HAL_PCD_RESET_CB_ID = 0x03, /*!< USB PCD Reset callback ID */ 263 HAL_PCD_SUSPEND_CB_ID = 0x04, /*!< USB PCD Suspend callback ID */ 264 HAL_PCD_RESUME_CB_ID = 0x05, /*!< USB PCD Resume callback ID */ 265 HAL_PCD_CONNECT_CB_ID = 0x06, /*!< USB PCD Connect callback ID */ 266 HAL_PCD_DISCONNECT_CB_ID = 0x07, /*!< USB PCD Disconnect callback ID */ 267 268 HAL_PCD_MSPINIT_CB_ID = 0x08, /*!< USB PCD MspInit callback ID */ 269 HAL_PCD_MSPDEINIT_CB_ID = 0x09 /*!< USB PCD MspDeInit callback ID */ 270 271 } HAL_PCD_CallbackIDTypeDef; 272 /** 273 * @} 274 */ 275 276 /** @defgroup HAL_PCD_Callback_pointer_definition HAL USB OTG PCD Callback pointer definition 277 * @brief HAL USB OTG PCD Callback pointer definition 278 * @{ 279 */ 280 281 typedef void (*pPCD_CallbackTypeDef)(PCD_HandleTypeDef *hpcd); /*!< pointer to a common USB OTG PCD callback function */ 282 typedef void (*pPCD_DataOutStageCallbackTypeDef)(PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< pointer to USB OTG PCD Data OUT Stage callback */ 283 typedef void (*pPCD_DataInStageCallbackTypeDef)(PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< pointer to USB OTG PCD Data IN Stage callback */ 284 typedef void (*pPCD_IsoOutIncpltCallbackTypeDef)(PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< pointer to USB OTG PCD ISO OUT Incomplete callback */ 285 typedef void (*pPCD_IsoInIncpltCallbackTypeDef)(PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< pointer to USB OTG PCD ISO IN Incomplete callback */ 286 typedef void (*pPCD_LpmCallbackTypeDef)(PCD_HandleTypeDef *hpcd, PCD_LPM_MsgTypeDef msg); /*!< pointer to USB OTG PCD LPM callback */ 287 typedef void (*pPCD_BcdCallbackTypeDef)(PCD_HandleTypeDef *hpcd, PCD_BCD_MsgTypeDef msg); /*!< pointer to USB OTG PCD BCD callback */ 288 289 /** 290 * @} 291 */ 292 293 HAL_StatusTypeDef HAL_PCD_RegisterCallback(PCD_HandleTypeDef *hpcd, HAL_PCD_CallbackIDTypeDef CallbackID, 294 pPCD_CallbackTypeDef pCallback); 295 296 HAL_StatusTypeDef HAL_PCD_UnRegisterCallback(PCD_HandleTypeDef *hpcd, HAL_PCD_CallbackIDTypeDef CallbackID); 297 298 HAL_StatusTypeDef HAL_PCD_RegisterDataOutStageCallback(PCD_HandleTypeDef *hpcd, 299 pPCD_DataOutStageCallbackTypeDef pCallback); 300 301 HAL_StatusTypeDef HAL_PCD_UnRegisterDataOutStageCallback(PCD_HandleTypeDef *hpcd); 302 303 HAL_StatusTypeDef HAL_PCD_RegisterDataInStageCallback(PCD_HandleTypeDef *hpcd, 304 pPCD_DataInStageCallbackTypeDef pCallback); 305 306 HAL_StatusTypeDef HAL_PCD_UnRegisterDataInStageCallback(PCD_HandleTypeDef *hpcd); 307 308 HAL_StatusTypeDef HAL_PCD_RegisterIsoOutIncpltCallback(PCD_HandleTypeDef *hpcd, 309 pPCD_IsoOutIncpltCallbackTypeDef pCallback); 310 311 HAL_StatusTypeDef HAL_PCD_UnRegisterIsoOutIncpltCallback(PCD_HandleTypeDef *hpcd); 312 313 HAL_StatusTypeDef HAL_PCD_RegisterIsoInIncpltCallback(PCD_HandleTypeDef *hpcd, 314 pPCD_IsoInIncpltCallbackTypeDef pCallback); 315 316 HAL_StatusTypeDef HAL_PCD_UnRegisterIsoInIncpltCallback(PCD_HandleTypeDef *hpcd); 317 318 HAL_StatusTypeDef HAL_PCD_RegisterBcdCallback(PCD_HandleTypeDef *hpcd, pPCD_BcdCallbackTypeDef pCallback); 319 HAL_StatusTypeDef HAL_PCD_UnRegisterBcdCallback(PCD_HandleTypeDef *hpcd); 320 321 HAL_StatusTypeDef HAL_PCD_RegisterLpmCallback(PCD_HandleTypeDef *hpcd, pPCD_LpmCallbackTypeDef pCallback); 322 HAL_StatusTypeDef HAL_PCD_UnRegisterLpmCallback(PCD_HandleTypeDef *hpcd); 323 #endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ 324 /** 325 * @} 326 */ 327 328 /* I/O operation functions ***************************************************/ 329 /* Non-Blocking mode: Interrupt */ 330 /** @addtogroup PCD_Exported_Functions_Group2 Input and Output operation functions 331 * @{ 332 */ 333 HAL_StatusTypeDef HAL_PCD_Start(PCD_HandleTypeDef *hpcd); 334 HAL_StatusTypeDef HAL_PCD_Stop(PCD_HandleTypeDef *hpcd); 335 void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd); 336 void HAL_PCD_WKUP_IRQHandler(PCD_HandleTypeDef *hpcd); 337 338 void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd); 339 void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd); 340 void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd); 341 void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd); 342 void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd); 343 void HAL_PCD_ConnectCallback(PCD_HandleTypeDef *hpcd); 344 void HAL_PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd); 345 346 void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum); 347 void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum); 348 void HAL_PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum); 349 void HAL_PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum); 350 /** 351 * @} 352 */ 353 354 /* Peripheral Control functions **********************************************/ 355 /** @addtogroup PCD_Exported_Functions_Group3 Peripheral Control functions 356 * @{ 357 */ 358 HAL_StatusTypeDef HAL_PCD_DevConnect(PCD_HandleTypeDef *hpcd); 359 HAL_StatusTypeDef HAL_PCD_DevDisconnect(PCD_HandleTypeDef *hpcd); 360 HAL_StatusTypeDef HAL_PCD_SetAddress(PCD_HandleTypeDef *hpcd, uint8_t address); 361 HAL_StatusTypeDef HAL_PCD_EP_Open(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint16_t ep_mps, uint8_t ep_type); 362 HAL_StatusTypeDef HAL_PCD_EP_Close(PCD_HandleTypeDef *hpcd, uint8_t ep_addr); 363 HAL_StatusTypeDef HAL_PCD_EP_Receive(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len); 364 HAL_StatusTypeDef HAL_PCD_EP_Transmit(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len); 365 HAL_StatusTypeDef HAL_PCD_EP_SetStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr); 366 HAL_StatusTypeDef HAL_PCD_EP_ClrStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr); 367 HAL_StatusTypeDef HAL_PCD_EP_Flush(PCD_HandleTypeDef *hpcd, uint8_t ep_addr); 368 HAL_StatusTypeDef HAL_PCD_EP_Abort(PCD_HandleTypeDef *hpcd, uint8_t ep_addr); 369 HAL_StatusTypeDef HAL_PCD_ActivateRemoteWakeup(PCD_HandleTypeDef *hpcd); 370 HAL_StatusTypeDef HAL_PCD_DeActivateRemoteWakeup(PCD_HandleTypeDef *hpcd); 371 HAL_StatusTypeDef HAL_PCD_SetTestMode(PCD_HandleTypeDef *hpcd, uint8_t testmode); 372 373 uint32_t HAL_PCD_EP_GetRxCount(PCD_HandleTypeDef *hpcd, uint8_t ep_addr); 374 /** 375 * @} 376 */ 377 378 /* Peripheral State functions ************************************************/ 379 /** @addtogroup PCD_Exported_Functions_Group4 Peripheral State functions 380 * @{ 381 */ 382 PCD_StateTypeDef HAL_PCD_GetState(PCD_HandleTypeDef *hpcd); 383 /** 384 * @} 385 */ 386 387 /** 388 * @} 389 */ 390 391 /* Private constants ---------------------------------------------------------*/ 392 /** @defgroup PCD_Private_Constants PCD Private Constants 393 * @{ 394 */ 395 /** @defgroup USB_EXTI_Line_Interrupt USB EXTI line interrupt 396 * @{ 397 */ 398 #if defined (USB_OTG_FS) || defined (USB_OTG_HS) 399 #define USB_OTG_FS_WAKEUP_EXTI_LINE (0x1U << 18) /*!< USB FS EXTI Line WakeUp Interrupt */ 400 #define USB_OTG_HS_WAKEUP_EXTI_LINE (0x1U << 20) /*!< USB HS EXTI Line WakeUp Interrupt */ 401 #endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */ 402 403 404 /** 405 * @} 406 */ 407 /** 408 * @} 409 */ 410 411 #if defined (USB_OTG_FS) || defined (USB_OTG_HS) 412 #ifndef USB_OTG_DOEPINT_OTEPSPR 413 #define USB_OTG_DOEPINT_OTEPSPR (0x1UL << 5) /*!< Status Phase Received interrupt */ 414 #endif /* defined USB_OTG_DOEPINT_OTEPSPR */ 415 416 #ifndef USB_OTG_DOEPMSK_OTEPSPRM 417 #define USB_OTG_DOEPMSK_OTEPSPRM (0x1UL << 5) /*!< Setup Packet Received interrupt mask */ 418 #endif /* defined USB_OTG_DOEPMSK_OTEPSPRM */ 419 420 #ifndef USB_OTG_DOEPINT_NAK 421 #define USB_OTG_DOEPINT_NAK (0x1UL << 13) /*!< NAK interrupt */ 422 #endif /* defined USB_OTG_DOEPINT_NAK */ 423 424 #ifndef USB_OTG_DOEPMSK_NAKM 425 #define USB_OTG_DOEPMSK_NAKM (0x1UL << 13) /*!< OUT Packet NAK interrupt mask */ 426 #endif /* defined USB_OTG_DOEPMSK_NAKM */ 427 428 #ifndef USB_OTG_DOEPINT_STPKTRX 429 #define USB_OTG_DOEPINT_STPKTRX (0x1UL << 15) /*!< Setup Packet Received interrupt */ 430 #endif /* defined USB_OTG_DOEPINT_STPKTRX */ 431 432 #ifndef USB_OTG_DOEPMSK_NYETM 433 #define USB_OTG_DOEPMSK_NYETM (0x1UL << 14) /*!< Setup Packet Received interrupt mask */ 434 #endif /* defined USB_OTG_DOEPMSK_NYETM */ 435 #endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */ 436 437 /* Private macros ------------------------------------------------------------*/ 438 /** @defgroup PCD_Private_Macros PCD Private Macros 439 * @{ 440 */ 441 442 /** 443 * @} 444 */ 445 446 /** 447 * @} 448 */ 449 450 /** 451 * @} 452 */ 453 #endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */ 454 455 #ifdef __cplusplus 456 } 457 #endif 458 459 #endif /* STM32F4xx_HAL_PCD_H */ 460