32 HAL PCD Generic Driver
32.1 PCD Firmware driver registers structures
32.1.1 PCD_HandleTypeDef
Data Fields
PCD_TypeDef * Instance
PCD_InitTypeDef Init
PCD_EPTypeDef IN_ep
PCD_EPTypeDef OUT_ep
HAL_LockTypeDef Lock
__IO PCD_StateTypeDef State
uint32_t Setup
void * pData
Field Documentation
PCD_TypeDef* PCD_HandleTypeDef::Instance
Register base address
PCD_InitTypeDef PCD_HandleTypeDef::Init
PCD required parameters
PCD_EPTypeDef PCD_HandleTypeDef::IN_ep[16U]
IN endpoint parameters
PCD_EPTypeDef PCD_HandleTypeDef::OUT_ep[16U]
OUT endpoint parameters
HAL_LockTypeDef PCD_HandleTypeDef::Lock
PCD peripheral status
__IO PCD_StateTypeDef PCD_HandleTypeDef::State
PCD communication state
uint32_t PCD_HandleTypeDef::Setup[12]
Setup packet buffer
void* PCD_HandleTypeDef::pData
Pointer to upper stack Handler
32.2 PCD Firmware driver API description
32.2.1 How to use this driver
The PCD HAL driver can be used as follows:
1. Declare a PCD_HandleTypeDef handle structure, for example: PCD_HandleTypeDef
hpcd;
2. Fill parameters of Init structure in HCD handle
3. Call HAL_PCD_Init() API to initialize the PCD peripheral (Core, Device core, ...)
4. Initialize the PCD low level resources through the HAL_PCD_MspInit() API:
a. Enable the PCD/USB Low Level interface clock using
__HAL_RCC_USB_OTG_FS_CLK_ENABLE();
__HAL_RCC_USB_OTG_HS_CLK_ENABLE(); (For High Speed Mode)
b. Initialize the related GPIO clocks
c. Configure PCD pin-out
d. Configure PCD NVIC interrupt
5. Associate the Upper USB device stack to the HAL PCD Driver: