4 changed files with 5219 additions and 0 deletions
-
328STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_hcd.h
-
578STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usb.h
-
1997STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.c
-
2316STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c
@ -0,0 +1,328 @@ |
|||
/** |
|||
****************************************************************************** |
|||
* @file stm32f4xx_hal_hcd.h |
|||
* @author MCD Application Team |
|||
* @brief Header file of HCD HAL module. |
|||
****************************************************************************** |
|||
* @attention |
|||
* |
|||
* Copyright (c) 2016 STMicroelectronics. |
|||
* All rights reserved. |
|||
* |
|||
* This software is licensed under terms that can be found in the LICENSE file |
|||
* in the root directory of this software component. |
|||
* If no LICENSE file comes with this software, it is provided AS-IS. |
|||
* |
|||
****************************************************************************** |
|||
*/ |
|||
|
|||
/* Define to prevent recursive inclusion -------------------------------------*/ |
|||
#ifndef STM32F4xx_HAL_HCD_H |
|||
#define STM32F4xx_HAL_HCD_H |
|||
|
|||
#ifdef __cplusplus |
|||
extern "C" { |
|||
#endif |
|||
|
|||
/* Includes ------------------------------------------------------------------*/ |
|||
#include "stm32f4xx_ll_usb.h" |
|||
|
|||
#if defined (USB_OTG_FS) || defined (USB_OTG_HS) |
|||
/** @addtogroup STM32F4xx_HAL_Driver |
|||
* @{ |
|||
*/ |
|||
|
|||
/** @addtogroup HCD HCD |
|||
* @{ |
|||
*/ |
|||
|
|||
/* Exported types ------------------------------------------------------------*/ |
|||
/** @defgroup HCD_Exported_Types HCD Exported Types |
|||
* @{ |
|||
*/ |
|||
|
|||
/** @defgroup HCD_Exported_Types_Group1 HCD State Structure definition |
|||
* @{ |
|||
*/ |
|||
typedef enum |
|||
{ |
|||
HAL_HCD_STATE_RESET = 0x00, |
|||
HAL_HCD_STATE_READY = 0x01, |
|||
HAL_HCD_STATE_ERROR = 0x02, |
|||
HAL_HCD_STATE_BUSY = 0x03, |
|||
HAL_HCD_STATE_TIMEOUT = 0x04 |
|||
} HCD_StateTypeDef; |
|||
|
|||
typedef USB_OTG_GlobalTypeDef HCD_TypeDef; |
|||
typedef USB_OTG_CfgTypeDef HCD_InitTypeDef; |
|||
typedef USB_OTG_HCTypeDef HCD_HCTypeDef; |
|||
typedef USB_OTG_URBStateTypeDef HCD_URBStateTypeDef; |
|||
typedef USB_OTG_HCStateTypeDef HCD_HCStateTypeDef; |
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/** @defgroup HCD_Exported_Types_Group2 HCD Handle Structure definition |
|||
* @{ |
|||
*/ |
|||
#if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U) |
|||
typedef struct __HCD_HandleTypeDef |
|||
#else |
|||
typedef struct |
|||
#endif /* USE_HAL_HCD_REGISTER_CALLBACKS */ |
|||
{ |
|||
HCD_TypeDef *Instance; /*!< Register base address */ |
|||
HCD_InitTypeDef Init; /*!< HCD required parameters */ |
|||
HCD_HCTypeDef hc[16]; /*!< Host channels parameters */ |
|||
HAL_LockTypeDef Lock; /*!< HCD peripheral status */ |
|||
__IO HCD_StateTypeDef State; /*!< HCD communication state */ |
|||
__IO uint32_t ErrorCode; /*!< HCD Error code */ |
|||
void *pData; /*!< Pointer Stack Handler */ |
|||
#if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U) |
|||
void (* SOFCallback)(struct __HCD_HandleTypeDef *hhcd); /*!< USB OTG HCD SOF callback */ |
|||
void (* ConnectCallback)(struct __HCD_HandleTypeDef *hhcd); /*!< USB OTG HCD Connect callback */ |
|||
void (* DisconnectCallback)(struct __HCD_HandleTypeDef *hhcd); /*!< USB OTG HCD Disconnect callback */ |
|||
void (* PortEnabledCallback)(struct __HCD_HandleTypeDef *hhcd); /*!< USB OTG HCD Port Enable callback */ |
|||
void (* PortDisabledCallback)(struct __HCD_HandleTypeDef *hhcd); /*!< USB OTG HCD Port Disable callback */ |
|||
void (* HC_NotifyURBChangeCallback)(struct __HCD_HandleTypeDef *hhcd, uint8_t chnum, |
|||
HCD_URBStateTypeDef urb_state); /*!< USB OTG HCD Host Channel Notify URB Change callback */ |
|||
|
|||
void (* MspInitCallback)(struct __HCD_HandleTypeDef *hhcd); /*!< USB OTG HCD Msp Init callback */ |
|||
void (* MspDeInitCallback)(struct __HCD_HandleTypeDef *hhcd); /*!< USB OTG HCD Msp DeInit callback */ |
|||
#endif /* USE_HAL_HCD_REGISTER_CALLBACKS */ |
|||
} HCD_HandleTypeDef; |
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/* Exported constants --------------------------------------------------------*/ |
|||
/** @defgroup HCD_Exported_Constants HCD Exported Constants |
|||
* @{ |
|||
*/ |
|||
|
|||
/** @defgroup HCD_Speed HCD Speed |
|||
* @{ |
|||
*/ |
|||
#define HCD_SPEED_HIGH USBH_HS_SPEED |
|||
#define HCD_SPEED_FULL USBH_FSLS_SPEED |
|||
#define HCD_SPEED_LOW USBH_FSLS_SPEED |
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/** @defgroup HCD_Device_Speed HCD Device Speed |
|||
* @{ |
|||
*/ |
|||
#define HCD_DEVICE_SPEED_HIGH 0U |
|||
#define HCD_DEVICE_SPEED_FULL 1U |
|||
#define HCD_DEVICE_SPEED_LOW 2U |
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/** @defgroup HCD_PHY_Module HCD PHY Module |
|||
* @{ |
|||
*/ |
|||
#define HCD_PHY_ULPI 1U |
|||
#define HCD_PHY_EMBEDDED 2U |
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/** @defgroup HCD_Error_Code_definition HCD Error Code definition |
|||
* @brief HCD Error Code definition |
|||
* @{ |
|||
*/ |
|||
#if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U) |
|||
#define HAL_HCD_ERROR_INVALID_CALLBACK (0x00000010U) /*!< Invalid Callback error */ |
|||
#endif /* USE_HAL_HCD_REGISTER_CALLBACKS */ |
|||
|
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/* Exported macro ------------------------------------------------------------*/ |
|||
/** @defgroup HCD_Exported_Macros HCD Exported Macros |
|||
* @brief macros to handle interrupts and specific clock configurations |
|||
* @{ |
|||
*/ |
|||
#define __HAL_HCD_ENABLE(__HANDLE__) (void)USB_EnableGlobalInt ((__HANDLE__)->Instance) |
|||
#define __HAL_HCD_DISABLE(__HANDLE__) (void)USB_DisableGlobalInt ((__HANDLE__)->Instance) |
|||
|
|||
#define __HAL_HCD_GET_FLAG(__HANDLE__, __INTERRUPT__) ((USB_ReadInterrupts((__HANDLE__)->Instance)\ |
|||
& (__INTERRUPT__)) == (__INTERRUPT__)) |
|||
|
|||
#define __HAL_HCD_GET_CH_FLAG(__HANDLE__, __chnum__, __INTERRUPT__) \ |
|||
((USB_ReadChInterrupts((__HANDLE__)->Instance, (__chnum__)) & (__INTERRUPT__)) == (__INTERRUPT__)) |
|||
|
|||
#define __HAL_HCD_CLEAR_FLAG(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->GINTSTS) = (__INTERRUPT__)) |
|||
#define __HAL_HCD_IS_INVALID_INTERRUPT(__HANDLE__) (USB_ReadInterrupts((__HANDLE__)->Instance) == 0U) |
|||
|
|||
#define __HAL_HCD_CLEAR_HC_INT(chnum, __INTERRUPT__) (USBx_HC(chnum)->HCINT = (__INTERRUPT__)) |
|||
#define __HAL_HCD_MASK_HALT_HC_INT(chnum) (USBx_HC(chnum)->HCINTMSK &= ~USB_OTG_HCINTMSK_CHHM) |
|||
#define __HAL_HCD_UNMASK_HALT_HC_INT(chnum) (USBx_HC(chnum)->HCINTMSK |= USB_OTG_HCINTMSK_CHHM) |
|||
#define __HAL_HCD_MASK_ACK_HC_INT(chnum) (USBx_HC(chnum)->HCINTMSK &= ~USB_OTG_HCINTMSK_ACKM) |
|||
#define __HAL_HCD_UNMASK_ACK_HC_INT(chnum) (USBx_HC(chnum)->HCINTMSK |= USB_OTG_HCINTMSK_ACKM) |
|||
#define __HAL_HCD_SET_HC_CSPLT(chnum) (USBx_HC(chnum)->HCSPLT |= USB_OTG_HCSPLT_COMPLSPLT) |
|||
#define __HAL_HCD_CLEAR_HC_CSPLT(chnum) (USBx_HC(chnum)->HCSPLT &= ~USB_OTG_HCSPLT_COMPLSPLT) |
|||
#define __HAL_HCD_CLEAR_HC_SSPLT(chnum) (USBx_HC(chnum)->HCSPLT &= ~USB_OTG_HCSPLT_SPLITEN) |
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/* Exported functions --------------------------------------------------------*/ |
|||
/** @addtogroup HCD_Exported_Functions HCD Exported Functions |
|||
* @{ |
|||
*/ |
|||
|
|||
/** @defgroup HCD_Exported_Functions_Group1 Initialization and de-initialization functions |
|||
* @{ |
|||
*/ |
|||
HAL_StatusTypeDef HAL_HCD_Init(HCD_HandleTypeDef *hhcd); |
|||
HAL_StatusTypeDef HAL_HCD_DeInit(HCD_HandleTypeDef *hhcd); |
|||
HAL_StatusTypeDef HAL_HCD_HC_Init(HCD_HandleTypeDef *hhcd, uint8_t ch_num, |
|||
uint8_t epnum, uint8_t dev_address, |
|||
uint8_t speed, uint8_t ep_type, uint16_t mps); |
|||
|
|||
HAL_StatusTypeDef HAL_HCD_HC_Halt(HCD_HandleTypeDef *hhcd, uint8_t ch_num); |
|||
void HAL_HCD_MspInit(HCD_HandleTypeDef *hhcd); |
|||
void HAL_HCD_MspDeInit(HCD_HandleTypeDef *hhcd); |
|||
|
|||
#if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U) |
|||
/** @defgroup HAL_HCD_Callback_ID_enumeration_definition HAL USB OTG HCD Callback ID enumeration definition |
|||
* @brief HAL USB OTG HCD Callback ID enumeration definition |
|||
* @{ |
|||
*/ |
|||
typedef enum |
|||
{ |
|||
HAL_HCD_SOF_CB_ID = 0x01, /*!< USB HCD SOF callback ID */ |
|||
HAL_HCD_CONNECT_CB_ID = 0x02, /*!< USB HCD Connect callback ID */ |
|||
HAL_HCD_DISCONNECT_CB_ID = 0x03, /*!< USB HCD Disconnect callback ID */ |
|||
HAL_HCD_PORT_ENABLED_CB_ID = 0x04, /*!< USB HCD Port Enable callback ID */ |
|||
HAL_HCD_PORT_DISABLED_CB_ID = 0x05, /*!< USB HCD Port Disable callback ID */ |
|||
|
|||
HAL_HCD_MSPINIT_CB_ID = 0x06, /*!< USB HCD MspInit callback ID */ |
|||
HAL_HCD_MSPDEINIT_CB_ID = 0x07 /*!< USB HCD MspDeInit callback ID */ |
|||
|
|||
} HAL_HCD_CallbackIDTypeDef; |
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/** @defgroup HAL_HCD_Callback_pointer_definition HAL USB OTG HCD Callback pointer definition |
|||
* @brief HAL USB OTG HCD Callback pointer definition |
|||
* @{ |
|||
*/ |
|||
|
|||
typedef void (*pHCD_CallbackTypeDef)(HCD_HandleTypeDef *hhcd); /*!< pointer to a common USB OTG HCD callback function */ |
|||
typedef void (*pHCD_HC_NotifyURBChangeCallbackTypeDef)(HCD_HandleTypeDef *hhcd, |
|||
uint8_t epnum, |
|||
HCD_URBStateTypeDef urb_state); /*!< pointer to USB OTG HCD host channel callback */ |
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
HAL_StatusTypeDef HAL_HCD_RegisterCallback(HCD_HandleTypeDef *hhcd, |
|||
HAL_HCD_CallbackIDTypeDef CallbackID, |
|||
pHCD_CallbackTypeDef pCallback); |
|||
|
|||
HAL_StatusTypeDef HAL_HCD_UnRegisterCallback(HCD_HandleTypeDef *hhcd, |
|||
HAL_HCD_CallbackIDTypeDef CallbackID); |
|||
|
|||
HAL_StatusTypeDef HAL_HCD_RegisterHC_NotifyURBChangeCallback(HCD_HandleTypeDef *hhcd, |
|||
pHCD_HC_NotifyURBChangeCallbackTypeDef pCallback); |
|||
|
|||
HAL_StatusTypeDef HAL_HCD_UnRegisterHC_NotifyURBChangeCallback(HCD_HandleTypeDef *hhcd); |
|||
#endif /* USE_HAL_HCD_REGISTER_CALLBACKS */ |
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/* I/O operation functions ***************************************************/ |
|||
/** @addtogroup HCD_Exported_Functions_Group2 Input and Output operation functions |
|||
* @{ |
|||
*/ |
|||
HAL_StatusTypeDef HAL_HCD_HC_SubmitRequest(HCD_HandleTypeDef *hhcd, uint8_t ch_num, |
|||
uint8_t direction, uint8_t ep_type, |
|||
uint8_t token, uint8_t *pbuff, |
|||
uint16_t length, uint8_t do_ping); |
|||
|
|||
HAL_StatusTypeDef HAL_HCD_HC_SetHubInfo(HCD_HandleTypeDef *hhcd, uint8_t ch_num, |
|||
uint8_t addr, uint8_t PortNbr); |
|||
|
|||
HAL_StatusTypeDef HAL_HCD_HC_ClearHubInfo(HCD_HandleTypeDef *hhcd, uint8_t ch_num); |
|||
|
|||
/* Non-Blocking mode: Interrupt */ |
|||
void HAL_HCD_IRQHandler(HCD_HandleTypeDef *hhcd); |
|||
void HAL_HCD_WKUP_IRQHandler(HCD_HandleTypeDef *hhcd); |
|||
void HAL_HCD_SOF_Callback(HCD_HandleTypeDef *hhcd); |
|||
void HAL_HCD_Connect_Callback(HCD_HandleTypeDef *hhcd); |
|||
void HAL_HCD_Disconnect_Callback(HCD_HandleTypeDef *hhcd); |
|||
void HAL_HCD_PortEnabled_Callback(HCD_HandleTypeDef *hhcd); |
|||
void HAL_HCD_PortDisabled_Callback(HCD_HandleTypeDef *hhcd); |
|||
void HAL_HCD_HC_NotifyURBChange_Callback(HCD_HandleTypeDef *hhcd, uint8_t chnum, |
|||
HCD_URBStateTypeDef urb_state); |
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/* Peripheral Control functions **********************************************/ |
|||
/** @addtogroup HCD_Exported_Functions_Group3 Peripheral Control functions |
|||
* @{ |
|||
*/ |
|||
HAL_StatusTypeDef HAL_HCD_ResetPort(HCD_HandleTypeDef *hhcd); |
|||
HAL_StatusTypeDef HAL_HCD_Start(HCD_HandleTypeDef *hhcd); |
|||
HAL_StatusTypeDef HAL_HCD_Stop(HCD_HandleTypeDef *hhcd); |
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/* Peripheral State functions ************************************************/ |
|||
/** @addtogroup HCD_Exported_Functions_Group4 Peripheral State functions |
|||
* @{ |
|||
*/ |
|||
HCD_StateTypeDef HAL_HCD_GetState(HCD_HandleTypeDef const *hhcd); |
|||
HCD_URBStateTypeDef HAL_HCD_HC_GetURBState(HCD_HandleTypeDef const *hhcd, uint8_t chnum); |
|||
HCD_HCStateTypeDef HAL_HCD_HC_GetState(HCD_HandleTypeDef const *hhcd, uint8_t chnum); |
|||
uint32_t HAL_HCD_HC_GetXferCount(HCD_HandleTypeDef const *hhcd, uint8_t chnum); |
|||
uint32_t HAL_HCD_GetCurrentFrame(HCD_HandleTypeDef *hhcd); |
|||
uint32_t HAL_HCD_GetCurrentSpeed(HCD_HandleTypeDef *hhcd); |
|||
|
|||
|
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/* Private macros ------------------------------------------------------------*/ |
|||
/** @defgroup HCD_Private_Macros HCD Private Macros |
|||
* @{ |
|||
*/ |
|||
/** |
|||
* @} |
|||
*/ |
|||
/* Private functions prototypes ----------------------------------------------*/ |
|||
|
|||
/** |
|||
* @} |
|||
*/ |
|||
/** |
|||
* @} |
|||
*/ |
|||
/** |
|||
* @} |
|||
*/ |
|||
#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */ |
|||
|
|||
#ifdef __cplusplus |
|||
} |
|||
#endif |
|||
|
|||
#endif /* STM32F4xx_HAL_HCD_H */ |
@ -0,0 +1,578 @@ |
|||
/** |
|||
****************************************************************************** |
|||
* @file stm32f4xx_ll_usb.h |
|||
* @author MCD Application Team |
|||
* @brief Header file of USB Low Layer HAL module. |
|||
****************************************************************************** |
|||
* @attention |
|||
* |
|||
* Copyright (c) 2016 STMicroelectronics. |
|||
* All rights reserved. |
|||
* |
|||
* This software is licensed under terms that can be found in the LICENSE file |
|||
* in the root directory of this software component. |
|||
* If no LICENSE file comes with this software, it is provided AS-IS. |
|||
* |
|||
****************************************************************************** |
|||
*/ |
|||
|
|||
/* Define to prevent recursive inclusion -------------------------------------*/ |
|||
#ifndef STM32F4xx_LL_USB_H |
|||
#define STM32F4xx_LL_USB_H |
|||
|
|||
#ifdef __cplusplus |
|||
extern "C" { |
|||
#endif /* __cplusplus */ |
|||
|
|||
/* Includes ------------------------------------------------------------------*/ |
|||
#include "stm32f4xx_hal_def.h" |
|||
|
|||
#if defined (USB_OTG_FS) || defined (USB_OTG_HS) |
|||
/** @addtogroup STM32F4xx_HAL_Driver |
|||
* @{ |
|||
*/ |
|||
|
|||
/** @addtogroup USB_LL |
|||
* @{ |
|||
*/ |
|||
|
|||
/* Exported types ------------------------------------------------------------*/ |
|||
#ifndef HAL_USB_TIMEOUT |
|||
#define HAL_USB_TIMEOUT 0xF000000U |
|||
#endif /* define HAL_USB_TIMEOUT */ |
|||
|
|||
#ifndef HAL_USB_CURRENT_MODE_MAX_DELAY_MS |
|||
#define HAL_USB_CURRENT_MODE_MAX_DELAY_MS 200U |
|||
#endif /* define HAL_USB_CURRENT_MODE_MAX_DELAY_MS */ |
|||
|
|||
/** |
|||
* @brief USB Mode definition |
|||
*/ |
|||
|
|||
typedef enum |
|||
{ |
|||
USB_DEVICE_MODE = 0, |
|||
USB_HOST_MODE = 1, |
|||
USB_DRD_MODE = 2 |
|||
} USB_ModeTypeDef; |
|||
|
|||
/** |
|||
* @brief URB States definition |
|||
*/ |
|||
typedef enum |
|||
{ |
|||
URB_IDLE = 0, |
|||
URB_DONE, |
|||
URB_NOTREADY, |
|||
URB_NYET, |
|||
URB_ERROR, |
|||
URB_STALL |
|||
} USB_URBStateTypeDef; |
|||
|
|||
/** |
|||
* @brief Host channel States definition |
|||
*/ |
|||
typedef enum |
|||
{ |
|||
HC_IDLE = 0, |
|||
HC_XFRC, |
|||
HC_HALTED, |
|||
HC_ACK, |
|||
HC_NAK, |
|||
HC_NYET, |
|||
HC_STALL, |
|||
HC_XACTERR, |
|||
HC_BBLERR, |
|||
HC_DATATGLERR |
|||
} USB_HCStateTypeDef; |
|||
|
|||
|
|||
/** |
|||
* @brief USB Instance Initialization Structure definition |
|||
*/ |
|||
typedef struct |
|||
{ |
|||
uint8_t dev_endpoints; /*!< Device Endpoints number. |
|||
This parameter depends on the used USB core. |
|||
This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ |
|||
|
|||
uint8_t Host_channels; /*!< Host Channels number. |
|||
This parameter Depends on the used USB core. |
|||
This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ |
|||
|
|||
uint8_t dma_enable; /*!< USB DMA state. |
|||
If DMA is not supported this parameter shall be set by default to zero */ |
|||
|
|||
uint8_t speed; /*!< USB Core speed. |
|||
This parameter can be any value of @ref PCD_Speed/HCD_Speed |
|||
(HCD_SPEED_xxx, HCD_SPEED_xxx) */ |
|||
|
|||
uint8_t ep0_mps; /*!< Set the Endpoint 0 Max Packet size. */ |
|||
|
|||
uint8_t phy_itface; /*!< Select the used PHY interface. |
|||
This parameter can be any value of @ref PCD_PHY_Module/HCD_PHY_Module */ |
|||
|
|||
uint8_t Sof_enable; /*!< Enable or disable the output of the SOF signal. */ |
|||
|
|||
uint8_t low_power_enable; /*!< Enable or disable the low Power Mode. */ |
|||
|
|||
uint8_t lpm_enable; /*!< Enable or disable Link Power Management. */ |
|||
|
|||
uint8_t battery_charging_enable; /*!< Enable or disable Battery charging. */ |
|||
|
|||
uint8_t vbus_sensing_enable; /*!< Enable or disable the VBUS Sensing feature. */ |
|||
|
|||
uint8_t use_dedicated_ep1; /*!< Enable or disable the use of the dedicated EP1 interrupt. */ |
|||
|
|||
uint8_t use_external_vbus; /*!< Enable or disable the use of the external VBUS. */ |
|||
|
|||
} USB_CfgTypeDef; |
|||
|
|||
typedef struct |
|||
{ |
|||
uint8_t num; /*!< Endpoint number |
|||
This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ |
|||
|
|||
uint8_t is_in; /*!< Endpoint direction |
|||
This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ |
|||
|
|||
uint8_t is_stall; /*!< Endpoint stall condition |
|||
This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ |
|||
|
|||
uint8_t is_iso_incomplete; /*!< Endpoint isoc condition |
|||
This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ |
|||
|
|||
uint8_t type; /*!< Endpoint type |
|||
This parameter can be any value of @ref USB_LL_EP_Type */ |
|||
|
|||
uint8_t data_pid_start; /*!< Initial data PID |
|||
This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ |
|||
|
|||
uint32_t maxpacket; /*!< Endpoint Max packet size |
|||
This parameter must be a number between Min_Data = 0 and Max_Data = 64KB */ |
|||
|
|||
uint8_t *xfer_buff; /*!< Pointer to transfer buffer */ |
|||
|
|||
uint32_t xfer_len; /*!< Current transfer length */ |
|||
|
|||
uint32_t xfer_count; /*!< Partial transfer length in case of multi packet transfer */ |
|||
|
|||
uint8_t even_odd_frame; /*!< IFrame parity |
|||
This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ |
|||
|
|||
uint16_t tx_fifo_num; /*!< Transmission FIFO number |
|||
This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ |
|||
|
|||
uint32_t dma_addr; /*!< 32 bits aligned transfer buffer address */ |
|||
|
|||
uint32_t xfer_size; /*!< requested transfer size */ |
|||
} USB_EPTypeDef; |
|||
|
|||
typedef struct |
|||
{ |
|||
uint8_t dev_addr; /*!< USB device address. |
|||
This parameter must be a number between Min_Data = 1 and Max_Data = 255 */ |
|||
|
|||
uint8_t ch_num; /*!< Host channel number. |
|||
This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ |
|||
|
|||
uint8_t ep_num; /*!< Endpoint number. |
|||
This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ |
|||
|
|||
uint8_t ep_is_in; /*!< Endpoint direction |
|||
This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ |
|||
|
|||
uint8_t speed; /*!< USB Host Channel speed. |
|||
This parameter can be any value of @ref HCD_Device_Speed: |
|||
(HCD_DEVICE_SPEED_xxx) */ |
|||
|
|||
uint8_t do_ping; /*!< Enable or disable the use of the PING protocol for HS mode. */ |
|||
uint8_t do_ssplit; /*!< Enable start split transaction in HS mode. */ |
|||
uint8_t do_csplit; /*!< Enable complete split transaction in HS mode. */ |
|||
uint8_t ep_ss_schedule; /*!< Enable periodic endpoint start split schedule . */ |
|||
uint32_t iso_splt_xactPos; /*!< iso split transfer transaction position. */ |
|||
|
|||
uint8_t hub_port_nbr; /*!< USB HUB port number */ |
|||
uint8_t hub_addr; /*!< USB HUB address */ |
|||
|
|||
uint8_t ep_type; /*!< Endpoint Type. |
|||
This parameter can be any value of @ref USB_LL_EP_Type */ |
|||
|
|||
uint16_t max_packet; /*!< Endpoint Max packet size. |
|||
This parameter must be a number between Min_Data = 0 and Max_Data = 64KB */ |
|||
|
|||
uint8_t data_pid; /*!< Initial data PID. |
|||
This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ |
|||
|
|||
uint8_t *xfer_buff; /*!< Pointer to transfer buffer. */ |
|||
|
|||
uint32_t XferSize; /*!< OTG Channel transfer size. */ |
|||
|
|||
uint32_t xfer_len; /*!< Current transfer length. */ |
|||
|
|||
uint32_t xfer_count; /*!< Partial transfer length in case of multi packet transfer. */ |
|||
|
|||
uint8_t toggle_in; /*!< IN transfer current toggle flag. |
|||
This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ |
|||
|
|||
uint8_t toggle_out; /*!< OUT transfer current toggle flag |
|||
This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ |
|||
|
|||
uint32_t dma_addr; /*!< 32 bits aligned transfer buffer address. */ |
|||
|
|||
uint32_t ErrCnt; /*!< Host channel error count. */ |
|||
uint32_t NyetErrCnt; /*!< Complete Split NYET Host channel error count. */ |
|||
|
|||
USB_URBStateTypeDef urb_state; /*!< URB state. |
|||
This parameter can be any value of @ref USB_URBStateTypeDef */ |
|||
|
|||
USB_HCStateTypeDef state; /*!< Host Channel state. |
|||
This parameter can be any value of @ref USB_HCStateTypeDef */ |
|||
} USB_HCTypeDef; |
|||
|
|||
typedef USB_ModeTypeDef USB_OTG_ModeTypeDef; |
|||
typedef USB_CfgTypeDef USB_OTG_CfgTypeDef; |
|||
typedef USB_EPTypeDef USB_OTG_EPTypeDef; |
|||
typedef USB_URBStateTypeDef USB_OTG_URBStateTypeDef; |
|||
typedef USB_HCStateTypeDef USB_OTG_HCStateTypeDef; |
|||
typedef USB_HCTypeDef USB_OTG_HCTypeDef; |
|||
|
|||
/* Exported constants --------------------------------------------------------*/ |
|||
|
|||
/** @defgroup PCD_Exported_Constants PCD Exported Constants |
|||
* @{ |
|||
*/ |
|||
|
|||
#if defined (USB_OTG_FS) || defined (USB_OTG_HS) |
|||
/** @defgroup USB_OTG_CORE VERSION ID |
|||
* @{ |
|||
*/ |
|||
#define USB_OTG_CORE_ID_300A 0x4F54300AU |
|||
#define USB_OTG_CORE_ID_310A 0x4F54310AU |
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/** @defgroup USB_Core_Mode_ USB Core Mode |
|||
* @{ |
|||
*/ |
|||
#define USB_OTG_MODE_DEVICE 0U |
|||
#define USB_OTG_MODE_HOST 1U |
|||
#define USB_OTG_MODE_DRD 2U |
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/** @defgroup USB_LL_Core_Speed USB Low Layer Core Speed |
|||
* @{ |
|||
*/ |
|||
#define USB_OTG_SPEED_HIGH 0U |
|||
#define USB_OTG_SPEED_HIGH_IN_FULL 1U |
|||
#define USB_OTG_SPEED_FULL 3U |
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/** @defgroup USB_LL_Core_PHY USB Low Layer Core PHY |
|||
* @{ |
|||
*/ |
|||
#define USB_OTG_ULPI_PHY 1U |
|||
#define USB_OTG_EMBEDDED_PHY 2U |
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/** @defgroup USB_LL_Turnaround_Timeout Turnaround Timeout Value |
|||
* @{ |
|||
*/ |
|||
#ifndef USBD_HS_TRDT_VALUE |
|||
#define USBD_HS_TRDT_VALUE 9U |
|||
#endif /* USBD_HS_TRDT_VALUE */ |
|||
#ifndef USBD_FS_TRDT_VALUE |
|||
#define USBD_FS_TRDT_VALUE 5U |
|||
#define USBD_DEFAULT_TRDT_VALUE 9U |
|||
#endif /* USBD_HS_TRDT_VALUE */ |
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/** @defgroup USB_LL_Core_MPS USB Low Layer Core MPS |
|||
* @{ |
|||
*/ |
|||
#define USB_OTG_HS_MAX_PACKET_SIZE 512U |
|||
#define USB_OTG_FS_MAX_PACKET_SIZE 64U |
|||
#define USB_OTG_MAX_EP0_SIZE 64U |
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/** @defgroup USB_LL_Core_PHY_Frequency USB Low Layer Core PHY Frequency |
|||
* @{ |
|||
*/ |
|||
#define DSTS_ENUMSPD_HS_PHY_30MHZ_OR_60MHZ (0U << 1) |
|||
#define DSTS_ENUMSPD_FS_PHY_30MHZ_OR_60MHZ (1U << 1) |
|||
#define DSTS_ENUMSPD_FS_PHY_48MHZ (3U << 1) |
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/** @defgroup USB_LL_CORE_Frame_Interval USB Low Layer Core Frame Interval |
|||
* @{ |
|||
*/ |
|||
#define DCFG_FRAME_INTERVAL_80 0U |
|||
#define DCFG_FRAME_INTERVAL_85 1U |
|||
#define DCFG_FRAME_INTERVAL_90 2U |
|||
#define DCFG_FRAME_INTERVAL_95 3U |
|||
/** |
|||
* @} |
|||
*/ |
|||
#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */ |
|||
/** @defgroup USB_LL_EP0_MPS USB Low Layer EP0 MPS |
|||
* @{ |
|||
*/ |
|||
#define EP_MPS_64 0U |
|||
#define EP_MPS_32 1U |
|||
#define EP_MPS_16 2U |
|||
#define EP_MPS_8 3U |
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/** @defgroup USB_LL_EP_Type USB Low Layer EP Type |
|||
* @{ |
|||
*/ |
|||
#define EP_TYPE_CTRL 0U |
|||
#define EP_TYPE_ISOC 1U |
|||
#define EP_TYPE_BULK 2U |
|||
#define EP_TYPE_INTR 3U |
|||
#define EP_TYPE_MSK 3U |
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/** @defgroup USB_LL_EP_Speed USB Low Layer EP Speed |
|||
* @{ |
|||
*/ |
|||
#define EP_SPEED_LOW 0U |
|||
#define EP_SPEED_FULL 1U |
|||
#define EP_SPEED_HIGH 2U |
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/** @defgroup USB_LL_CH_PID_Type USB Low Layer Channel PID Type |
|||
* @{ |
|||
*/ |
|||
#define HC_PID_DATA0 0U |
|||
#define HC_PID_DATA2 1U |
|||
#define HC_PID_DATA1 2U |
|||
#define HC_PID_SETUP 3U |
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/** @defgroup USB_LL Device Speed |
|||
* @{ |
|||
*/ |
|||
#define USBD_HS_SPEED 0U |
|||
#define USBD_HSINFS_SPEED 1U |
|||
#define USBH_HS_SPEED 0U |
|||
#define USBD_FS_SPEED 2U |
|||
#define USBH_FSLS_SPEED 1U |
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
#if defined (USB_OTG_FS) || defined (USB_OTG_HS) |
|||
/** @defgroup USB_LL_STS_Defines USB Low Layer STS Defines |
|||
* @{ |
|||
*/ |
|||
#define STS_GOUT_NAK 1U |
|||
#define STS_DATA_UPDT 2U |
|||
#define STS_XFER_COMP 3U |
|||
#define STS_SETUP_COMP 4U |
|||
#define STS_SETUP_UPDT 6U |
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/** @defgroup USB_LL_HCFG_SPEED_Defines USB Low Layer HCFG Speed Defines |
|||
* @{ |
|||
*/ |
|||
#define HCFG_30_60_MHZ 0U |
|||
#define HCFG_48_MHZ 1U |
|||
#define HCFG_6_MHZ 2U |
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/** @defgroup USB_LL_HFIR_Defines USB Low Layer frame interval Defines |
|||
* @{ |
|||
*/ |
|||
#define HFIR_6_MHZ 6000U |
|||
#define HFIR_60_MHZ 60000U |
|||
#define HFIR_48_MHZ 48000U |
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/** @defgroup USB_LL_HPRT0_PRTSPD_SPEED_Defines USB Low Layer HPRT0 PRTSPD Speed Defines |
|||
* @{ |
|||
*/ |
|||
#define HPRT0_PRTSPD_HIGH_SPEED 0U |
|||
#define HPRT0_PRTSPD_FULL_SPEED 1U |
|||
#define HPRT0_PRTSPD_LOW_SPEED 2U |
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
#define HCCHAR_CTRL 0U |
|||
#define HCCHAR_ISOC 1U |
|||
#define HCCHAR_BULK 2U |
|||
#define HCCHAR_INTR 3U |
|||
|
|||
#define GRXSTS_PKTSTS_IN 2U |
|||
#define GRXSTS_PKTSTS_IN_XFER_COMP 3U |
|||
#define GRXSTS_PKTSTS_DATA_TOGGLE_ERR 5U |
|||
#define GRXSTS_PKTSTS_CH_HALTED 7U |
|||
|
|||
#define CLEAR_INTERRUPT_MASK 0xFFFFFFFFU |
|||
|
|||
#define HC_MAX_PKT_CNT 256U |
|||
#define ISO_SPLT_MPS 188U |
|||
|
|||
#define HCSPLT_BEGIN 1U |
|||
#define HCSPLT_MIDDLE 2U |
|||
#define HCSPLT_END 3U |
|||
#define HCSPLT_FULL 4U |
|||
|
|||
#define TEST_J 1U |
|||
#define TEST_K 2U |
|||
#define TEST_SE0_NAK 3U |
|||
#define TEST_PACKET 4U |
|||
#define TEST_FORCE_EN 5U |
|||
|
|||
#define USBx_PCGCCTL *(__IO uint32_t *)((uint32_t)USBx_BASE + USB_OTG_PCGCCTL_BASE) |
|||
#define USBx_HPRT0 *(__IO uint32_t *)((uint32_t)USBx_BASE + USB_OTG_HOST_PORT_BASE) |
|||
|
|||
#define USBx_DEVICE ((USB_OTG_DeviceTypeDef *)(USBx_BASE + USB_OTG_DEVICE_BASE)) |
|||
#define USBx_INEP(i) ((USB_OTG_INEndpointTypeDef *)(USBx_BASE\ |
|||
+ USB_OTG_IN_ENDPOINT_BASE + ((i) * USB_OTG_EP_REG_SIZE))) |
|||
|
|||
#define USBx_OUTEP(i) ((USB_OTG_OUTEndpointTypeDef *)(USBx_BASE\ |
|||
+ USB_OTG_OUT_ENDPOINT_BASE + ((i) * USB_OTG_EP_REG_SIZE))) |
|||
|
|||
#define USBx_DFIFO(i) *(__IO uint32_t *)(USBx_BASE + USB_OTG_FIFO_BASE + ((i) * USB_OTG_FIFO_SIZE)) |
|||
|
|||
#define USBx_HOST ((USB_OTG_HostTypeDef *)(USBx_BASE + USB_OTG_HOST_BASE)) |
|||
#define USBx_HC(i) ((USB_OTG_HostChannelTypeDef *)(USBx_BASE\ |
|||
+ USB_OTG_HOST_CHANNEL_BASE\ |
|||
+ ((i) * USB_OTG_HOST_CHANNEL_SIZE))) |
|||
|
|||
|
|||
#define EP_ADDR_MSK 0xFU |
|||
#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */ |
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/* Exported macro ------------------------------------------------------------*/ |
|||
/** @defgroup USB_LL_Exported_Macros USB Low Layer Exported Macros |
|||
* @{ |
|||
*/ |
|||
#if defined (USB_OTG_FS) || defined (USB_OTG_HS) |
|||
#define USB_MASK_INTERRUPT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->GINTMSK &= ~(__INTERRUPT__)) |
|||
#define USB_UNMASK_INTERRUPT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->GINTMSK |= (__INTERRUPT__)) |
|||
|
|||
#define CLEAR_IN_EP_INTR(__EPNUM__, __INTERRUPT__) (USBx_INEP(__EPNUM__)->DIEPINT = (__INTERRUPT__)) |
|||
#define CLEAR_OUT_EP_INTR(__EPNUM__, __INTERRUPT__) (USBx_OUTEP(__EPNUM__)->DOEPINT = (__INTERRUPT__)) |
|||
#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */ |
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/* Exported functions --------------------------------------------------------*/ |
|||
/** @addtogroup USB_LL_Exported_Functions USB Low Layer Exported Functions |
|||
* @{ |
|||
*/ |
|||
#if defined (USB_OTG_FS) || defined (USB_OTG_HS) |
|||
HAL_StatusTypeDef USB_CoreInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg); |
|||
HAL_StatusTypeDef USB_DevInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg); |
|||
HAL_StatusTypeDef USB_EnableGlobalInt(USB_OTG_GlobalTypeDef *USBx); |
|||
HAL_StatusTypeDef USB_DisableGlobalInt(USB_OTG_GlobalTypeDef *USBx); |
|||
HAL_StatusTypeDef USB_SetTurnaroundTime(USB_OTG_GlobalTypeDef *USBx, uint32_t hclk, uint8_t speed); |
|||
HAL_StatusTypeDef USB_SetCurrentMode(USB_OTG_GlobalTypeDef *USBx, USB_OTG_ModeTypeDef mode); |
|||
HAL_StatusTypeDef USB_SetDevSpeed(const USB_OTG_GlobalTypeDef *USBx, uint8_t speed); |
|||
HAL_StatusTypeDef USB_FlushRxFifo(USB_OTG_GlobalTypeDef *USBx); |
|||
HAL_StatusTypeDef USB_FlushTxFifo(USB_OTG_GlobalTypeDef *USBx, uint32_t num); |
|||
HAL_StatusTypeDef USB_ActivateEndpoint(const USB_OTG_GlobalTypeDef *USBx, const USB_OTG_EPTypeDef *ep); |
|||
HAL_StatusTypeDef USB_DeactivateEndpoint(const USB_OTG_GlobalTypeDef *USBx, const USB_OTG_EPTypeDef *ep); |
|||
HAL_StatusTypeDef USB_ActivateDedicatedEndpoint(const USB_OTG_GlobalTypeDef *USBx, const USB_OTG_EPTypeDef *ep); |
|||
HAL_StatusTypeDef USB_DeactivateDedicatedEndpoint(const USB_OTG_GlobalTypeDef *USBx, const USB_OTG_EPTypeDef *ep); |
|||
HAL_StatusTypeDef USB_EPStartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep, uint8_t dma); |
|||
HAL_StatusTypeDef USB_WritePacket(const USB_OTG_GlobalTypeDef *USBx, uint8_t *src, |
|||
uint8_t ch_ep_num, uint16_t len, uint8_t dma); |
|||
|
|||
void *USB_ReadPacket(const USB_OTG_GlobalTypeDef *USBx, uint8_t *dest, uint16_t len); |
|||
HAL_StatusTypeDef USB_EPSetStall(const USB_OTG_GlobalTypeDef *USBx, const USB_OTG_EPTypeDef *ep); |
|||
HAL_StatusTypeDef USB_EPClearStall(const USB_OTG_GlobalTypeDef *USBx, const USB_OTG_EPTypeDef *ep); |
|||
HAL_StatusTypeDef USB_EPStopXfer(const USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); |
|||
HAL_StatusTypeDef USB_SetDevAddress(const USB_OTG_GlobalTypeDef *USBx, uint8_t address); |
|||
HAL_StatusTypeDef USB_DevConnect(const USB_OTG_GlobalTypeDef *USBx); |
|||
HAL_StatusTypeDef USB_DevDisconnect(const USB_OTG_GlobalTypeDef *USBx); |
|||
HAL_StatusTypeDef USB_StopDevice(USB_OTG_GlobalTypeDef *USBx); |
|||
HAL_StatusTypeDef USB_ActivateSetup(const USB_OTG_GlobalTypeDef *USBx); |
|||
HAL_StatusTypeDef USB_EP0_OutStart(const USB_OTG_GlobalTypeDef *USBx, uint8_t dma, const uint8_t *psetup); |
|||
uint8_t USB_GetDevSpeed(const USB_OTG_GlobalTypeDef *USBx); |
|||
uint32_t USB_GetMode(const USB_OTG_GlobalTypeDef *USBx); |
|||
uint32_t USB_ReadInterrupts(USB_OTG_GlobalTypeDef const *USBx); |
|||
uint32_t USB_ReadChInterrupts(const USB_OTG_GlobalTypeDef *USBx, uint8_t chnum); |
|||
uint32_t USB_ReadDevAllOutEpInterrupt(const USB_OTG_GlobalTypeDef *USBx); |
|||
uint32_t USB_ReadDevOutEPInterrupt(const USB_OTG_GlobalTypeDef *USBx, uint8_t epnum); |
|||
uint32_t USB_ReadDevAllInEpInterrupt(const USB_OTG_GlobalTypeDef *USBx); |
|||
uint32_t USB_ReadDevInEPInterrupt(const USB_OTG_GlobalTypeDef *USBx, uint8_t epnum); |
|||
void USB_ClearInterrupts(USB_OTG_GlobalTypeDef *USBx, uint32_t interrupt); |
|||
|
|||
HAL_StatusTypeDef USB_HostInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg); |
|||
HAL_StatusTypeDef USB_InitFSLSPClkSel(const USB_OTG_GlobalTypeDef *USBx, uint8_t freq); |
|||
HAL_StatusTypeDef USB_ResetPort(const USB_OTG_GlobalTypeDef *USBx); |
|||
HAL_StatusTypeDef USB_DriveVbus(const USB_OTG_GlobalTypeDef *USBx, uint8_t state); |
|||
uint32_t USB_GetHostSpeed(USB_OTG_GlobalTypeDef const *USBx); |
|||
uint32_t USB_GetCurrentFrame(USB_OTG_GlobalTypeDef const *USBx); |
|||
HAL_StatusTypeDef USB_HC_Init(USB_OTG_GlobalTypeDef *USBx, uint8_t ch_num, |
|||
uint8_t epnum, uint8_t dev_address, uint8_t speed, |
|||
uint8_t ep_type, uint16_t mps); |
|||
HAL_StatusTypeDef USB_HC_StartXfer(USB_OTG_GlobalTypeDef *USBx, |
|||
USB_OTG_HCTypeDef *hc, uint8_t dma); |
|||
|
|||
uint32_t USB_HC_ReadInterrupt(const USB_OTG_GlobalTypeDef *USBx); |
|||
HAL_StatusTypeDef USB_HC_Halt(const USB_OTG_GlobalTypeDef *USBx, uint8_t hc_num); |
|||
HAL_StatusTypeDef USB_DoPing(const USB_OTG_GlobalTypeDef *USBx, uint8_t ch_num); |
|||
HAL_StatusTypeDef USB_StopHost(USB_OTG_GlobalTypeDef *USBx); |
|||
HAL_StatusTypeDef USB_ActivateRemoteWakeup(const USB_OTG_GlobalTypeDef *USBx); |
|||
HAL_StatusTypeDef USB_DeActivateRemoteWakeup(const USB_OTG_GlobalTypeDef *USBx); |
|||
#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */ |
|||
|
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/** |
|||
* @} |
|||
*/ |
|||
|
|||
/** |
|||
* @} |
|||
*/ |
|||
#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */ |
|||
|
|||
#ifdef __cplusplus |
|||
} |
|||
#endif /* __cplusplus */ |
|||
|
|||
|
|||
#endif /* STM32F4xx_LL_USB_H */ |
1997
STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.c
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
2316
STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
Write
Preview
Loading…
Cancel
Save
Reference in new issue