STM32F479xx HAL User Manual
|
00001 /** 00002 ****************************************************************************** 00003 * @file stm32f4xx_hal_pcd.h 00004 * @author MCD Application Team 00005 * @brief Header file of PCD HAL module. 00006 ****************************************************************************** 00007 * @attention 00008 * 00009 * Copyright (c) 2016 STMicroelectronics. 00010 * All rights reserved. 00011 * 00012 * This software is licensed under terms that can be found in the LICENSE file 00013 * in the root directory of this software component. 00014 * If no LICENSE file comes with this software, it is provided AS-IS. 00015 * 00016 ****************************************************************************** 00017 */ 00018 00019 /* Define to prevent recursive inclusion -------------------------------------*/ 00020 #ifndef STM32F4xx_HAL_PCD_H 00021 #define STM32F4xx_HAL_PCD_H 00022 00023 #ifdef __cplusplus 00024 extern "C" { 00025 #endif 00026 00027 /* Includes ------------------------------------------------------------------*/ 00028 #include "stm32f4xx_ll_usb.h" 00029 00030 #if defined (USB_OTG_FS) || defined (USB_OTG_HS) 00031 00032 /** @addtogroup STM32F4xx_HAL_Driver 00033 * @{ 00034 */ 00035 00036 /** @addtogroup PCD 00037 * @{ 00038 */ 00039 00040 /* Exported types ------------------------------------------------------------*/ 00041 /** @defgroup PCD_Exported_Types PCD Exported Types 00042 * @{ 00043 */ 00044 00045 /** 00046 * @brief PCD State structure definition 00047 */ 00048 typedef enum 00049 { 00050 HAL_PCD_STATE_RESET = 0x00, 00051 HAL_PCD_STATE_READY = 0x01, 00052 HAL_PCD_STATE_ERROR = 0x02, 00053 HAL_PCD_STATE_BUSY = 0x03, 00054 HAL_PCD_STATE_TIMEOUT = 0x04 00055 } PCD_StateTypeDef; 00056 00057 /* Device LPM suspend state */ 00058 typedef enum 00059 { 00060 LPM_L0 = 0x00, /* on */ 00061 LPM_L1 = 0x01, /* LPM L1 sleep */ 00062 LPM_L2 = 0x02, /* suspend */ 00063 LPM_L3 = 0x03, /* off */ 00064 } PCD_LPM_StateTypeDef; 00065 00066 typedef enum 00067 { 00068 PCD_LPM_L0_ACTIVE = 0x00, /* on */ 00069 PCD_LPM_L1_ACTIVE = 0x01, /* LPM L1 sleep */ 00070 } PCD_LPM_MsgTypeDef; 00071 00072 typedef enum 00073 { 00074 PCD_BCD_ERROR = 0xFF, 00075 PCD_BCD_CONTACT_DETECTION = 0xFE, 00076 PCD_BCD_STD_DOWNSTREAM_PORT = 0xFD, 00077 PCD_BCD_CHARGING_DOWNSTREAM_PORT = 0xFC, 00078 PCD_BCD_DEDICATED_CHARGING_PORT = 0xFB, 00079 PCD_BCD_DISCOVERY_COMPLETED = 0x00, 00080 00081 } PCD_BCD_MsgTypeDef; 00082 00083 #if defined (USB_OTG_FS) || defined (USB_OTG_HS) 00084 typedef USB_OTG_GlobalTypeDef PCD_TypeDef; 00085 typedef USB_OTG_CfgTypeDef PCD_InitTypeDef; 00086 typedef USB_OTG_EPTypeDef PCD_EPTypeDef; 00087 #endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */ 00088 00089 /** 00090 * @brief PCD Handle Structure definition 00091 */ 00092 #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) 00093 typedef struct __PCD_HandleTypeDef 00094 #else 00095 typedef struct 00096 #endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ 00097 { 00098 PCD_TypeDef *Instance; /*!< Register base address */ 00099 PCD_InitTypeDef Init; /*!< PCD required parameters */ 00100 __IO uint8_t USB_Address; /*!< USB Address */ 00101 PCD_EPTypeDef IN_ep[16]; /*!< IN endpoint parameters */ 00102 PCD_EPTypeDef OUT_ep[16]; /*!< OUT endpoint parameters */ 00103 HAL_LockTypeDef Lock; /*!< PCD peripheral status */ 00104 __IO PCD_StateTypeDef State; /*!< PCD communication state */ 00105 __IO uint32_t ErrorCode; /*!< PCD Error code */ 00106 uint32_t Setup[12]; /*!< Setup packet buffer */ 00107 PCD_LPM_StateTypeDef LPM_State; /*!< LPM State */ 00108 uint32_t BESL; 00109 00110 00111 uint32_t lpm_active; /*!< Enable or disable the Link Power Management . 00112 This parameter can be set to ENABLE or DISABLE */ 00113 00114 uint32_t battery_charging_active; /*!< Enable or disable Battery charging. 00115 This parameter can be set to ENABLE or DISABLE */ 00116 void *pData; /*!< Pointer to upper stack Handler */ 00117 00118 #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) 00119 void (* SOFCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD SOF callback */ 00120 void (* SetupStageCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Setup Stage callback */ 00121 void (* ResetCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Reset callback */ 00122 void (* SuspendCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Suspend callback */ 00123 void (* ResumeCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Resume callback */ 00124 void (* ConnectCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Connect callback */ 00125 void (* DisconnectCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Disconnect callback */ 00126 00127 void (* DataOutStageCallback)(struct __PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< USB OTG PCD Data OUT Stage callback */ 00128 void (* DataInStageCallback)(struct __PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< USB OTG PCD Data IN Stage callback */ 00129 void (* ISOOUTIncompleteCallback)(struct __PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< USB OTG PCD ISO OUT Incomplete callback */ 00130 void (* ISOINIncompleteCallback)(struct __PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< USB OTG PCD ISO IN Incomplete callback */ 00131 void (* BCDCallback)(struct __PCD_HandleTypeDef *hpcd, PCD_BCD_MsgTypeDef msg); /*!< USB OTG PCD BCD callback */ 00132 void (* LPMCallback)(struct __PCD_HandleTypeDef *hpcd, PCD_LPM_MsgTypeDef msg); /*!< USB OTG PCD LPM callback */ 00133 00134 void (* MspInitCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Msp Init callback */ 00135 void (* MspDeInitCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Msp DeInit callback */ 00136 #endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ 00137 } PCD_HandleTypeDef; 00138 00139 /** 00140 * @} 00141 */ 00142 00143 /* Include PCD HAL Extended module */ 00144 #include "stm32f4xx_hal_pcd_ex.h" 00145 00146 /* Exported constants --------------------------------------------------------*/ 00147 /** @defgroup PCD_Exported_Constants PCD Exported Constants 00148 * @{ 00149 */ 00150 00151 /** @defgroup PCD_Speed PCD Speed 00152 * @{ 00153 */ 00154 #define PCD_SPEED_HIGH USBD_HS_SPEED 00155 #define PCD_SPEED_HIGH_IN_FULL USBD_HSINFS_SPEED 00156 #define PCD_SPEED_FULL USBD_FS_SPEED 00157 /** 00158 * @} 00159 */ 00160 00161 /** @defgroup PCD_PHY_Module PCD PHY Module 00162 * @{ 00163 */ 00164 #define PCD_PHY_ULPI 1U 00165 #define PCD_PHY_EMBEDDED 2U 00166 #define PCD_PHY_UTMI 3U 00167 /** 00168 * @} 00169 */ 00170 00171 /** @defgroup PCD_Error_Code_definition PCD Error Code definition 00172 * @brief PCD Error Code definition 00173 * @{ 00174 */ 00175 #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) 00176 #define HAL_PCD_ERROR_INVALID_CALLBACK (0x00000010U) /*!< Invalid Callback error */ 00177 #endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ 00178 00179 /** 00180 * @} 00181 */ 00182 00183 /** 00184 * @} 00185 */ 00186 00187 /* Exported macros -----------------------------------------------------------*/ 00188 /** @defgroup PCD_Exported_Macros PCD Exported Macros 00189 * @brief macros to handle interrupts and specific clock configurations 00190 * @{ 00191 */ 00192 #if defined (USB_OTG_FS) || defined (USB_OTG_HS) 00193 #define __HAL_PCD_ENABLE(__HANDLE__) (void)USB_EnableGlobalInt ((__HANDLE__)->Instance) 00194 #define __HAL_PCD_DISABLE(__HANDLE__) (void)USB_DisableGlobalInt ((__HANDLE__)->Instance) 00195 00196 #define __HAL_PCD_GET_FLAG(__HANDLE__, __INTERRUPT__) \ 00197 ((USB_ReadInterrupts((__HANDLE__)->Instance) & (__INTERRUPT__)) == (__INTERRUPT__)) 00198 00199 #define __HAL_PCD_CLEAR_FLAG(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->GINTSTS) &= (__INTERRUPT__)) 00200 #define __HAL_PCD_IS_INVALID_INTERRUPT(__HANDLE__) (USB_ReadInterrupts((__HANDLE__)->Instance) == 0U) 00201 00202 #define __HAL_PCD_UNGATE_PHYCLOCK(__HANDLE__) \ 00203 *(__IO uint32_t *)((uint32_t)((__HANDLE__)->Instance) + USB_OTG_PCGCCTL_BASE) &= ~(USB_OTG_PCGCCTL_STOPCLK) 00204 00205 #define __HAL_PCD_GATE_PHYCLOCK(__HANDLE__) \ 00206 *(__IO uint32_t *)((uint32_t)((__HANDLE__)->Instance) + USB_OTG_PCGCCTL_BASE) |= USB_OTG_PCGCCTL_STOPCLK 00207 00208 #define __HAL_PCD_IS_PHY_SUSPENDED(__HANDLE__) \ 00209 ((*(__IO uint32_t *)((uint32_t)((__HANDLE__)->Instance) + USB_OTG_PCGCCTL_BASE)) & 0x10U) 00210 00211 #define __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_IT() EXTI->IMR |= (USB_OTG_HS_WAKEUP_EXTI_LINE) 00212 #define __HAL_USB_OTG_HS_WAKEUP_EXTI_DISABLE_IT() EXTI->IMR &= ~(USB_OTG_HS_WAKEUP_EXTI_LINE) 00213 #define __HAL_USB_OTG_HS_WAKEUP_EXTI_GET_FLAG() EXTI->PR & (USB_OTG_HS_WAKEUP_EXTI_LINE) 00214 #define __HAL_USB_OTG_HS_WAKEUP_EXTI_CLEAR_FLAG() EXTI->PR = (USB_OTG_HS_WAKEUP_EXTI_LINE) 00215 00216 #define __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_RISING_EDGE() \ 00217 do { \ 00218 EXTI->FTSR &= ~(USB_OTG_HS_WAKEUP_EXTI_LINE); \ 00219 EXTI->RTSR |= USB_OTG_HS_WAKEUP_EXTI_LINE; \ 00220 } while(0U) 00221 #define __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_IT() EXTI->IMR |= USB_OTG_FS_WAKEUP_EXTI_LINE 00222 #define __HAL_USB_OTG_FS_WAKEUP_EXTI_DISABLE_IT() EXTI->IMR &= ~(USB_OTG_FS_WAKEUP_EXTI_LINE) 00223 #define __HAL_USB_OTG_FS_WAKEUP_EXTI_GET_FLAG() EXTI->PR & (USB_OTG_FS_WAKEUP_EXTI_LINE) 00224 #define __HAL_USB_OTG_FS_WAKEUP_EXTI_CLEAR_FLAG() EXTI->PR = USB_OTG_FS_WAKEUP_EXTI_LINE 00225 00226 #define __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_RISING_EDGE() \ 00227 do { \ 00228 EXTI->FTSR &= ~(USB_OTG_FS_WAKEUP_EXTI_LINE); \ 00229 EXTI->RTSR |= USB_OTG_FS_WAKEUP_EXTI_LINE; \ 00230 } while(0U) 00231 #endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */ 00232 00233 00234 /** 00235 * @} 00236 */ 00237 00238 /* Exported functions --------------------------------------------------------*/ 00239 /** @addtogroup PCD_Exported_Functions PCD Exported Functions 00240 * @{ 00241 */ 00242 00243 /* Initialization/de-initialization functions ********************************/ 00244 /** @addtogroup PCD_Exported_Functions_Group1 Initialization and de-initialization functions 00245 * @{ 00246 */ 00247 HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd); 00248 HAL_StatusTypeDef HAL_PCD_DeInit(PCD_HandleTypeDef *hpcd); 00249 void HAL_PCD_MspInit(PCD_HandleTypeDef *hpcd); 00250 void HAL_PCD_MspDeInit(PCD_HandleTypeDef *hpcd); 00251 00252 #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) 00253 /** @defgroup HAL_PCD_Callback_ID_enumeration_definition HAL USB OTG PCD Callback ID enumeration definition 00254 * @brief HAL USB OTG PCD Callback ID enumeration definition 00255 * @{ 00256 */ 00257 typedef enum 00258 { 00259 HAL_PCD_SOF_CB_ID = 0x01, /*!< USB PCD SOF callback ID */ 00260 HAL_PCD_SETUPSTAGE_CB_ID = 0x02, /*!< USB PCD Setup Stage callback ID */ 00261 HAL_PCD_RESET_CB_ID = 0x03, /*!< USB PCD Reset callback ID */ 00262 HAL_PCD_SUSPEND_CB_ID = 0x04, /*!< USB PCD Suspend callback ID */ 00263 HAL_PCD_RESUME_CB_ID = 0x05, /*!< USB PCD Resume callback ID */ 00264 HAL_PCD_CONNECT_CB_ID = 0x06, /*!< USB PCD Connect callback ID */ 00265 HAL_PCD_DISCONNECT_CB_ID = 0x07, /*!< USB PCD Disconnect callback ID */ 00266 00267 HAL_PCD_MSPINIT_CB_ID = 0x08, /*!< USB PCD MspInit callback ID */ 00268 HAL_PCD_MSPDEINIT_CB_ID = 0x09 /*!< USB PCD MspDeInit callback ID */ 00269 00270 } HAL_PCD_CallbackIDTypeDef; 00271 /** 00272 * @} 00273 */ 00274 00275 /** @defgroup HAL_PCD_Callback_pointer_definition HAL USB OTG PCD Callback pointer definition 00276 * @brief HAL USB OTG PCD Callback pointer definition 00277 * @{ 00278 */ 00279 00280 typedef void (*pPCD_CallbackTypeDef)(PCD_HandleTypeDef *hpcd); /*!< pointer to a common USB OTG PCD callback function */ 00281 typedef void (*pPCD_DataOutStageCallbackTypeDef)(PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< pointer to USB OTG PCD Data OUT Stage callback */ 00282 typedef void (*pPCD_DataInStageCallbackTypeDef)(PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< pointer to USB OTG PCD Data IN Stage callback */ 00283 typedef void (*pPCD_IsoOutIncpltCallbackTypeDef)(PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< pointer to USB OTG PCD ISO OUT Incomplete callback */ 00284 typedef void (*pPCD_IsoInIncpltCallbackTypeDef)(PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< pointer to USB OTG PCD ISO IN Incomplete callback */ 00285 typedef void (*pPCD_LpmCallbackTypeDef)(PCD_HandleTypeDef *hpcd, PCD_LPM_MsgTypeDef msg); /*!< pointer to USB OTG PCD LPM callback */ 00286 typedef void (*pPCD_BcdCallbackTypeDef)(PCD_HandleTypeDef *hpcd, PCD_BCD_MsgTypeDef msg); /*!< pointer to USB OTG PCD BCD callback */ 00287 00288 /** 00289 * @} 00290 */ 00291 00292 HAL_StatusTypeDef HAL_PCD_RegisterCallback(PCD_HandleTypeDef *hpcd, 00293 HAL_PCD_CallbackIDTypeDef CallbackID, 00294 pPCD_CallbackTypeDef pCallback); 00295 00296 HAL_StatusTypeDef HAL_PCD_UnRegisterCallback(PCD_HandleTypeDef *hpcd, 00297 HAL_PCD_CallbackIDTypeDef CallbackID); 00298 00299 HAL_StatusTypeDef HAL_PCD_RegisterDataOutStageCallback(PCD_HandleTypeDef *hpcd, 00300 pPCD_DataOutStageCallbackTypeDef pCallback); 00301 00302 HAL_StatusTypeDef HAL_PCD_UnRegisterDataOutStageCallback(PCD_HandleTypeDef *hpcd); 00303 00304 HAL_StatusTypeDef HAL_PCD_RegisterDataInStageCallback(PCD_HandleTypeDef *hpcd, 00305 pPCD_DataInStageCallbackTypeDef pCallback); 00306 00307 HAL_StatusTypeDef HAL_PCD_UnRegisterDataInStageCallback(PCD_HandleTypeDef *hpcd); 00308 00309 HAL_StatusTypeDef HAL_PCD_RegisterIsoOutIncpltCallback(PCD_HandleTypeDef *hpcd, 00310 pPCD_IsoOutIncpltCallbackTypeDef pCallback); 00311 00312 HAL_StatusTypeDef HAL_PCD_UnRegisterIsoOutIncpltCallback(PCD_HandleTypeDef *hpcd); 00313 00314 HAL_StatusTypeDef HAL_PCD_RegisterIsoInIncpltCallback(PCD_HandleTypeDef *hpcd, 00315 pPCD_IsoInIncpltCallbackTypeDef pCallback); 00316 00317 HAL_StatusTypeDef HAL_PCD_UnRegisterIsoInIncpltCallback(PCD_HandleTypeDef *hpcd); 00318 00319 HAL_StatusTypeDef HAL_PCD_RegisterBcdCallback(PCD_HandleTypeDef *hpcd, 00320 pPCD_BcdCallbackTypeDef pCallback); 00321 00322 HAL_StatusTypeDef HAL_PCD_UnRegisterBcdCallback(PCD_HandleTypeDef *hpcd); 00323 00324 HAL_StatusTypeDef HAL_PCD_RegisterLpmCallback(PCD_HandleTypeDef *hpcd, 00325 pPCD_LpmCallbackTypeDef pCallback); 00326 00327 HAL_StatusTypeDef HAL_PCD_UnRegisterLpmCallback(PCD_HandleTypeDef *hpcd); 00328 #endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ 00329 /** 00330 * @} 00331 */ 00332 00333 /* I/O operation functions ***************************************************/ 00334 /* Non-Blocking mode: Interrupt */ 00335 /** @addtogroup PCD_Exported_Functions_Group2 Input and Output operation functions 00336 * @{ 00337 */ 00338 HAL_StatusTypeDef HAL_PCD_Start(PCD_HandleTypeDef *hpcd); 00339 HAL_StatusTypeDef HAL_PCD_Stop(PCD_HandleTypeDef *hpcd); 00340 void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd); 00341 void HAL_PCD_WKUP_IRQHandler(PCD_HandleTypeDef *hpcd); 00342 00343 void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd); 00344 void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd); 00345 void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd); 00346 void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd); 00347 void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd); 00348 void HAL_PCD_ConnectCallback(PCD_HandleTypeDef *hpcd); 00349 void HAL_PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd); 00350 00351 void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum); 00352 void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum); 00353 void HAL_PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum); 00354 void HAL_PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum); 00355 /** 00356 * @} 00357 */ 00358 00359 /* Peripheral Control functions **********************************************/ 00360 /** @addtogroup PCD_Exported_Functions_Group3 Peripheral Control functions 00361 * @{ 00362 */ 00363 HAL_StatusTypeDef HAL_PCD_DevConnect(PCD_HandleTypeDef *hpcd); 00364 HAL_StatusTypeDef HAL_PCD_DevDisconnect(PCD_HandleTypeDef *hpcd); 00365 HAL_StatusTypeDef HAL_PCD_SetAddress(PCD_HandleTypeDef *hpcd, uint8_t address); 00366 HAL_StatusTypeDef HAL_PCD_EP_Open(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, 00367 uint16_t ep_mps, uint8_t ep_type); 00368 00369 HAL_StatusTypeDef HAL_PCD_EP_Close(PCD_HandleTypeDef *hpcd, uint8_t ep_addr); 00370 HAL_StatusTypeDef HAL_PCD_EP_Receive(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, 00371 uint8_t *pBuf, uint32_t len); 00372 00373 HAL_StatusTypeDef HAL_PCD_EP_Transmit(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, 00374 uint8_t *pBuf, uint32_t len); 00375 00376 00377 HAL_StatusTypeDef HAL_PCD_EP_SetStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr); 00378 HAL_StatusTypeDef HAL_PCD_EP_ClrStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr); 00379 HAL_StatusTypeDef HAL_PCD_EP_Flush(PCD_HandleTypeDef *hpcd, uint8_t ep_addr); 00380 HAL_StatusTypeDef HAL_PCD_ActivateRemoteWakeup(PCD_HandleTypeDef *hpcd); 00381 HAL_StatusTypeDef HAL_PCD_DeActivateRemoteWakeup(PCD_HandleTypeDef *hpcd); 00382 00383 uint32_t HAL_PCD_EP_GetRxCount(PCD_HandleTypeDef *hpcd, uint8_t ep_addr); 00384 /** 00385 * @} 00386 */ 00387 00388 /* Peripheral State functions ************************************************/ 00389 /** @addtogroup PCD_Exported_Functions_Group4 Peripheral State functions 00390 * @{ 00391 */ 00392 PCD_StateTypeDef HAL_PCD_GetState(PCD_HandleTypeDef *hpcd); 00393 /** 00394 * @} 00395 */ 00396 00397 /** 00398 * @} 00399 */ 00400 00401 /* Private constants ---------------------------------------------------------*/ 00402 /** @defgroup PCD_Private_Constants PCD Private Constants 00403 * @{ 00404 */ 00405 /** @defgroup USB_EXTI_Line_Interrupt USB EXTI line interrupt 00406 * @{ 00407 */ 00408 #if defined (USB_OTG_FS) || defined (USB_OTG_HS) 00409 #define USB_OTG_FS_WAKEUP_EXTI_LINE (0x1U << 18) /*!< USB FS EXTI Line WakeUp Interrupt */ 00410 #define USB_OTG_HS_WAKEUP_EXTI_LINE (0x1U << 20) /*!< USB HS EXTI Line WakeUp Interrupt */ 00411 #endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */ 00412 00413 00414 /** 00415 * @} 00416 */ 00417 /** 00418 * @} 00419 */ 00420 00421 #if defined (USB_OTG_FS) || defined (USB_OTG_HS) 00422 #ifndef USB_OTG_DOEPINT_OTEPSPR 00423 #define USB_OTG_DOEPINT_OTEPSPR (0x1UL << 5) /*!< Status Phase Received interrupt */ 00424 #endif /* defined USB_OTG_DOEPINT_OTEPSPR */ 00425 00426 #ifndef USB_OTG_DOEPMSK_OTEPSPRM 00427 #define USB_OTG_DOEPMSK_OTEPSPRM (0x1UL << 5) /*!< Setup Packet Received interrupt mask */ 00428 #endif /* defined USB_OTG_DOEPMSK_OTEPSPRM */ 00429 00430 #ifndef USB_OTG_DOEPINT_NAK 00431 #define USB_OTG_DOEPINT_NAK (0x1UL << 13) /*!< NAK interrupt */ 00432 #endif /* defined USB_OTG_DOEPINT_NAK */ 00433 00434 #ifndef USB_OTG_DOEPMSK_NAKM 00435 #define USB_OTG_DOEPMSK_NAKM (0x1UL << 13) /*!< OUT Packet NAK interrupt mask */ 00436 #endif /* defined USB_OTG_DOEPMSK_NAKM */ 00437 00438 #ifndef USB_OTG_DOEPINT_STPKTRX 00439 #define USB_OTG_DOEPINT_STPKTRX (0x1UL << 15) /*!< Setup Packet Received interrupt */ 00440 #endif /* defined USB_OTG_DOEPINT_STPKTRX */ 00441 00442 #ifndef USB_OTG_DOEPMSK_NYETM 00443 #define USB_OTG_DOEPMSK_NYETM (0x1UL << 14) /*!< Setup Packet Received interrupt mask */ 00444 #endif /* defined USB_OTG_DOEPMSK_NYETM */ 00445 #endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */ 00446 00447 /* Private macros ------------------------------------------------------------*/ 00448 /** @defgroup PCD_Private_Macros PCD Private Macros 00449 * @{ 00450 */ 00451 00452 /** 00453 * @} 00454 */ 00455 00456 /** 00457 * @} 00458 */ 00459 00460 /** 00461 * @} 00462 */ 00463 #endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */ 00464 00465 #ifdef __cplusplus 00466 } 00467 #endif 00468 00469 #endif /* STM32F4xx_HAL_PCD_H */