001

Committer:
ganlikun
Date:
Sun Jun 12 14:02:44 2022 +0000
Revision:
0:13413ea9a877
00

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ganlikun 0:13413ea9a877 1 /**
ganlikun 0:13413ea9a877 2 ******************************************************************************
ganlikun 0:13413ea9a877 3 * @file stm32f4xx_hal_pcd.h
ganlikun 0:13413ea9a877 4 * @author MCD Application Team
ganlikun 0:13413ea9a877 5 * @version V1.7.1
ganlikun 0:13413ea9a877 6 * @date 14-April-2017
ganlikun 0:13413ea9a877 7 * @brief Header file of PCD HAL module.
ganlikun 0:13413ea9a877 8 ******************************************************************************
ganlikun 0:13413ea9a877 9 * @attention
ganlikun 0:13413ea9a877 10 *
ganlikun 0:13413ea9a877 11 * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
ganlikun 0:13413ea9a877 12 *
ganlikun 0:13413ea9a877 13 * Redistribution and use in source and binary forms, with or without modification,
ganlikun 0:13413ea9a877 14 * are permitted provided that the following conditions are met:
ganlikun 0:13413ea9a877 15 * 1. Redistributions of source code must retain the above copyright notice,
ganlikun 0:13413ea9a877 16 * this list of conditions and the following disclaimer.
ganlikun 0:13413ea9a877 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
ganlikun 0:13413ea9a877 18 * this list of conditions and the following disclaimer in the documentation
ganlikun 0:13413ea9a877 19 * and/or other materials provided with the distribution.
ganlikun 0:13413ea9a877 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
ganlikun 0:13413ea9a877 21 * may be used to endorse or promote products derived from this software
ganlikun 0:13413ea9a877 22 * without specific prior written permission.
ganlikun 0:13413ea9a877 23 *
ganlikun 0:13413ea9a877 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
ganlikun 0:13413ea9a877 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
ganlikun 0:13413ea9a877 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
ganlikun 0:13413ea9a877 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
ganlikun 0:13413ea9a877 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
ganlikun 0:13413ea9a877 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
ganlikun 0:13413ea9a877 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
ganlikun 0:13413ea9a877 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
ganlikun 0:13413ea9a877 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
ganlikun 0:13413ea9a877 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
ganlikun 0:13413ea9a877 34 *
ganlikun 0:13413ea9a877 35 ******************************************************************************
ganlikun 0:13413ea9a877 36 */
ganlikun 0:13413ea9a877 37
ganlikun 0:13413ea9a877 38 /* Define to prevent recursive inclusion -------------------------------------*/
ganlikun 0:13413ea9a877 39 #ifndef __STM32F4xx_HAL_PCD_H
ganlikun 0:13413ea9a877 40 #define __STM32F4xx_HAL_PCD_H
ganlikun 0:13413ea9a877 41
ganlikun 0:13413ea9a877 42 #ifdef __cplusplus
ganlikun 0:13413ea9a877 43 extern "C" {
ganlikun 0:13413ea9a877 44 #endif
ganlikun 0:13413ea9a877 45 #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) || \
ganlikun 0:13413ea9a877 46 defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) || \
ganlikun 0:13413ea9a877 47 defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx) || \
ganlikun 0:13413ea9a877 48 defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || \
ganlikun 0:13413ea9a877 49 defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
ganlikun 0:13413ea9a877 50 /* Includes ------------------------------------------------------------------*/
ganlikun 0:13413ea9a877 51 #include "stm32f4xx_ll_usb.h"
ganlikun 0:13413ea9a877 52
ganlikun 0:13413ea9a877 53 /** @addtogroup STM32F4xx_HAL_Driver
ganlikun 0:13413ea9a877 54 * @{
ganlikun 0:13413ea9a877 55 */
ganlikun 0:13413ea9a877 56
ganlikun 0:13413ea9a877 57 /** @addtogroup PCD
ganlikun 0:13413ea9a877 58 * @{
ganlikun 0:13413ea9a877 59 */
ganlikun 0:13413ea9a877 60
ganlikun 0:13413ea9a877 61 /* Exported types ------------------------------------------------------------*/
ganlikun 0:13413ea9a877 62 /** @defgroup PCD_Exported_Types PCD Exported Types
ganlikun 0:13413ea9a877 63 * @{
ganlikun 0:13413ea9a877 64 */
ganlikun 0:13413ea9a877 65
ganlikun 0:13413ea9a877 66 /**
ganlikun 0:13413ea9a877 67 * @brief PCD State structure definition
ganlikun 0:13413ea9a877 68 */
ganlikun 0:13413ea9a877 69 typedef enum
ganlikun 0:13413ea9a877 70 {
ganlikun 0:13413ea9a877 71 HAL_PCD_STATE_RESET = 0x00U,
ganlikun 0:13413ea9a877 72 HAL_PCD_STATE_READY = 0x01U,
ganlikun 0:13413ea9a877 73 HAL_PCD_STATE_ERROR = 0x02U,
ganlikun 0:13413ea9a877 74 HAL_PCD_STATE_BUSY = 0x03U,
ganlikun 0:13413ea9a877 75 HAL_PCD_STATE_TIMEOUT = 0x04U
ganlikun 0:13413ea9a877 76 } PCD_StateTypeDef;
ganlikun 0:13413ea9a877 77
ganlikun 0:13413ea9a877 78 #ifdef USB_OTG_GLPMCFG_LPMEN
ganlikun 0:13413ea9a877 79 /* Device LPM suspend state */
ganlikun 0:13413ea9a877 80 typedef enum
ganlikun 0:13413ea9a877 81 {
ganlikun 0:13413ea9a877 82 LPM_L0 = 0x00U, /* on */
ganlikun 0:13413ea9a877 83 LPM_L1 = 0x01U, /* LPM L1 sleep */
ganlikun 0:13413ea9a877 84 LPM_L2 = 0x02U, /* suspend */
ganlikun 0:13413ea9a877 85 LPM_L3 = 0x03U /* off */
ganlikun 0:13413ea9a877 86 }PCD_LPM_StateTypeDef;
ganlikun 0:13413ea9a877 87 #endif /* USB_OTG_GLPMCFG_LPMEN */
ganlikun 0:13413ea9a877 88
ganlikun 0:13413ea9a877 89 typedef USB_OTG_GlobalTypeDef PCD_TypeDef;
ganlikun 0:13413ea9a877 90 typedef USB_OTG_CfgTypeDef PCD_InitTypeDef;
ganlikun 0:13413ea9a877 91 typedef USB_OTG_EPTypeDef PCD_EPTypeDef ;
ganlikun 0:13413ea9a877 92
ganlikun 0:13413ea9a877 93 /**
ganlikun 0:13413ea9a877 94 * @brief PCD Handle Structure definition
ganlikun 0:13413ea9a877 95 */
ganlikun 0:13413ea9a877 96
ganlikun 0:13413ea9a877 97 typedef struct
ganlikun 0:13413ea9a877 98 {
ganlikun 0:13413ea9a877 99 HAL_LockTypeDef Lock;
ganlikun 0:13413ea9a877 100 } PCD_EPLockDef;
ganlikun 0:13413ea9a877 101
ganlikun 0:13413ea9a877 102 typedef struct
ganlikun 0:13413ea9a877 103 {
ganlikun 0:13413ea9a877 104 PCD_TypeDef *Instance; /*!< Register base address */
ganlikun 0:13413ea9a877 105 PCD_InitTypeDef Init; /*!< PCD required parameters */
ganlikun 0:13413ea9a877 106 PCD_EPTypeDef IN_ep[16U]; /*!< IN endpoint parameters */
ganlikun 0:13413ea9a877 107 PCD_EPTypeDef OUT_ep[16U]; /*!< OUT endpoint parameters */
ganlikun 0:13413ea9a877 108 HAL_LockTypeDef Lock; /*!< PCD peripheral status */
ganlikun 0:13413ea9a877 109 PCD_EPLockDef EPLock[15]; /*!< PCD endpoint peripheral status */
ganlikun 0:13413ea9a877 110 __IO PCD_StateTypeDef State; /*!< PCD communication state */
ganlikun 0:13413ea9a877 111 uint32_t Setup[12U]; /*!< Setup packet buffer */
ganlikun 0:13413ea9a877 112 #ifdef USB_OTG_GLPMCFG_LPMEN
ganlikun 0:13413ea9a877 113 PCD_LPM_StateTypeDef LPM_State; /*!< LPM State */
ganlikun 0:13413ea9a877 114 uint32_t BESL;
ganlikun 0:13413ea9a877 115 uint32_t lpm_active; /*!< Enable or disable the Link Power Management .
ganlikun 0:13413ea9a877 116 This parameter can be set to ENABLE or DISABLE */
ganlikun 0:13413ea9a877 117 #endif /* USB_OTG_GLPMCFG_LPMEN */
ganlikun 0:13413ea9a877 118 #ifdef USB_OTG_GCCFG_BCDEN
ganlikun 0:13413ea9a877 119 uint32_t battery_charging_active; /*!< Enable or disable Battery charging.
ganlikun 0:13413ea9a877 120 This parameter can be set to ENABLE or DISABLE */
ganlikun 0:13413ea9a877 121 #endif /* USB_OTG_GCCFG_BCDEN */
ganlikun 0:13413ea9a877 122 void *pData; /*!< Pointer to upper stack Handler */
ganlikun 0:13413ea9a877 123 } PCD_HandleTypeDef;
ganlikun 0:13413ea9a877 124
ganlikun 0:13413ea9a877 125 /**
ganlikun 0:13413ea9a877 126 * @}
ganlikun 0:13413ea9a877 127 */
ganlikun 0:13413ea9a877 128
ganlikun 0:13413ea9a877 129 /* Include PCD HAL Extension module */
ganlikun 0:13413ea9a877 130 #include "stm32f4xx_hal_pcd_ex.h"
ganlikun 0:13413ea9a877 131
ganlikun 0:13413ea9a877 132 /* Exported constants --------------------------------------------------------*/
ganlikun 0:13413ea9a877 133 /** @defgroup PCD_Exported_Constants PCD Exported Constants
ganlikun 0:13413ea9a877 134 * @{
ganlikun 0:13413ea9a877 135 */
ganlikun 0:13413ea9a877 136
ganlikun 0:13413ea9a877 137 /** @defgroup PCD_Speed PCD Speed
ganlikun 0:13413ea9a877 138 * @{
ganlikun 0:13413ea9a877 139 */
ganlikun 0:13413ea9a877 140 #define PCD_SPEED_HIGH 0U
ganlikun 0:13413ea9a877 141 #define PCD_SPEED_HIGH_IN_FULL 1U
ganlikun 0:13413ea9a877 142 #define PCD_SPEED_FULL 2U
ganlikun 0:13413ea9a877 143 /**
ganlikun 0:13413ea9a877 144 * @}
ganlikun 0:13413ea9a877 145 */
ganlikun 0:13413ea9a877 146
ganlikun 0:13413ea9a877 147 /** @defgroup PCD_PHY_Module PCD PHY Module
ganlikun 0:13413ea9a877 148 * @{
ganlikun 0:13413ea9a877 149 */
ganlikun 0:13413ea9a877 150 #define PCD_PHY_ULPI 1U
ganlikun 0:13413ea9a877 151 #define PCD_PHY_EMBEDDED 2U
ganlikun 0:13413ea9a877 152 /**
ganlikun 0:13413ea9a877 153 * @}
ganlikun 0:13413ea9a877 154 */
ganlikun 0:13413ea9a877 155
ganlikun 0:13413ea9a877 156 /** @defgroup PCD_Turnaround_Timeout Turnaround Timeout Value
ganlikun 0:13413ea9a877 157 * @{
ganlikun 0:13413ea9a877 158 */
ganlikun 0:13413ea9a877 159 #ifndef USBD_HS_TRDT_VALUE
ganlikun 0:13413ea9a877 160 #define USBD_HS_TRDT_VALUE 9U
ganlikun 0:13413ea9a877 161 #endif /* USBD_HS_TRDT_VALUE */
ganlikun 0:13413ea9a877 162 #ifndef USBD_FS_TRDT_VALUE
ganlikun 0:13413ea9a877 163 #define USBD_FS_TRDT_VALUE 5U
ganlikun 0:13413ea9a877 164 #endif /* USBD_FS_TRDT_VALUE */
ganlikun 0:13413ea9a877 165 /**
ganlikun 0:13413ea9a877 166 * @}
ganlikun 0:13413ea9a877 167 */
ganlikun 0:13413ea9a877 168
ganlikun 0:13413ea9a877 169 /**
ganlikun 0:13413ea9a877 170 * @}
ganlikun 0:13413ea9a877 171 */
ganlikun 0:13413ea9a877 172
ganlikun 0:13413ea9a877 173 /* Exported macros -----------------------------------------------------------*/
ganlikun 0:13413ea9a877 174 /** @defgroup PCD_Exported_Macros PCD Exported Macros
ganlikun 0:13413ea9a877 175 * @brief macros to handle interrupts and specific clock configurations
ganlikun 0:13413ea9a877 176 * @{
ganlikun 0:13413ea9a877 177 */
ganlikun 0:13413ea9a877 178 #define __HAL_PCD_ENABLE(__HANDLE__) USB_EnableGlobalInt ((__HANDLE__)->Instance)
ganlikun 0:13413ea9a877 179 #define __HAL_PCD_DISABLE(__HANDLE__) USB_DisableGlobalInt ((__HANDLE__)->Instance)
ganlikun 0:13413ea9a877 180
ganlikun 0:13413ea9a877 181 #define __HAL_PCD_GET_FLAG(__HANDLE__, __INTERRUPT__) ((USB_ReadInterrupts((__HANDLE__)->Instance) & (__INTERRUPT__)) == (__INTERRUPT__))
ganlikun 0:13413ea9a877 182 #define __HAL_PCD_CLEAR_FLAG(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->GINTSTS) &= (__INTERRUPT__))
ganlikun 0:13413ea9a877 183 #define __HAL_PCD_IS_INVALID_INTERRUPT(__HANDLE__) (USB_ReadInterrupts((__HANDLE__)->Instance) == 0U)
ganlikun 0:13413ea9a877 184
ganlikun 0:13413ea9a877 185 #define __HAL_PCD_UNGATE_PHYCLOCK(__HANDLE__) *(__IO uint32_t *)((uint32_t)((__HANDLE__)->Instance) + USB_OTG_PCGCCTL_BASE) &= \
ganlikun 0:13413ea9a877 186 ~(USB_OTG_PCGCCTL_STOPCLK)
ganlikun 0:13413ea9a877 187
ganlikun 0:13413ea9a877 188 #define __HAL_PCD_GATE_PHYCLOCK(__HANDLE__) *(__IO uint32_t *)((uint32_t)((__HANDLE__)->Instance) + USB_OTG_PCGCCTL_BASE) |= USB_OTG_PCGCCTL_STOPCLK
ganlikun 0:13413ea9a877 189
ganlikun 0:13413ea9a877 190 #define __HAL_PCD_IS_PHY_SUSPENDED(__HANDLE__) ((*(__IO uint32_t *)((uint32_t)((__HANDLE__)->Instance) + USB_OTG_PCGCCTL_BASE))&0x10U)
ganlikun 0:13413ea9a877 191
ganlikun 0:13413ea9a877 192 #define USB_OTG_FS_WAKEUP_EXTI_RISING_EDGE 0x08U
ganlikun 0:13413ea9a877 193 #define USB_OTG_FS_WAKEUP_EXTI_FALLING_EDGE 0x0CU
ganlikun 0:13413ea9a877 194 #define USB_OTG_FS_WAKEUP_EXTI_RISING_FALLING_EDGE 0x10U
ganlikun 0:13413ea9a877 195
ganlikun 0:13413ea9a877 196 #define USB_OTG_HS_WAKEUP_EXTI_RISING_EDGE 0x08U
ganlikun 0:13413ea9a877 197 #define USB_OTG_HS_WAKEUP_EXTI_FALLING_EDGE 0x0CU
ganlikun 0:13413ea9a877 198 #define USB_OTG_HS_WAKEUP_EXTI_RISING_FALLING_EDGE 0x10U
ganlikun 0:13413ea9a877 199
ganlikun 0:13413ea9a877 200 #define USB_OTG_HS_WAKEUP_EXTI_LINE 0x00100000U /*!< External interrupt line 20 Connected to the USB HS EXTI Line */
ganlikun 0:13413ea9a877 201 #define USB_OTG_FS_WAKEUP_EXTI_LINE 0x00040000U /*!< External interrupt line 18 Connected to the USB FS EXTI Line */
ganlikun 0:13413ea9a877 202
ganlikun 0:13413ea9a877 203 #define __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_IT() EXTI->IMR |= (USB_OTG_HS_WAKEUP_EXTI_LINE)
ganlikun 0:13413ea9a877 204 #define __HAL_USB_OTG_HS_WAKEUP_EXTI_DISABLE_IT() EXTI->IMR &= ~(USB_OTG_HS_WAKEUP_EXTI_LINE)
ganlikun 0:13413ea9a877 205 #define __HAL_USB_OTG_HS_WAKEUP_EXTI_GET_FLAG() EXTI->PR & (USB_OTG_HS_WAKEUP_EXTI_LINE)
ganlikun 0:13413ea9a877 206 #define __HAL_USB_OTG_HS_WAKEUP_EXTI_CLEAR_FLAG() EXTI->PR = (USB_OTG_HS_WAKEUP_EXTI_LINE)
ganlikun 0:13413ea9a877 207
ganlikun 0:13413ea9a877 208 #define __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_RISING_EDGE() do{EXTI->FTSR &= ~(USB_OTG_HS_WAKEUP_EXTI_LINE);\
ganlikun 0:13413ea9a877 209 EXTI->RTSR |= USB_OTG_HS_WAKEUP_EXTI_LINE;\
ganlikun 0:13413ea9a877 210 }while(0U)
ganlikun 0:13413ea9a877 211
ganlikun 0:13413ea9a877 212 #define __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_FALLING_EDGE() do{EXTI->FTSR |= (USB_OTG_HS_WAKEUP_EXTI_LINE);\
ganlikun 0:13413ea9a877 213 EXTI->RTSR &= ~(USB_OTG_HS_WAKEUP_EXTI_LINE);\
ganlikun 0:13413ea9a877 214 }while(0U)
ganlikun 0:13413ea9a877 215
ganlikun 0:13413ea9a877 216 #define __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE() do{EXTI->RTSR &= ~(USB_OTG_HS_WAKEUP_EXTI_LINE);\
ganlikun 0:13413ea9a877 217 EXTI->FTSR &= ~(USB_OTG_HS_WAKEUP_EXTI_LINE);\
ganlikun 0:13413ea9a877 218 EXTI->RTSR |= USB_OTG_HS_WAKEUP_EXTI_LINE;\
ganlikun 0:13413ea9a877 219 EXTI->FTSR |= USB_OTG_HS_WAKEUP_EXTI_LINE;\
ganlikun 0:13413ea9a877 220 }while(0U)
ganlikun 0:13413ea9a877 221
ganlikun 0:13413ea9a877 222 #define __HAL_USB_OTG_HS_WAKEUP_EXTI_GENERATE_SWIT() (EXTI->SWIER |= USB_OTG_FS_WAKEUP_EXTI_LINE)
ganlikun 0:13413ea9a877 223
ganlikun 0:13413ea9a877 224 #define __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_IT() EXTI->IMR |= USB_OTG_FS_WAKEUP_EXTI_LINE
ganlikun 0:13413ea9a877 225 #define __HAL_USB_OTG_FS_WAKEUP_EXTI_DISABLE_IT() EXTI->IMR &= ~(USB_OTG_FS_WAKEUP_EXTI_LINE)
ganlikun 0:13413ea9a877 226 #define __HAL_USB_OTG_FS_WAKEUP_EXTI_GET_FLAG() EXTI->PR & (USB_OTG_FS_WAKEUP_EXTI_LINE)
ganlikun 0:13413ea9a877 227 #define __HAL_USB_OTG_FS_WAKEUP_EXTI_CLEAR_FLAG() EXTI->PR = USB_OTG_FS_WAKEUP_EXTI_LINE
ganlikun 0:13413ea9a877 228
ganlikun 0:13413ea9a877 229 #define __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_RISING_EDGE() do{EXTI->FTSR &= ~(USB_OTG_FS_WAKEUP_EXTI_LINE);\
ganlikun 0:13413ea9a877 230 EXTI->RTSR |= USB_OTG_FS_WAKEUP_EXTI_LINE;\
ganlikun 0:13413ea9a877 231 }while(0U)
ganlikun 0:13413ea9a877 232
ganlikun 0:13413ea9a877 233 #define __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_FALLING_EDGE() do{EXTI->FTSR |= (USB_OTG_FS_WAKEUP_EXTI_LINE);\
ganlikun 0:13413ea9a877 234 EXTI->RTSR &= ~(USB_OTG_FS_WAKEUP_EXTI_LINE);\
ganlikun 0:13413ea9a877 235 }while(0U)
ganlikun 0:13413ea9a877 236
ganlikun 0:13413ea9a877 237 #define __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE() do{EXTI->RTSR &= ~(USB_OTG_FS_WAKEUP_EXTI_LINE);\
ganlikun 0:13413ea9a877 238 EXTI->FTSR &= ~(USB_OTG_FS_WAKEUP_EXTI_LINE);\
ganlikun 0:13413ea9a877 239 EXTI->RTSR |= USB_OTG_FS_WAKEUP_EXTI_LINE;\
ganlikun 0:13413ea9a877 240 EXTI->FTSR |= USB_OTG_FS_WAKEUP_EXTI_LINE;\
ganlikun 0:13413ea9a877 241 }while(0U)
ganlikun 0:13413ea9a877 242
ganlikun 0:13413ea9a877 243 #define __HAL_USB_OTG_FS_WAKEUP_EXTI_GENERATE_SWIT() (EXTI->SWIER |= USB_OTG_FS_WAKEUP_EXTI_LINE)
ganlikun 0:13413ea9a877 244 /**
ganlikun 0:13413ea9a877 245 * @}
ganlikun 0:13413ea9a877 246 */
ganlikun 0:13413ea9a877 247
ganlikun 0:13413ea9a877 248 /* Exported functions --------------------------------------------------------*/
ganlikun 0:13413ea9a877 249 /** @addtogroup PCD_Exported_Functions PCD Exported Functions
ganlikun 0:13413ea9a877 250 * @{
ganlikun 0:13413ea9a877 251 */
ganlikun 0:13413ea9a877 252
ganlikun 0:13413ea9a877 253 /* Initialization/de-initialization functions ********************************/
ganlikun 0:13413ea9a877 254 /** @addtogroup PCD_Exported_Functions_Group1 Initialization and de-initialization functions
ganlikun 0:13413ea9a877 255 * @{
ganlikun 0:13413ea9a877 256 */
ganlikun 0:13413ea9a877 257 HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd);
ganlikun 0:13413ea9a877 258 HAL_StatusTypeDef HAL_PCD_DeInit(PCD_HandleTypeDef *hpcd);
ganlikun 0:13413ea9a877 259 void HAL_PCD_MspInit(PCD_HandleTypeDef *hpcd);
ganlikun 0:13413ea9a877 260 void HAL_PCD_MspDeInit(PCD_HandleTypeDef *hpcd);
ganlikun 0:13413ea9a877 261 /**
ganlikun 0:13413ea9a877 262 * @}
ganlikun 0:13413ea9a877 263 */
ganlikun 0:13413ea9a877 264
ganlikun 0:13413ea9a877 265 /* I/O operation functions ***************************************************/
ganlikun 0:13413ea9a877 266 /* Non-Blocking mode: Interrupt */
ganlikun 0:13413ea9a877 267 /** @addtogroup PCD_Exported_Functions_Group2 Input and Output operation functions
ganlikun 0:13413ea9a877 268 * @{
ganlikun 0:13413ea9a877 269 */
ganlikun 0:13413ea9a877 270 /* Non-Blocking mode: Interrupt */
ganlikun 0:13413ea9a877 271 HAL_StatusTypeDef HAL_PCD_Start(PCD_HandleTypeDef *hpcd);
ganlikun 0:13413ea9a877 272 HAL_StatusTypeDef HAL_PCD_Stop(PCD_HandleTypeDef *hpcd);
ganlikun 0:13413ea9a877 273 void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd);
ganlikun 0:13413ea9a877 274
ganlikun 0:13413ea9a877 275 void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum);
ganlikun 0:13413ea9a877 276 void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum);
ganlikun 0:13413ea9a877 277 void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd);
ganlikun 0:13413ea9a877 278 void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd);
ganlikun 0:13413ea9a877 279 void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd);
ganlikun 0:13413ea9a877 280 void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd);
ganlikun 0:13413ea9a877 281 void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd);
ganlikun 0:13413ea9a877 282 void HAL_PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum);
ganlikun 0:13413ea9a877 283 void HAL_PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum);
ganlikun 0:13413ea9a877 284 void HAL_PCD_ConnectCallback(PCD_HandleTypeDef *hpcd);
ganlikun 0:13413ea9a877 285 void HAL_PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd);
ganlikun 0:13413ea9a877 286 /**
ganlikun 0:13413ea9a877 287 * @}
ganlikun 0:13413ea9a877 288 */
ganlikun 0:13413ea9a877 289
ganlikun 0:13413ea9a877 290 /* Peripheral Control functions **********************************************/
ganlikun 0:13413ea9a877 291 /** @addtogroup PCD_Exported_Functions_Group3 Peripheral Control functions
ganlikun 0:13413ea9a877 292 * @{
ganlikun 0:13413ea9a877 293 */
ganlikun 0:13413ea9a877 294 HAL_StatusTypeDef HAL_PCD_DevConnect(PCD_HandleTypeDef *hpcd);
ganlikun 0:13413ea9a877 295 HAL_StatusTypeDef HAL_PCD_DevDisconnect(PCD_HandleTypeDef *hpcd);
ganlikun 0:13413ea9a877 296 HAL_StatusTypeDef HAL_PCD_SetAddress(PCD_HandleTypeDef *hpcd, uint8_t address);
ganlikun 0:13413ea9a877 297 HAL_StatusTypeDef HAL_PCD_EP_Open(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint16_t ep_mps, uint8_t ep_type);
ganlikun 0:13413ea9a877 298 HAL_StatusTypeDef HAL_PCD_EP_Close(PCD_HandleTypeDef *hpcd, uint8_t ep_addr);
ganlikun 0:13413ea9a877 299 HAL_StatusTypeDef HAL_PCD_EP_Receive(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len);
ganlikun 0:13413ea9a877 300 HAL_StatusTypeDef HAL_PCD_EP_Transmit(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len);
ganlikun 0:13413ea9a877 301 uint16_t HAL_PCD_EP_GetRxCount(PCD_HandleTypeDef *hpcd, uint8_t ep_addr);
ganlikun 0:13413ea9a877 302 HAL_StatusTypeDef HAL_PCD_EP_SetStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr);
ganlikun 0:13413ea9a877 303 HAL_StatusTypeDef HAL_PCD_EP_ClrStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr);
ganlikun 0:13413ea9a877 304 HAL_StatusTypeDef HAL_PCD_EP_Flush(PCD_HandleTypeDef *hpcd, uint8_t ep_addr);
ganlikun 0:13413ea9a877 305 HAL_StatusTypeDef HAL_PCD_ActivateRemoteWakeup(PCD_HandleTypeDef *hpcd);
ganlikun 0:13413ea9a877 306 HAL_StatusTypeDef HAL_PCD_DeActivateRemoteWakeup(PCD_HandleTypeDef *hpcd);
ganlikun 0:13413ea9a877 307 /**
ganlikun 0:13413ea9a877 308 * @}
ganlikun 0:13413ea9a877 309 */
ganlikun 0:13413ea9a877 310
ganlikun 0:13413ea9a877 311 /* Peripheral State functions ************************************************/
ganlikun 0:13413ea9a877 312 /** @addtogroup PCD_Exported_Functions_Group4 Peripheral State functions
ganlikun 0:13413ea9a877 313 * @{
ganlikun 0:13413ea9a877 314 */
ganlikun 0:13413ea9a877 315 PCD_StateTypeDef HAL_PCD_GetState(PCD_HandleTypeDef *hpcd);
ganlikun 0:13413ea9a877 316 /**
ganlikun 0:13413ea9a877 317 * @}
ganlikun 0:13413ea9a877 318 */
ganlikun 0:13413ea9a877 319
ganlikun 0:13413ea9a877 320 /**
ganlikun 0:13413ea9a877 321 * @}
ganlikun 0:13413ea9a877 322 */
ganlikun 0:13413ea9a877 323
ganlikun 0:13413ea9a877 324 /* Private macros ------------------------------------------------------------*/
ganlikun 0:13413ea9a877 325 /** @defgroup PCD_Private_Macros PCD Private Macros
ganlikun 0:13413ea9a877 326 * @{
ganlikun 0:13413ea9a877 327 */
ganlikun 0:13413ea9a877 328
ganlikun 0:13413ea9a877 329 /**
ganlikun 0:13413ea9a877 330 * @}
ganlikun 0:13413ea9a877 331 */
ganlikun 0:13413ea9a877 332
ganlikun 0:13413ea9a877 333 /**
ganlikun 0:13413ea9a877 334 * @}
ganlikun 0:13413ea9a877 335 */
ganlikun 0:13413ea9a877 336
ganlikun 0:13413ea9a877 337 /**
ganlikun 0:13413ea9a877 338 * @}
ganlikun 0:13413ea9a877 339 */
ganlikun 0:13413ea9a877 340 #endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx ||
ganlikun 0:13413ea9a877 341 STM32F401xC || STM32F401xE || STM32F411xE || STM32F446xx || STM32F469xx || STM32F479xx || STM32F412Zx || STM32F412Rx ||
ganlikun 0:13413ea9a877 342 STM32F412Vx || STM32F412Cx || STM32F413xx || STM32F423xx */
ganlikun 0:13413ea9a877 343 #ifdef __cplusplus
ganlikun 0:13413ea9a877 344 }
ganlikun 0:13413ea9a877 345 #endif
ganlikun 0:13413ea9a877 346
ganlikun 0:13413ea9a877 347
ganlikun 0:13413ea9a877 348 #endif /* __STM32F4xx_HAL_PCD_H */
ganlikun 0:13413ea9a877 349
ganlikun 0:13413ea9a877 350 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
ganlikun 0:13413ea9a877 351