STM32L4xx_HAL_Driver  1.14.0
Initialization and de-initialization functions

Initialization and Configuration functions. More...

Modules

 HAL USB OTG PCD Callback ID enumeration definition
 HAL USB OTG PCD Callback ID enumeration definition.
 
 HAL USB OTG PCD Callback pointer definition
 HAL USB OTG PCD Callback pointer definition.
 

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. More...
 
HAL_StatusTypeDef HAL_PCD_DeInit (PCD_HandleTypeDef *hpcd)
 DeInitializes the PCD peripheral. More...
 
void HAL_PCD_MspInit (PCD_HandleTypeDef *hpcd)
 Initializes the PCD MSP. More...
 
void HAL_PCD_MspDeInit (PCD_HandleTypeDef *hpcd)
 DeInitializes PCD MSP. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 

Detailed Description

Initialization and Configuration functions.

 ===============================================================================
            ##### Initialization and de-initialization functions #####
 ===============================================================================
    [..]  This section provides functions allowing to:

Function Documentation

◆ HAL_PCD_DeInit()

HAL_StatusTypeDef HAL_PCD_DeInit ( PCD_HandleTypeDef hpcd)

DeInitializes the PCD peripheral.

Parameters
hpcdPCD handle
Return values
HALstatus

Definition at line 253 of file stm32l4xx_hal_pcd.c.

254 {
255  /* Check the PCD handle allocation */
256  if (hpcd == NULL)
257  {
258  return HAL_ERROR;
259  }
260 
261  hpcd->State = HAL_PCD_STATE_BUSY;
262 
263  /* Stop Device */
264  (void)HAL_PCD_Stop(hpcd);
265 
266 #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
267  if (hpcd->MspDeInitCallback == NULL)
268  {
269  hpcd->MspDeInitCallback = HAL_PCD_MspDeInit; /* Legacy weak MspDeInit */
270  }
271 
272  /* DeInit the low level hardware */
273  hpcd->MspDeInitCallback(hpcd);
274 #else
275  /* DeInit the low level hardware: CLOCK, NVIC.*/
276  HAL_PCD_MspDeInit(hpcd);
277 #endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
278 
279  hpcd->State = HAL_PCD_STATE_RESET;
280 
281  return HAL_OK;
282 }
return HAL_OK
HAL_StatusTypeDef HAL_PCD_Stop(PCD_HandleTypeDef *hpcd)
Stop the USB device.
void HAL_PCD_MspDeInit(PCD_HandleTypeDef *hpcd)
DeInitializes PCD MSP.

◆ HAL_PCD_Init()

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.

Parameters
hpcdPCD handle
Return values
HALstatus

Definition at line 126 of file stm32l4xx_hal_pcd.c.

127 {
128 #if defined (USB_OTG_FS)
129  USB_OTG_GlobalTypeDef *USBx;
130 #endif /* defined (USB_OTG_FS) */
131  uint8_t i;
132 
133  /* Check the PCD handle allocation */
134  if (hpcd == NULL)
135  {
136  return HAL_ERROR;
137  }
138 
139  /* Check the parameters */
140  assert_param(IS_PCD_ALL_INSTANCE(hpcd->Instance));
141 
142 #if defined (USB_OTG_FS)
143  USBx = hpcd->Instance;
144 #endif /* defined (USB_OTG_FS) */
145 
146  if (hpcd->State == HAL_PCD_STATE_RESET)
147  {
148  /* Allocate lock resource and initialize it */
149  hpcd->Lock = HAL_UNLOCKED;
150 
151 #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
152  hpcd->SOFCallback = HAL_PCD_SOFCallback;
153  hpcd->SetupStageCallback = HAL_PCD_SetupStageCallback;
154  hpcd->ResetCallback = HAL_PCD_ResetCallback;
155  hpcd->SuspendCallback = HAL_PCD_SuspendCallback;
156  hpcd->ResumeCallback = HAL_PCD_ResumeCallback;
157  hpcd->ConnectCallback = HAL_PCD_ConnectCallback;
158  hpcd->DisconnectCallback = HAL_PCD_DisconnectCallback;
159  hpcd->DataOutStageCallback = HAL_PCD_DataOutStageCallback;
160  hpcd->DataInStageCallback = HAL_PCD_DataInStageCallback;
161  hpcd->ISOOUTIncompleteCallback = HAL_PCD_ISOOUTIncompleteCallback;
162  hpcd->ISOINIncompleteCallback = HAL_PCD_ISOINIncompleteCallback;
163  hpcd->LPMCallback = HAL_PCDEx_LPM_Callback;
164  hpcd->BCDCallback = HAL_PCDEx_BCD_Callback;
165 
166  if (hpcd->MspInitCallback == NULL)
167  {
168  hpcd->MspInitCallback = HAL_PCD_MspInit;
169  }
170 
171  /* Init the low level hardware */
172  hpcd->MspInitCallback(hpcd);
173 #else
174  /* Init the low level hardware : GPIO, CLOCK, NVIC... */
175  HAL_PCD_MspInit(hpcd);
176 #endif /* (USE_HAL_PCD_REGISTER_CALLBACKS) */
177  }
178 
179  hpcd->State = HAL_PCD_STATE_BUSY;
180 
181 #if defined (USB_OTG_FS)
182  /* Disable DMA mode for FS instance */
183  if ((USBx->CID & (0x1U << 8)) == 0U)
184  {
185  hpcd->Init.dma_enable = 0U;
186  }
187 #endif /* defined (USB_OTG_FS) */
188 
189  /* Disable the Interrupts */
190  __HAL_PCD_DISABLE(hpcd);
191 
192  /*Init the Core (common init.) */
193  if (USB_CoreInit(hpcd->Instance, hpcd->Init) != HAL_OK)
194  {
195  hpcd->State = HAL_PCD_STATE_ERROR;
196  return HAL_ERROR;
197  }
198 
199  /* Force Device Mode*/
200  (void)USB_SetCurrentMode(hpcd->Instance, USB_DEVICE_MODE);
201 
202  /* Init endpoints structures */
203  for (i = 0U; i < hpcd->Init.dev_endpoints; i++)
204  {
205  /* Init ep structure */
206  hpcd->IN_ep[i].is_in = 1U;
207  hpcd->IN_ep[i].num = i;
208  hpcd->IN_ep[i].tx_fifo_num = i;
209  /* Control until ep is activated */
210  hpcd->IN_ep[i].type = EP_TYPE_CTRL;
211  hpcd->IN_ep[i].maxpacket = 0U;
212  hpcd->IN_ep[i].xfer_buff = 0U;
213  hpcd->IN_ep[i].xfer_len = 0U;
214  }
215 
216  for (i = 0U; i < hpcd->Init.dev_endpoints; i++)
217  {
218  hpcd->OUT_ep[i].is_in = 0U;
219  hpcd->OUT_ep[i].num = i;
220  /* Control until ep is activated */
221  hpcd->OUT_ep[i].type = EP_TYPE_CTRL;
222  hpcd->OUT_ep[i].maxpacket = 0U;
223  hpcd->OUT_ep[i].xfer_buff = 0U;
224  hpcd->OUT_ep[i].xfer_len = 0U;
225  }
226 
227  /* Init Device */
228  if (USB_DevInit(hpcd->Instance, hpcd->Init) != HAL_OK)
229  {
230  hpcd->State = HAL_PCD_STATE_ERROR;
231  return HAL_ERROR;
232  }
233 
234  hpcd->USB_Address = 0U;
235  hpcd->State = HAL_PCD_STATE_READY;
236 
237  /* Activate LPM */
238  if (hpcd->Init.lpm_enable == 1U)
239  {
240  (void)HAL_PCDEx_ActivateLPM(hpcd);
241  }
242 
243  (void)USB_DevDisconnect(hpcd->Instance);
244 
245  return HAL_OK;
246 }
void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd)
Resume event callback.
HAL_StatusTypeDef USB_DevInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg)
USB_DevInit : Initializes the USB_OTG controller registers for device mode.
void HAL_PCD_MspInit(PCD_HandleTypeDef *hpcd)
Initializes the PCD MSP.
void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
Data OUT stage callback.
void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd)
USB Start Of Frame callback.
void HAL_PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
Incomplete ISO IN callback.
void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
Data IN stage callback.
HAL_StatusTypeDef HAL_PCDEx_ActivateLPM(PCD_HandleTypeDef *hpcd)
Activate LPM feature.
void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd)
USB Reset callback.
void HAL_PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
Incomplete ISO OUT callback.
void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd)
Setup stage callback.
return HAL_OK
HAL_StatusTypeDef USB_CoreInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg)
Initializes the USB Core.
void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd)
Suspend event callback.
HAL_StatusTypeDef USB_DevDisconnect(USB_OTG_GlobalTypeDef *USBx)
USB_DevDisconnect : Disconnect the USB device by disabling the pull-up/pull-down. ...
void HAL_PCDEx_LPM_Callback(PCD_HandleTypeDef *hpcd, PCD_LPM_MsgTypeDef msg)
Send LPM message to user layer callback.
HAL_StatusTypeDef USB_SetCurrentMode(USB_OTG_GlobalTypeDef *USBx, USB_ModeTypeDef mode)
USB_SetCurrentMode : Set functional mode.
void HAL_PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd)
Disconnection event callback.
void HAL_PCD_ConnectCallback(PCD_HandleTypeDef *hpcd)
Connection event callback.
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))
void HAL_PCDEx_BCD_Callback(PCD_HandleTypeDef *hpcd, PCD_BCD_MsgTypeDef msg)
Send BatteryCharging message to user layer callback.

◆ HAL_PCD_MspDeInit()

__weak void HAL_PCD_MspDeInit ( PCD_HandleTypeDef hpcd)

DeInitializes PCD MSP.

Parameters
hpcdPCD handle
Return values
None

Definition at line 304 of file stm32l4xx_hal_pcd.c.

305 {
306  /* Prevent unused argument(s) compilation warning */
307  UNUSED(hpcd);
308 
309  /* NOTE : This function should not be modified, when the callback is needed,
310  the HAL_PCD_MspDeInit could be implemented in the user file
311  */
312 }

◆ HAL_PCD_MspInit()

__weak void HAL_PCD_MspInit ( PCD_HandleTypeDef hpcd)

Initializes the PCD MSP.

Parameters
hpcdPCD handle
Return values
None

Definition at line 289 of file stm32l4xx_hal_pcd.c.

290 {
291  /* Prevent unused argument(s) compilation warning */
292  UNUSED(hpcd);
293 
294  /* NOTE : This function should not be modified, when the callback is needed,
295  the HAL_PCD_MspInit could be implemented in the user file
296  */
297 }

◆ HAL_PCD_RegisterBcdCallback()

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.

Parameters
hpcdPCD handle
pCallbackpointer to the USB PCD BCD Callback function
Return values
HALstatus

Definition at line 835 of file stm32l4xx_hal_pcd.c.

836 {
837  HAL_StatusTypeDef status = HAL_OK;
838 
839  if (pCallback == NULL)
840  {
841  /* Update the error code */
842  hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK;
843 
844  return HAL_ERROR;
845  }
846 
847  /* Process locked */
848  __HAL_LOCK(hpcd);
849 
850  if (hpcd->State == HAL_PCD_STATE_READY)
851  {
852  hpcd->BCDCallback = pCallback;
853  }
854  else
855  {
856  /* Update the error code */
857  hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK;
858 
859  /* Return error status */
860  status = HAL_ERROR;
861  }
862 
863  /* Release Lock */
864  __HAL_UNLOCK(hpcd);
865 
866  return status;
867 }
__HAL_UNLOCK(hrtc)
__HAL_LOCK(hrtc)
return HAL_OK

◆ HAL_PCD_RegisterCallback()

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.

Parameters
hpcdUSB PCD handle
CallbackIDID of the callback to be registered This parameter can be one of the following values:
pCallbackpointer to the Callback function
Return values
HALstatus

Definition at line 333 of file stm32l4xx_hal_pcd.c.

334 {
335  HAL_StatusTypeDef status = HAL_OK;
336 
337  if (pCallback == NULL)
338  {
339  /* Update the error code */
340  hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK;
341  return HAL_ERROR;
342  }
343  /* Process locked */
344  __HAL_LOCK(hpcd);
345 
346  if (hpcd->State == HAL_PCD_STATE_READY)
347  {
348  switch (CallbackID)
349  {
350  case HAL_PCD_SOF_CB_ID :
351  hpcd->SOFCallback = pCallback;
352  break;
353 
355  hpcd->SetupStageCallback = pCallback;
356  break;
357 
358  case HAL_PCD_RESET_CB_ID :
359  hpcd->ResetCallback = pCallback;
360  break;
361 
362  case HAL_PCD_SUSPEND_CB_ID :
363  hpcd->SuspendCallback = pCallback;
364  break;
365 
366  case HAL_PCD_RESUME_CB_ID :
367  hpcd->ResumeCallback = pCallback;
368  break;
369 
370  case HAL_PCD_CONNECT_CB_ID :
371  hpcd->ConnectCallback = pCallback;
372  break;
373 
375  hpcd->DisconnectCallback = pCallback;
376  break;
377 
378  case HAL_PCD_MSPINIT_CB_ID :
379  hpcd->MspInitCallback = pCallback;
380  break;
381 
383  hpcd->MspDeInitCallback = pCallback;
384  break;
385 
386  default :
387  /* Update the error code */
388  hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK;
389  /* Return error status */
390  status = HAL_ERROR;
391  break;
392  }
393  }
394  else if (hpcd->State == HAL_PCD_STATE_RESET)
395  {
396  switch (CallbackID)
397  {
398  case HAL_PCD_MSPINIT_CB_ID :
399  hpcd->MspInitCallback = pCallback;
400  break;
401 
403  hpcd->MspDeInitCallback = pCallback;
404  break;
405 
406  default :
407  /* Update the error code */
408  hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK;
409  /* Return error status */
410  status = HAL_ERROR;
411  break;
412  }
413  }
414  else
415  {
416  /* Update the error code */
417  hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK;
418  /* Return error status */
419  status = HAL_ERROR;
420  }
421 
422  /* Release Lock */
423  __HAL_UNLOCK(hpcd);
424  return status;
425 }
__HAL_UNLOCK(hrtc)
__HAL_LOCK(hrtc)
return HAL_OK

◆ HAL_PCD_RegisterDataInStageCallback()

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.

Parameters
hpcdPCD handle
pCallbackpointer to the USB PCD Data IN Stage Callback function
Return values
HALstatus

Definition at line 616 of file stm32l4xx_hal_pcd.c.

617 {
618  HAL_StatusTypeDef status = HAL_OK;
619 
620  if (pCallback == NULL)
621  {
622  /* Update the error code */
623  hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK;
624 
625  return HAL_ERROR;
626  }
627 
628  /* Process locked */
629  __HAL_LOCK(hpcd);
630 
631  if (hpcd->State == HAL_PCD_STATE_READY)
632  {
633  hpcd->DataInStageCallback = pCallback;
634  }
635  else
636  {
637  /* Update the error code */
638  hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK;
639 
640  /* Return error status */
641  status = HAL_ERROR;
642  }
643 
644  /* Release Lock */
645  __HAL_UNLOCK(hpcd);
646 
647  return status;
648 }
__HAL_UNLOCK(hrtc)
__HAL_LOCK(hrtc)
return HAL_OK

◆ HAL_PCD_RegisterDataOutStageCallback()

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.

Parameters
hpcdPCD handle
pCallbackpointer to the USB PCD Data OUT Stage Callback function
Return values
HALstatus

Definition at line 543 of file stm32l4xx_hal_pcd.c.

544 {
545  HAL_StatusTypeDef status = HAL_OK;
546 
547  if (pCallback == NULL)
548  {
549  /* Update the error code */
550  hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK;
551 
552  return HAL_ERROR;
553  }
554 
555  /* Process locked */
556  __HAL_LOCK(hpcd);
557 
558  if (hpcd->State == HAL_PCD_STATE_READY)
559  {
560  hpcd->DataOutStageCallback = pCallback;
561  }
562  else
563  {
564  /* Update the error code */
565  hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK;
566 
567  /* Return error status */
568  status = HAL_ERROR;
569  }
570 
571  /* Release Lock */
572  __HAL_UNLOCK(hpcd);
573 
574  return status;
575 }
__HAL_UNLOCK(hrtc)
__HAL_LOCK(hrtc)
return HAL_OK

◆ HAL_PCD_RegisterIsoInIncpltCallback()

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.

Parameters
hpcdPCD handle
pCallbackpointer to the USB PCD Iso IN incomplete Callback function
Return values
HALstatus

Definition at line 762 of file stm32l4xx_hal_pcd.c.

763 {
764  HAL_StatusTypeDef status = HAL_OK;
765 
766  if (pCallback == NULL)
767  {
768  /* Update the error code */
769  hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK;
770 
771  return HAL_ERROR;
772  }
773 
774  /* Process locked */
775  __HAL_LOCK(hpcd);
776 
777  if (hpcd->State == HAL_PCD_STATE_READY)
778  {
779  hpcd->ISOINIncompleteCallback = pCallback;
780  }
781  else
782  {
783  /* Update the error code */
784  hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK;
785 
786  /* Return error status */
787  status = HAL_ERROR;
788  }
789 
790  /* Release Lock */
791  __HAL_UNLOCK(hpcd);
792 
793  return status;
794 }
__HAL_UNLOCK(hrtc)
__HAL_LOCK(hrtc)
return HAL_OK

◆ HAL_PCD_RegisterIsoOutIncpltCallback()

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.

Parameters
hpcdPCD handle
pCallbackpointer to the USB PCD Iso OUT incomplete Callback function
Return values
HALstatus

Definition at line 689 of file stm32l4xx_hal_pcd.c.

690 {
691  HAL_StatusTypeDef status = HAL_OK;
692 
693  if (pCallback == NULL)
694  {
695  /* Update the error code */
696  hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK;
697 
698  return HAL_ERROR;
699  }
700 
701  /* Process locked */
702  __HAL_LOCK(hpcd);
703 
704  if (hpcd->State == HAL_PCD_STATE_READY)
705  {
706  hpcd->ISOOUTIncompleteCallback = pCallback;
707  }
708  else
709  {
710  /* Update the error code */
711  hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK;
712 
713  /* Return error status */
714  status = HAL_ERROR;
715  }
716 
717  /* Release Lock */
718  __HAL_UNLOCK(hpcd);
719 
720  return status;
721 }
__HAL_UNLOCK(hrtc)
__HAL_LOCK(hrtc)
return HAL_OK

◆ HAL_PCD_RegisterLpmCallback()

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.

Parameters
hpcdPCD handle
pCallbackpointer to the USB PCD LPM Callback function
Return values
HALstatus

Definition at line 908 of file stm32l4xx_hal_pcd.c.

909 {
910  HAL_StatusTypeDef status = HAL_OK;
911 
912  if (pCallback == NULL)
913  {
914  /* Update the error code */
915  hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK;
916 
917  return HAL_ERROR;
918  }
919 
920  /* Process locked */
921  __HAL_LOCK(hpcd);
922 
923  if (hpcd->State == HAL_PCD_STATE_READY)
924  {
925  hpcd->LPMCallback = pCallback;
926  }
927  else
928  {
929  /* Update the error code */
930  hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK;
931 
932  /* Return error status */
933  status = HAL_ERROR;
934  }
935 
936  /* Release Lock */
937  __HAL_UNLOCK(hpcd);
938 
939  return status;
940 }
__HAL_UNLOCK(hrtc)
__HAL_LOCK(hrtc)
return HAL_OK

◆ HAL_PCD_UnRegisterBcdCallback()

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.

Parameters
hpcdPCD handle
Return values
HALstatus

Definition at line 875 of file stm32l4xx_hal_pcd.c.

876 {
877  HAL_StatusTypeDef status = HAL_OK;
878 
879  /* Process locked */
880  __HAL_LOCK(hpcd);
881 
882  if (hpcd->State == HAL_PCD_STATE_READY)
883  {
884  hpcd->BCDCallback = HAL_PCDEx_BCD_Callback; /* Legacy weak HAL_PCDEx_BCD_Callback */
885  }
886  else
887  {
888  /* Update the error code */
889  hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK;
890 
891  /* Return error status */
892  status = HAL_ERROR;
893  }
894 
895  /* Release Lock */
896  __HAL_UNLOCK(hpcd);
897 
898  return status;
899 }
__HAL_UNLOCK(hrtc)
__HAL_LOCK(hrtc)
return HAL_OK
void HAL_PCDEx_BCD_Callback(PCD_HandleTypeDef *hpcd, PCD_BCD_MsgTypeDef msg)
Send BatteryCharging message to user layer callback.

◆ HAL_PCD_UnRegisterCallback()

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.

Parameters
hpcdUSB PCD handle
CallbackIDID of the callback to be unregistered This parameter can be one of the following values:
Return values
HALstatus

Definition at line 444 of file stm32l4xx_hal_pcd.c.

445 {
446  HAL_StatusTypeDef status = HAL_OK;
447 
448  /* Process locked */
449  __HAL_LOCK(hpcd);
450 
451  /* Setup Legacy weak Callbacks */
452  if (hpcd->State == HAL_PCD_STATE_READY)
453  {
454  switch (CallbackID)
455  {
456  case HAL_PCD_SOF_CB_ID :
457  hpcd->SOFCallback = HAL_PCD_SOFCallback;
458  break;
459 
461  hpcd->SetupStageCallback = HAL_PCD_SetupStageCallback;
462  break;
463 
464  case HAL_PCD_RESET_CB_ID :
465  hpcd->ResetCallback = HAL_PCD_ResetCallback;
466  break;
467 
468  case HAL_PCD_SUSPEND_CB_ID :
469  hpcd->SuspendCallback = HAL_PCD_SuspendCallback;
470  break;
471 
472  case HAL_PCD_RESUME_CB_ID :
473  hpcd->ResumeCallback = HAL_PCD_ResumeCallback;
474  break;
475 
476  case HAL_PCD_CONNECT_CB_ID :
477  hpcd->ConnectCallback = HAL_PCD_ConnectCallback;
478  break;
479 
481  hpcd->DisconnectCallback = HAL_PCD_DisconnectCallback;
482  break;
483 
484  case HAL_PCD_MSPINIT_CB_ID :
485  hpcd->MspInitCallback = HAL_PCD_MspInit;
486  break;
487 
489  hpcd->MspDeInitCallback = HAL_PCD_MspDeInit;
490  break;
491 
492  default :
493  /* Update the error code */
494  hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK;
495 
496  /* Return error status */
497  status = HAL_ERROR;
498  break;
499  }
500  }
501  else if (hpcd->State == HAL_PCD_STATE_RESET)
502  {
503  switch (CallbackID)
504  {
505  case HAL_PCD_MSPINIT_CB_ID :
506  hpcd->MspInitCallback = HAL_PCD_MspInit;
507  break;
508 
510  hpcd->MspDeInitCallback = HAL_PCD_MspDeInit;
511  break;
512 
513  default :
514  /* Update the error code */
515  hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK;
516 
517  /* Return error status */
518  status = HAL_ERROR;
519  break;
520  }
521  }
522  else
523  {
524  /* Update the error code */
525  hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK;
526 
527  /* Return error status */
528  status = HAL_ERROR;
529  }
530 
531  /* Release Lock */
532  __HAL_UNLOCK(hpcd);
533  return status;
534 }
void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd)
Resume event callback.
void HAL_PCD_MspInit(PCD_HandleTypeDef *hpcd)
Initializes the PCD MSP.
void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd)
USB Start Of Frame callback.
__HAL_UNLOCK(hrtc)
void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd)
USB Reset callback.
__HAL_LOCK(hrtc)
void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd)
Setup stage callback.
return HAL_OK
void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd)
Suspend event callback.
void HAL_PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd)
Disconnection event callback.
void HAL_PCD_ConnectCallback(PCD_HandleTypeDef *hpcd)
Connection event callback.
void HAL_PCD_MspDeInit(PCD_HandleTypeDef *hpcd)
DeInitializes PCD MSP.

◆ HAL_PCD_UnRegisterDataInStageCallback()

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.

Parameters
hpcdPCD handle
Return values
HALstatus

Definition at line 656 of file stm32l4xx_hal_pcd.c.

657 {
658  HAL_StatusTypeDef status = HAL_OK;
659 
660  /* Process locked */
661  __HAL_LOCK(hpcd);
662 
663  if (hpcd->State == HAL_PCD_STATE_READY)
664  {
665  hpcd->DataInStageCallback = HAL_PCD_DataInStageCallback; /* Legacy weak DataInStageCallback */
666  }
667  else
668  {
669  /* Update the error code */
670  hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK;
671 
672  /* Return error status */
673  status = HAL_ERROR;
674  }
675 
676  /* Release Lock */
677  __HAL_UNLOCK(hpcd);
678 
679  return status;
680 }
void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
Data IN stage callback.
__HAL_UNLOCK(hrtc)
__HAL_LOCK(hrtc)
return HAL_OK

◆ HAL_PCD_UnRegisterDataOutStageCallback()

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.

Parameters
hpcdPCD handle
Return values
HALstatus

Definition at line 583 of file stm32l4xx_hal_pcd.c.

584 {
585  HAL_StatusTypeDef status = HAL_OK;
586 
587  /* Process locked */
588  __HAL_LOCK(hpcd);
589 
590  if (hpcd->State == HAL_PCD_STATE_READY)
591  {
592  hpcd->DataOutStageCallback = HAL_PCD_DataOutStageCallback; /* Legacy weak DataOutStageCallback */
593  }
594  else
595  {
596  /* Update the error code */
597  hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK;
598 
599  /* Return error status */
600  status = HAL_ERROR;
601  }
602 
603  /* Release Lock */
604  __HAL_UNLOCK(hpcd);
605 
606  return status;
607 }
void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
Data OUT stage callback.
__HAL_UNLOCK(hrtc)
__HAL_LOCK(hrtc)
return HAL_OK

◆ HAL_PCD_UnRegisterIsoInIncpltCallback()

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.

Parameters
hpcdPCD handle
Return values
HALstatus

Definition at line 802 of file stm32l4xx_hal_pcd.c.

803 {
804  HAL_StatusTypeDef status = HAL_OK;
805 
806  /* Process locked */
807  __HAL_LOCK(hpcd);
808 
809  if (hpcd->State == HAL_PCD_STATE_READY)
810  {
811  hpcd->ISOINIncompleteCallback = HAL_PCD_ISOINIncompleteCallback; /* Legacy weak ISOINIncompleteCallback */
812  }
813  else
814  {
815  /* Update the error code */
816  hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK;
817 
818  /* Return error status */
819  status = HAL_ERROR;
820  }
821 
822  /* Release Lock */
823  __HAL_UNLOCK(hpcd);
824 
825  return status;
826 }
void HAL_PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
Incomplete ISO IN callback.
__HAL_UNLOCK(hrtc)
__HAL_LOCK(hrtc)
return HAL_OK

◆ HAL_PCD_UnRegisterIsoOutIncpltCallback()

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.

Parameters
hpcdPCD handle
Return values
HALstatus

Definition at line 729 of file stm32l4xx_hal_pcd.c.

730 {
731  HAL_StatusTypeDef status = HAL_OK;
732 
733  /* Process locked */
734  __HAL_LOCK(hpcd);
735 
736  if (hpcd->State == HAL_PCD_STATE_READY)
737  {
738  hpcd->ISOOUTIncompleteCallback = HAL_PCD_ISOOUTIncompleteCallback; /* Legacy weak ISOOUTIncompleteCallback */
739  }
740  else
741  {
742  /* Update the error code */
743  hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK;
744 
745  /* Return error status */
746  status = HAL_ERROR;
747  }
748 
749  /* Release Lock */
750  __HAL_UNLOCK(hpcd);
751 
752  return status;
753 }
__HAL_UNLOCK(hrtc)
void HAL_PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
Incomplete ISO OUT callback.
__HAL_LOCK(hrtc)
return HAL_OK

◆ HAL_PCD_UnRegisterLpmCallback()

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.

Parameters
hpcdPCD handle
Return values
HALstatus

Definition at line 948 of file stm32l4xx_hal_pcd.c.

949 {
950  HAL_StatusTypeDef status = HAL_OK;
951 
952  /* Process locked */
953  __HAL_LOCK(hpcd);
954 
955  if (hpcd->State == HAL_PCD_STATE_READY)
956  {
957  hpcd->LPMCallback = HAL_PCDEx_LPM_Callback; /* Legacy weak HAL_PCDEx_LPM_Callback */
958  }
959  else
960  {
961  /* Update the error code */
962  hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK;
963 
964  /* Return error status */
965  status = HAL_ERROR;
966  }
967 
968  /* Release Lock */
969  __HAL_UNLOCK(hpcd);
970 
971  return status;
972 }
__HAL_UNLOCK(hrtc)
__HAL_LOCK(hrtc)
return HAL_OK
void HAL_PCDEx_LPM_Callback(PCD_HandleTypeDef *hpcd, PCD_LPM_MsgTypeDef msg)
Send LPM message to user layer callback.