STM32L443xx HAL User Manual
Data Structures | Defines | Typedefs | Enumerations | Functions
stm32l4xx_hal_pcd.h File Reference

Header file of PCD HAL module. More...

#include "stm32l4xx_ll_usb.h"
#include "stm32l4xx_hal_pcd_ex.h"

Go to the source code of this file.

Data Structures

struct  __PCD_HandleTypeDef
 PCD Handle Structure definition. More...

Defines

#define PCD_SPEED_FULL   USBD_FS_SPEED
#define PCD_PHY_ULPI   1U
#define PCD_PHY_EMBEDDED   2U
#define PCD_PHY_UTMI   3U
#define HAL_PCD_ERROR_INVALID_CALLBACK   (0x00000010U)
#define __HAL_PCD_ENABLE(__HANDLE__)   (void)USB_EnableGlobalInt ((__HANDLE__)->Instance)
#define __HAL_PCD_DISABLE(__HANDLE__)   (void)USB_DisableGlobalInt ((__HANDLE__)->Instance)
#define __HAL_PCD_GET_FLAG(__HANDLE__, __INTERRUPT__)
#define __HAL_PCD_CLEAR_FLAG(__HANDLE__, __INTERRUPT__)
#define __HAL_USB_WAKEUP_EXTI_ENABLE_IT()   EXTI->IMR1 |= USB_WAKEUP_EXTI_LINE
#define __HAL_USB_WAKEUP_EXTI_DISABLE_IT()   EXTI->IMR1 &= ~(USB_WAKEUP_EXTI_LINE)
#define USB_WAKEUP_EXTI_LINE   (0x1U << 17)
#define PCD_EP0MPS_64   EP_MPS_64
#define PCD_EP0MPS_32   EP_MPS_32
#define PCD_EP0MPS_16   EP_MPS_16
#define PCD_EP0MPS_08   EP_MPS_8
#define PCD_ENDP0   0U
#define PCD_ENDP1   1U
#define PCD_ENDP2   2U
#define PCD_ENDP3   3U
#define PCD_ENDP4   4U
#define PCD_ENDP5   5U
#define PCD_ENDP6   6U
#define PCD_ENDP7   7U
#define PCD_SNG_BUF   0U
#define PCD_DBL_BUF   1U
#define USB_CNTRX_NBLK_MSK   (0x1FU << 10)
#define USB_CNTRX_BLSIZE   (0x1U << 15)
#define PCD_SET_ENDPOINT(USBx, bEpNum, wRegValue)
#define PCD_GET_ENDPOINT(USBx, bEpNum)   (*(__IO uint16_t *)(&(USBx)->EP0R + ((bEpNum) * 2U)))
#define USB_EP0StartXfer   USB_EPStartXfer
#define PCD_SET_EPTYPE(USBx, bEpNum, wType)
 sets the type in the endpoint register(bits EP_TYPE[1:0])
#define PCD_GET_EPTYPE(USBx, bEpNum)   (PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EP_T_FIELD)
 gets the type in the endpoint register(bits EP_TYPE[1:0])
#define PCD_FREE_USER_BUFFER(USBx, bEpNum, bDir)
 free buffer used from the application realizing it to the line toggles bit SW_BUF in the double buffered endpoint register
#define PCD_SET_EP_TX_STATUS(USBx, bEpNum, wState)
 sets the status for tx transfer (bits STAT_TX[1:0]).
#define PCD_SET_EP_RX_STATUS(USBx, bEpNum, wState)
 sets the status for rx transfer (bits STAT_TX[1:0])
#define PCD_SET_EP_TXRX_STATUS(USBx, bEpNum, wStaterx, wStatetx)
 sets the status for rx & tx (bits STAT_TX[1:0] & STAT_RX[1:0])
#define PCD_GET_EP_TX_STATUS(USBx, bEpNum)   ((uint16_t)PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPTX_STAT)
 gets the status for tx/rx transfer (bits STAT_TX[1:0] /STAT_RX[1:0])
#define PCD_GET_EP_RX_STATUS(USBx, bEpNum)   ((uint16_t)PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPRX_STAT)
#define PCD_SET_EP_TX_VALID(USBx, bEpNum)   (PCD_SET_EP_TX_STATUS((USBx), (bEpNum), USB_EP_TX_VALID))
 sets directly the VALID tx/rx-status into the endpoint register
#define PCD_SET_EP_RX_VALID(USBx, bEpNum)   (PCD_SET_EP_RX_STATUS((USBx), (bEpNum), USB_EP_RX_VALID))
#define PCD_GET_EP_TX_STALL_STATUS(USBx, bEpNum)   (PCD_GET_EP_TX_STATUS((USBx), (bEpNum)) == USB_EP_TX_STALL)
 checks stall condition in an endpoint.
#define PCD_GET_EP_RX_STALL_STATUS(USBx, bEpNum)   (PCD_GET_EP_RX_STATUS((USBx), (bEpNum)) == USB_EP_RX_STALL)
#define PCD_SET_EP_KIND(USBx, bEpNum)
 set & clear EP_KIND bit.
#define PCD_CLEAR_EP_KIND(USBx, bEpNum)
#define PCD_SET_OUT_STATUS(USBx, bEpNum)   PCD_SET_EP_KIND((USBx), (bEpNum))
 Sets/clears directly STATUS_OUT bit in the endpoint register.
#define PCD_CLEAR_OUT_STATUS(USBx, bEpNum)   PCD_CLEAR_EP_KIND((USBx), (bEpNum))
#define PCD_SET_BULK_EP_DBUF(USBx, bEpNum)   PCD_SET_EP_KIND((USBx), (bEpNum))
 Sets/clears directly EP_KIND bit in the endpoint register.
#define PCD_CLEAR_BULK_EP_DBUF(USBx, bEpNum)   PCD_CLEAR_EP_KIND((USBx), (bEpNum))
#define PCD_CLEAR_RX_EP_CTR(USBx, bEpNum)
 Clears bit CTR_RX / CTR_TX in the endpoint register.
#define PCD_CLEAR_TX_EP_CTR(USBx, bEpNum)
#define PCD_RX_DTOG(USBx, bEpNum)
 Toggles DTOG_RX / DTOG_TX bit in the endpoint register.
#define PCD_TX_DTOG(USBx, bEpNum)
#define PCD_CLEAR_RX_DTOG(USBx, bEpNum)
 Clears DTOG_RX / DTOG_TX bit in the endpoint register.
#define PCD_CLEAR_TX_DTOG(USBx, bEpNum)
#define PCD_SET_EP_ADDRESS(USBx, bEpNum, bAddr)
 Sets address in an endpoint register.
#define PCD_GET_EP_ADDRESS(USBx, bEpNum)   ((uint8_t)(PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPADDR_FIELD))
 Gets address in an endpoint register.
#define PCD_EP_TX_CNT(USBx, bEpNum)
#define PCD_EP_RX_CNT(USBx, bEpNum)
#define PCD_SET_EP_TX_ADDRESS(USBx, bEpNum, wAddr)
 sets address of the tx/rx buffer.
#define PCD_SET_EP_RX_ADDRESS(USBx, bEpNum, wAddr)
#define PCD_GET_EP_TX_ADDRESS(USBx, bEpNum)   ((uint16_t)*PCD_EP_TX_ADDRESS((USBx), (bEpNum)))
 Gets address of the tx/rx buffer.
#define PCD_GET_EP_RX_ADDRESS(USBx, bEpNum)   ((uint16_t)*PCD_EP_RX_ADDRESS((USBx), (bEpNum)))
#define PCD_CALC_BLK32(pdwReg, wCount, wNBlocks)
 Sets counter of rx buffer with no.
#define PCD_CALC_BLK2(pdwReg, wCount, wNBlocks)
#define PCD_SET_EP_CNT_RX_REG(pdwReg, wCount)
#define PCD_SET_EP_RX_DBUF0_CNT(USBx, bEpNum, wCount)
#define PCD_SET_EP_TX_CNT(USBx, bEpNum, wCount)
 sets counter for the tx/rx buffer.
#define PCD_SET_EP_RX_CNT(USBx, bEpNum, wCount)
#define PCD_GET_EP_TX_CNT(USBx, bEpNum)   ((uint32_t)(*PCD_EP_TX_CNT((USBx), (bEpNum))) & 0x3ffU)
 gets counter of the tx buffer.
#define PCD_GET_EP_RX_CNT(USBx, bEpNum)   ((uint32_t)(*PCD_EP_RX_CNT((USBx), (bEpNum))) & 0x3ffU)
#define PCD_SET_EP_DBUF0_ADDR(USBx, bEpNum, wBuf0Addr)
 Sets buffer 0/1 address in a double buffer endpoint.
#define PCD_SET_EP_DBUF1_ADDR(USBx, bEpNum, wBuf1Addr)
#define PCD_SET_EP_DBUF_ADDR(USBx, bEpNum, wBuf0Addr, wBuf1Addr)
 Sets addresses in a double buffer endpoint.
#define PCD_GET_EP_DBUF0_ADDR(USBx, bEpNum)   (PCD_GET_EP_TX_ADDRESS((USBx), (bEpNum)))
 Gets buffer 0/1 address of a double buffer endpoint.
#define PCD_GET_EP_DBUF1_ADDR(USBx, bEpNum)   (PCD_GET_EP_RX_ADDRESS((USBx), (bEpNum)))
#define PCD_SET_EP_DBUF0_CNT(USBx, bEpNum, bDir, wCount)
 Gets buffer 0/1 address of a double buffer endpoint.
#define PCD_SET_EP_DBUF1_CNT(USBx, bEpNum, bDir, wCount)
#define PCD_SET_EP_DBUF_CNT(USBx, bEpNum, bDir, wCount)
#define PCD_GET_EP_DBUF0_CNT(USBx, bEpNum)   (PCD_GET_EP_TX_CNT((USBx), (bEpNum)))
 Gets buffer 0/1 rx/tx counter for double buffering.
#define PCD_GET_EP_DBUF1_CNT(USBx, bEpNum)   (PCD_GET_EP_RX_CNT((USBx), (bEpNum)))

Typedefs

typedef USB_TypeDef PCD_TypeDef
typedef USB_CfgTypeDef PCD_InitTypeDef
typedef USB_EPTypeDef PCD_EPTypeDef
typedef struct __PCD_HandleTypeDef PCD_HandleTypeDef
 PCD Handle Structure definition.
typedef void(* pPCD_CallbackTypeDef )(PCD_HandleTypeDef *hpcd)
typedef void(* pPCD_DataOutStageCallbackTypeDef )(PCD_HandleTypeDef *hpcd, uint8_t epnum)
typedef void(* pPCD_DataInStageCallbackTypeDef )(PCD_HandleTypeDef *hpcd, uint8_t epnum)
typedef void(* pPCD_IsoOutIncpltCallbackTypeDef )(PCD_HandleTypeDef *hpcd, uint8_t epnum)
typedef void(* pPCD_IsoInIncpltCallbackTypeDef )(PCD_HandleTypeDef *hpcd, uint8_t epnum)
typedef void(* pPCD_LpmCallbackTypeDef )(PCD_HandleTypeDef *hpcd, PCD_LPM_MsgTypeDef msg)
typedef void(* pPCD_BcdCallbackTypeDef )(PCD_HandleTypeDef *hpcd, PCD_BCD_MsgTypeDef msg)

Enumerations

enum  PCD_StateTypeDef {
  HAL_PCD_STATE_RESET = 0x00, HAL_PCD_STATE_READY = 0x01, HAL_PCD_STATE_ERROR = 0x02, HAL_PCD_STATE_BUSY = 0x03,
  HAL_PCD_STATE_TIMEOUT = 0x04
}
 PCD State structure definition. More...
enum  PCD_LPM_StateTypeDef { LPM_L0 = 0x00, LPM_L1 = 0x01, LPM_L2 = 0x02, LPM_L3 = 0x03 }
enum  PCD_LPM_MsgTypeDef { PCD_LPM_L0_ACTIVE = 0x00, PCD_LPM_L1_ACTIVE = 0x01 }
enum  PCD_BCD_MsgTypeDef {
  PCD_BCD_ERROR = 0xFF, PCD_BCD_CONTACT_DETECTION = 0xFE, PCD_BCD_STD_DOWNSTREAM_PORT = 0xFD, PCD_BCD_CHARGING_DOWNSTREAM_PORT = 0xFC,
  PCD_BCD_DEDICATED_CHARGING_PORT = 0xFB, PCD_BCD_DISCOVERY_COMPLETED = 0x00
}
enum  HAL_PCD_CallbackIDTypeDef {
  HAL_PCD_SOF_CB_ID = 0x01, HAL_PCD_SETUPSTAGE_CB_ID = 0x02, HAL_PCD_RESET_CB_ID = 0x03, HAL_PCD_SUSPEND_CB_ID = 0x04,
  HAL_PCD_RESUME_CB_ID = 0x05, HAL_PCD_CONNECT_CB_ID = 0x06, HAL_PCD_DISCONNECT_CB_ID = 0x07, HAL_PCD_MSPINIT_CB_ID = 0x08,
  HAL_PCD_MSPDEINIT_CB_ID = 0x09
}

Functions

HAL_StatusTypeDef HAL_PCD_Init (PCD_HandleTypeDef *hpcd)
 Initializes the PCD according to the specified parameters in the PCD_InitTypeDef and initialize the associated handle.
HAL_StatusTypeDef HAL_PCD_DeInit (PCD_HandleTypeDef *hpcd)
 DeInitializes the PCD peripheral.
__weak void HAL_PCD_MspInit (PCD_HandleTypeDef *hpcd)
 Initializes the PCD MSP.
__weak void HAL_PCD_MspDeInit (PCD_HandleTypeDef *hpcd)
 DeInitializes PCD MSP.
HAL_StatusTypeDef HAL_PCD_RegisterCallback (PCD_HandleTypeDef *hpcd, HAL_PCD_CallbackIDTypeDef CallbackID, pPCD_CallbackTypeDef pCallback)
 Register a User USB PCD Callback To be used instead of the weak predefined callback.
HAL_StatusTypeDef HAL_PCD_UnRegisterCallback (PCD_HandleTypeDef *hpcd, HAL_PCD_CallbackIDTypeDef CallbackID)
 Unregister an USB PCD Callback USB PCD callabck is redirected to the weak predefined callback.
HAL_StatusTypeDef HAL_PCD_RegisterDataOutStageCallback (PCD_HandleTypeDef *hpcd, pPCD_DataOutStageCallbackTypeDef pCallback)
 Register USB PCD Data OUT Stage Callback To be used instead of the weak HAL_PCD_DataOutStageCallback() predefined callback.
HAL_StatusTypeDef HAL_PCD_UnRegisterDataOutStageCallback (PCD_HandleTypeDef *hpcd)
 Unregister the USB PCD Data OUT Stage Callback USB PCD Data OUT Stage Callback is redirected to the weak HAL_PCD_DataOutStageCallback() predefined callback.
HAL_StatusTypeDef HAL_PCD_RegisterDataInStageCallback (PCD_HandleTypeDef *hpcd, pPCD_DataInStageCallbackTypeDef pCallback)
 Register USB PCD Data IN Stage Callback To be used instead of the weak HAL_PCD_DataInStageCallback() predefined callback.
HAL_StatusTypeDef HAL_PCD_UnRegisterDataInStageCallback (PCD_HandleTypeDef *hpcd)
 Unregister the USB PCD Data IN Stage Callback USB PCD Data OUT Stage Callback is redirected to the weak HAL_PCD_DataInStageCallback() predefined callback.
HAL_StatusTypeDef HAL_PCD_RegisterIsoOutIncpltCallback (PCD_HandleTypeDef *hpcd, pPCD_IsoOutIncpltCallbackTypeDef pCallback)
 Register USB PCD Iso OUT incomplete Callback To be used instead of the weak HAL_PCD_ISOOUTIncompleteCallback() predefined callback.
HAL_StatusTypeDef HAL_PCD_UnRegisterIsoOutIncpltCallback (PCD_HandleTypeDef *hpcd)
 Unregister the USB PCD Iso OUT incomplete Callback USB PCD Iso OUT incomplete Callback is redirected to the weak HAL_PCD_ISOOUTIncompleteCallback() predefined callback.
HAL_StatusTypeDef HAL_PCD_RegisterIsoInIncpltCallback (PCD_HandleTypeDef *hpcd, pPCD_IsoInIncpltCallbackTypeDef pCallback)
 Register USB PCD Iso IN incomplete Callback To be used instead of the weak HAL_PCD_ISOINIncompleteCallback() predefined callback.
HAL_StatusTypeDef HAL_PCD_UnRegisterIsoInIncpltCallback (PCD_HandleTypeDef *hpcd)
 Unregister the USB PCD Iso IN incomplete Callback USB PCD Iso IN incomplete Callback is redirected to the weak HAL_PCD_ISOINIncompleteCallback() predefined callback.
HAL_StatusTypeDef HAL_PCD_RegisterBcdCallback (PCD_HandleTypeDef *hpcd, pPCD_BcdCallbackTypeDef pCallback)
 Register USB PCD BCD Callback To be used instead of the weak HAL_PCDEx_BCD_Callback() predefined callback.
HAL_StatusTypeDef HAL_PCD_UnRegisterBcdCallback (PCD_HandleTypeDef *hpcd)
 Unregister the USB PCD BCD Callback USB BCD Callback is redirected to the weak HAL_PCDEx_BCD_Callback() predefined callback.
HAL_StatusTypeDef HAL_PCD_RegisterLpmCallback (PCD_HandleTypeDef *hpcd, pPCD_LpmCallbackTypeDef pCallback)
 Register USB PCD LPM Callback To be used instead of the weak HAL_PCDEx_LPM_Callback() predefined callback.
HAL_StatusTypeDef HAL_PCD_UnRegisterLpmCallback (PCD_HandleTypeDef *hpcd)
 Unregister the USB PCD LPM Callback USB LPM Callback is redirected to the weak HAL_PCDEx_LPM_Callback() predefined callback.
HAL_StatusTypeDef HAL_PCD_Start (PCD_HandleTypeDef *hpcd)
 Start the USB device.
HAL_StatusTypeDef HAL_PCD_Stop (PCD_HandleTypeDef *hpcd)
 Stop the USB device.
void HAL_PCD_IRQHandler (PCD_HandleTypeDef *hpcd)
 This function handles PCD interrupt request.
__weak void HAL_PCD_SOFCallback (PCD_HandleTypeDef *hpcd)
 USB Start Of Frame callback.
__weak void HAL_PCD_SetupStageCallback (PCD_HandleTypeDef *hpcd)
 Setup stage callback.
__weak void HAL_PCD_ResetCallback (PCD_HandleTypeDef *hpcd)
 USB Reset callback.
__weak void HAL_PCD_SuspendCallback (PCD_HandleTypeDef *hpcd)
 Suspend event callback.
__weak void HAL_PCD_ResumeCallback (PCD_HandleTypeDef *hpcd)
 Resume event callback.
__weak void HAL_PCD_ConnectCallback (PCD_HandleTypeDef *hpcd)
 Connection event callback.
__weak void HAL_PCD_DisconnectCallback (PCD_HandleTypeDef *hpcd)
 Disconnection event callback.
__weak void HAL_PCD_DataOutStageCallback (PCD_HandleTypeDef *hpcd, uint8_t epnum)
 Data OUT stage callback.
__weak void HAL_PCD_DataInStageCallback (PCD_HandleTypeDef *hpcd, uint8_t epnum)
 Data IN stage callback.
__weak void HAL_PCD_ISOOUTIncompleteCallback (PCD_HandleTypeDef *hpcd, uint8_t epnum)
 Incomplete ISO OUT callback.
__weak void HAL_PCD_ISOINIncompleteCallback (PCD_HandleTypeDef *hpcd, uint8_t epnum)
 Incomplete ISO IN callback.
HAL_StatusTypeDef HAL_PCD_DevConnect (PCD_HandleTypeDef *hpcd)
 Connect the USB device.
HAL_StatusTypeDef HAL_PCD_DevDisconnect (PCD_HandleTypeDef *hpcd)
 Disconnect the USB device.
HAL_StatusTypeDef HAL_PCD_SetAddress (PCD_HandleTypeDef *hpcd, uint8_t address)
 Set the USB Device address.
HAL_StatusTypeDef HAL_PCD_EP_Open (PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint16_t ep_mps, uint8_t ep_type)
 Open and configure an endpoint.
HAL_StatusTypeDef HAL_PCD_EP_Close (PCD_HandleTypeDef *hpcd, uint8_t ep_addr)
 Deactivate an endpoint.
HAL_StatusTypeDef HAL_PCD_EP_Receive (PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len)
 Receive an amount of data.
HAL_StatusTypeDef HAL_PCD_EP_Transmit (PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len)
 Send an amount of data.
HAL_StatusTypeDef HAL_PCD_EP_SetStall (PCD_HandleTypeDef *hpcd, uint8_t ep_addr)
 Set a STALL condition over an endpoint.
HAL_StatusTypeDef HAL_PCD_EP_ClrStall (PCD_HandleTypeDef *hpcd, uint8_t ep_addr)
 Clear a STALL condition over in an endpoint.
HAL_StatusTypeDef HAL_PCD_EP_Flush (PCD_HandleTypeDef *hpcd, uint8_t ep_addr)
 Flush an endpoint.
HAL_StatusTypeDef HAL_PCD_EP_Abort (PCD_HandleTypeDef *hpcd, uint8_t ep_addr)
 Abort an USB EP transaction.
HAL_StatusTypeDef HAL_PCD_ActivateRemoteWakeup (PCD_HandleTypeDef *hpcd)
 Activate remote wakeup signalling.
HAL_StatusTypeDef HAL_PCD_DeActivateRemoteWakeup (PCD_HandleTypeDef *hpcd)
 De-activate remote wakeup signalling.
uint32_t HAL_PCD_EP_GetRxCount (PCD_HandleTypeDef *hpcd, uint8_t ep_addr)
 Get Received Data Size.
PCD_StateTypeDef HAL_PCD_GetState (PCD_HandleTypeDef *hpcd)
 Return the PCD handle state.

Detailed Description

Header file of PCD HAL module.

Author:
MCD Application Team
Attention:

Copyright (c) 2017 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.

Definition in file stm32l4xx_hal_pcd.h.