STM32F103xB HAL User Manual
Data Structures | Defines | Typedefs | Enumerations | Functions
stm32f1xx_hal_pcd.h File Reference

Header file of PCD HAL module. More...

#include "stm32f1xx_ll_usb.h"
#include "stm32f1xx_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->IMR |= USB_WAKEUP_EXTI_LINE
#define __HAL_USB_WAKEUP_EXTI_DISABLE_IT()   EXTI->IMR &= ~(USB_WAKEUP_EXTI_LINE)
#define __HAL_USB_WAKEUP_EXTI_GET_FLAG()   EXTI->PR & (USB_WAKEUP_EXTI_LINE)
#define __HAL_USB_WAKEUP_EXTI_CLEAR_FLAG()   EXTI->PR = USB_WAKEUP_EXTI_LINE
#define __HAL_USB_WAKEUP_EXTI_ENABLE_RISING_EDGE()
#define USB_WAKEUP_EXTI_LINE   (0x1U << 18)
#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_FreeUserBuffer(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_EP_DBUF(USBx, bEpNum)   PCD_SET_EP_KIND((USBx), (bEpNum))
 Sets/clears directly EP_KIND bit in the endpoint register.
#define PCD_CLEAR_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)

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_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.
void HAL_PCD_WKUP_IRQHandler (PCD_HandleTypeDef *hpcd)
 Handles PCD Wakeup 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_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) 2016 STMicroelectronics. All rights reserved.

This software component is licensed by ST under BSD 3-Clause license, the "License"; You may not use this file except in compliance with the License. You may obtain a copy of the License at: opensource.org/licenses/BSD-3-Clause

Definition in file stm32f1xx_hal_pcd.h.