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

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Wed Feb 20 20:53:29 2019 +0000
Revision:
172:65be27845400
mbed library release version 165

Who changed what in which revision?

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