STM32L4xx_HAL_Driver  1.14.0
Initialization and de-initialization functions

Initialization and Configuration functions. More...

Functions

HAL_StatusTypeDef HAL_CAN_Init (CAN_HandleTypeDef *hcan)
 Initializes the CAN peripheral according to the specified parameters in the CAN_InitStruct. More...
 
HAL_StatusTypeDef HAL_CAN_DeInit (CAN_HandleTypeDef *hcan)
 Deinitializes the CAN peripheral registers to their default reset values. More...
 
void HAL_CAN_MspInit (CAN_HandleTypeDef *hcan)
 Initializes the CAN MSP. More...
 
void HAL_CAN_MspDeInit (CAN_HandleTypeDef *hcan)
 DeInitializes the CAN MSP. More...
 
HAL_StatusTypeDef HAL_CAN_RegisterCallback (CAN_HandleTypeDef *hcan, HAL_CAN_CallbackIDTypeDef CallbackID, void(*pCallback)(CAN_HandleTypeDef *_hcan))
 Register a CAN CallBack. To be used instead of the weak predefined callback. More...
 
HAL_StatusTypeDef HAL_CAN_UnRegisterCallback (CAN_HandleTypeDef *hcan, HAL_CAN_CallbackIDTypeDef CallbackID)
 Unregister a CAN CallBack. CAN callabck is redirected to the weak predefined callback. More...
 

Detailed Description

Initialization and Configuration functions.

  ==============================================================================
              ##### Initialization and de-initialization functions #####
  ==============================================================================
    [..]  This section provides functions allowing to:
      (+) HAL_CAN_Init                       : Initialize and configure the CAN.
      (+) HAL_CAN_DeInit                     : De-initialize the CAN.
      (+) HAL_CAN_MspInit                    : Initialize the CAN MSP.
      (+) HAL_CAN_MspDeInit                  : DeInitialize the CAN MSP.

Function Documentation

◆ HAL_CAN_DeInit()

HAL_StatusTypeDef HAL_CAN_DeInit ( CAN_HandleTypeDef hcan)

Deinitializes the CAN peripheral registers to their default reset values.

Parameters
hcanpointer to a CAN_HandleTypeDef structure that contains the configuration information for the specified CAN.
Return values
HALstatus

Definition at line 459 of file stm32l4xx_hal_can.c.

460 {
461  /* Check CAN handle */
462  if (hcan == NULL)
463  {
464  return HAL_ERROR;
465  }
466 
467  /* Check the parameters */
468  assert_param(IS_CAN_ALL_INSTANCE(hcan->Instance));
469 
470  /* Stop the CAN module */
471  (void)HAL_CAN_Stop(hcan);
472 
473 #if USE_HAL_CAN_REGISTER_CALLBACKS == 1
474  if (hcan->MspDeInitCallback == NULL)
475  {
476  hcan->MspDeInitCallback = HAL_CAN_MspDeInit; /* Legacy weak MspDeInit */
477  }
478 
479  /* DeInit the low level hardware: CLOCK, NVIC */
480  hcan->MspDeInitCallback(hcan);
481 
482 #else
483  /* DeInit the low level hardware: CLOCK, NVIC */
484  HAL_CAN_MspDeInit(hcan);
485 #endif /* (USE_HAL_CAN_REGISTER_CALLBACKS) */
486 
487  /* Reset the CAN peripheral */
488  SET_BIT(hcan->Instance->MCR, CAN_MCR_RESET);
489 
490  /* Reset the CAN ErrorCode */
491  hcan->ErrorCode = HAL_CAN_ERROR_NONE;
492 
493  /* Change CAN state */
494  hcan->State = HAL_CAN_STATE_RESET;
495 
496  /* Return function status */
497  return HAL_OK;
498 }
void HAL_CAN_MspDeInit(CAN_HandleTypeDef *hcan)
DeInitializes the CAN MSP.
__IO HAL_CAN_StateTypeDef State
return HAL_OK
void(* MspDeInitCallback)(struct __CAN_HandleTypeDef *hcan)
HAL_StatusTypeDef HAL_CAN_Stop(CAN_HandleTypeDef *hcan)
Stop the CAN module and enable access to configuration registers.
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))

◆ HAL_CAN_Init()

HAL_StatusTypeDef HAL_CAN_Init ( CAN_HandleTypeDef hcan)

Initializes the CAN peripheral according to the specified parameters in the CAN_InitStruct.

Parameters
hcanpointer to a CAN_HandleTypeDef structure that contains the configuration information for the specified CAN.
Return values
HALstatus

Definition at line 274 of file stm32l4xx_hal_can.c.

275 {
276  uint32_t tickstart;
277 
278  /* Check CAN handle */
279  if (hcan == NULL)
280  {
281  return HAL_ERROR;
282  }
283 
284  /* Check the parameters */
285  assert_param(IS_CAN_ALL_INSTANCE(hcan->Instance));
286  assert_param(IS_FUNCTIONAL_STATE(hcan->Init.TimeTriggeredMode));
287  assert_param(IS_FUNCTIONAL_STATE(hcan->Init.AutoBusOff));
288  assert_param(IS_FUNCTIONAL_STATE(hcan->Init.AutoWakeUp));
289  assert_param(IS_FUNCTIONAL_STATE(hcan->Init.AutoRetransmission));
290  assert_param(IS_FUNCTIONAL_STATE(hcan->Init.ReceiveFifoLocked));
291  assert_param(IS_FUNCTIONAL_STATE(hcan->Init.TransmitFifoPriority));
292  assert_param(IS_CAN_MODE(hcan->Init.Mode));
293  assert_param(IS_CAN_SJW(hcan->Init.SyncJumpWidth));
294  assert_param(IS_CAN_BS1(hcan->Init.TimeSeg1));
295  assert_param(IS_CAN_BS2(hcan->Init.TimeSeg2));
296  assert_param(IS_CAN_PRESCALER(hcan->Init.Prescaler));
297 
298 #if USE_HAL_CAN_REGISTER_CALLBACKS == 1
299  if (hcan->State == HAL_CAN_STATE_RESET)
300  {
301  /* Reset callbacks to legacy functions */
302  hcan->RxFifo0MsgPendingCallback = HAL_CAN_RxFifo0MsgPendingCallback; /* Legacy weak RxFifo0MsgPendingCallback */
303  hcan->RxFifo0FullCallback = HAL_CAN_RxFifo0FullCallback; /* Legacy weak RxFifo0FullCallback */
304  hcan->RxFifo1MsgPendingCallback = HAL_CAN_RxFifo1MsgPendingCallback; /* Legacy weak RxFifo1MsgPendingCallback */
305  hcan->RxFifo1FullCallback = HAL_CAN_RxFifo1FullCallback; /* Legacy weak RxFifo1FullCallback */
306  hcan->TxMailbox0CompleteCallback = HAL_CAN_TxMailbox0CompleteCallback; /* Legacy weak TxMailbox0CompleteCallback */
307  hcan->TxMailbox1CompleteCallback = HAL_CAN_TxMailbox1CompleteCallback; /* Legacy weak TxMailbox1CompleteCallback */
308  hcan->TxMailbox2CompleteCallback = HAL_CAN_TxMailbox2CompleteCallback; /* Legacy weak TxMailbox2CompleteCallback */
309  hcan->TxMailbox0AbortCallback = HAL_CAN_TxMailbox0AbortCallback; /* Legacy weak TxMailbox0AbortCallback */
310  hcan->TxMailbox1AbortCallback = HAL_CAN_TxMailbox1AbortCallback; /* Legacy weak TxMailbox1AbortCallback */
311  hcan->TxMailbox2AbortCallback = HAL_CAN_TxMailbox2AbortCallback; /* Legacy weak TxMailbox2AbortCallback */
312  hcan->SleepCallback = HAL_CAN_SleepCallback; /* Legacy weak SleepCallback */
313  hcan->WakeUpFromRxMsgCallback = HAL_CAN_WakeUpFromRxMsgCallback; /* Legacy weak WakeUpFromRxMsgCallback */
314  hcan->ErrorCallback = HAL_CAN_ErrorCallback; /* Legacy weak ErrorCallback */
315 
316  if (hcan->MspInitCallback == NULL)
317  {
318  hcan->MspInitCallback = HAL_CAN_MspInit; /* Legacy weak MspInit */
319  }
320 
321  /* Init the low level hardware: CLOCK, NVIC */
322  hcan->MspInitCallback(hcan);
323  }
324 
325 #else
326  if (hcan->State == HAL_CAN_STATE_RESET)
327  {
328  /* Init the low level hardware: CLOCK, NVIC */
329  HAL_CAN_MspInit(hcan);
330  }
331 #endif /* (USE_HAL_CAN_REGISTER_CALLBACKS) */
332 
333  /* Exit from sleep mode */
334  CLEAR_BIT(hcan->Instance->MCR, CAN_MCR_SLEEP);
335 
336  /* Get tick */
337  tickstart = HAL_GetTick();
338 
339  /* Check Sleep mode leave acknowledge */
340  while ((hcan->Instance->MSR & CAN_MSR_SLAK) != 0U)
341  {
342  if ((HAL_GetTick() - tickstart) > CAN_TIMEOUT_VALUE)
343  {
344  /* Update error code */
345  hcan->ErrorCode |= HAL_CAN_ERROR_TIMEOUT;
346 
347  /* Change CAN state */
348  hcan->State = HAL_CAN_STATE_ERROR;
349 
350  return HAL_ERROR;
351  }
352  }
353 
354  /* Request initialisation */
355  SET_BIT(hcan->Instance->MCR, CAN_MCR_INRQ);
356 
357  /* Get tick */
358  tickstart = HAL_GetTick();
359 
360  /* Wait initialisation acknowledge */
361  while ((hcan->Instance->MSR & CAN_MSR_INAK) == 0U)
362  {
363  if ((HAL_GetTick() - tickstart) > CAN_TIMEOUT_VALUE)
364  {
365  /* Update error code */
366  hcan->ErrorCode |= HAL_CAN_ERROR_TIMEOUT;
367 
368  /* Change CAN state */
369  hcan->State = HAL_CAN_STATE_ERROR;
370 
371  return HAL_ERROR;
372  }
373  }
374 
375  /* Set the time triggered communication mode */
376  if (hcan->Init.TimeTriggeredMode == ENABLE)
377  {
378  SET_BIT(hcan->Instance->MCR, CAN_MCR_TTCM);
379  }
380  else
381  {
382  CLEAR_BIT(hcan->Instance->MCR, CAN_MCR_TTCM);
383  }
384 
385  /* Set the automatic bus-off management */
386  if (hcan->Init.AutoBusOff == ENABLE)
387  {
388  SET_BIT(hcan->Instance->MCR, CAN_MCR_ABOM);
389  }
390  else
391  {
392  CLEAR_BIT(hcan->Instance->MCR, CAN_MCR_ABOM);
393  }
394 
395  /* Set the automatic wake-up mode */
396  if (hcan->Init.AutoWakeUp == ENABLE)
397  {
398  SET_BIT(hcan->Instance->MCR, CAN_MCR_AWUM);
399  }
400  else
401  {
402  CLEAR_BIT(hcan->Instance->MCR, CAN_MCR_AWUM);
403  }
404 
405  /* Set the automatic retransmission */
406  if (hcan->Init.AutoRetransmission == ENABLE)
407  {
408  CLEAR_BIT(hcan->Instance->MCR, CAN_MCR_NART);
409  }
410  else
411  {
412  SET_BIT(hcan->Instance->MCR, CAN_MCR_NART);
413  }
414 
415  /* Set the receive FIFO locked mode */
416  if (hcan->Init.ReceiveFifoLocked == ENABLE)
417  {
418  SET_BIT(hcan->Instance->MCR, CAN_MCR_RFLM);
419  }
420  else
421  {
422  CLEAR_BIT(hcan->Instance->MCR, CAN_MCR_RFLM);
423  }
424 
425  /* Set the transmit FIFO priority */
426  if (hcan->Init.TransmitFifoPriority == ENABLE)
427  {
428  SET_BIT(hcan->Instance->MCR, CAN_MCR_TXFP);
429  }
430  else
431  {
432  CLEAR_BIT(hcan->Instance->MCR, CAN_MCR_TXFP);
433  }
434 
435  /* Set the bit timing register */
436  WRITE_REG(hcan->Instance->BTR, (uint32_t)(hcan->Init.Mode |
437  hcan->Init.SyncJumpWidth |
438  hcan->Init.TimeSeg1 |
439  hcan->Init.TimeSeg2 |
440  (hcan->Init.Prescaler - 1U)));
441 
442  /* Initialize the error code */
443  hcan->ErrorCode = HAL_CAN_ERROR_NONE;
444 
445  /* Initialize the CAN state */
446  hcan->State = HAL_CAN_STATE_READY;
447 
448  /* Return function status */
449  return HAL_OK;
450 }
FunctionalState AutoWakeUp
void(* TxMailbox0CompleteCallback)(struct __CAN_HandleTypeDef *hcan)
void(* RxFifo0MsgPendingCallback)(struct __CAN_HandleTypeDef *hcan)
void(* SleepCallback)(struct __CAN_HandleTypeDef *hcan)
void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan)
Rx FIFO 0 message pending callback.
FunctionalState AutoRetransmission
void HAL_CAN_SleepCallback(CAN_HandleTypeDef *hcan)
Sleep callback.
void HAL_CAN_TxMailbox1CompleteCallback(CAN_HandleTypeDef *hcan)
Transmission Mailbox 1 complete callback.
void(* RxFifo0FullCallback)(struct __CAN_HandleTypeDef *hcan)
FunctionalState TimeTriggeredMode
FunctionalState AutoBusOff
void(* MspInitCallback)(struct __CAN_HandleTypeDef *hcan)
void HAL_CAN_TxMailbox2AbortCallback(CAN_HandleTypeDef *hcan)
Transmission Mailbox 2 Cancellation callback.
void(* RxFifo1FullCallback)(struct __CAN_HandleTypeDef *hcan)
uint32_t HAL_GetTick(void)
Provide a tick value in millisecond.
void(* ErrorCallback)(struct __CAN_HandleTypeDef *hcan)
void(* TxMailbox1CompleteCallback)(struct __CAN_HandleTypeDef *hcan)
void HAL_CAN_RxFifo0FullCallback(CAN_HandleTypeDef *hcan)
Rx FIFO 0 full callback.
void(* WakeUpFromRxMsgCallback)(struct __CAN_HandleTypeDef *hcan)
FunctionalState ReceiveFifoLocked
void HAL_CAN_RxFifo1FullCallback(CAN_HandleTypeDef *hcan)
Rx FIFO 1 full callback.
CAN_InitTypeDef Init
CLEAR_BIT(hrtc->Instance->CR, RTC_CR_WUTE)
void(* TxMailbox0AbortCallback)(struct __CAN_HandleTypeDef *hcan)
void(* TxMailbox2CompleteCallback)(struct __CAN_HandleTypeDef *hcan)
__IO HAL_CAN_StateTypeDef State
return HAL_OK
void(* TxMailbox1AbortCallback)(struct __CAN_HandleTypeDef *hcan)
FunctionalState TransmitFifoPriority
void HAL_CAN_RxFifo1MsgPendingCallback(CAN_HandleTypeDef *hcan)
Rx FIFO 1 message pending callback.
void HAL_CAN_WakeUpFromRxMsgCallback(CAN_HandleTypeDef *hcan)
WakeUp from Rx message callback.
void HAL_CAN_TxMailbox0AbortCallback(CAN_HandleTypeDef *hcan)
Transmission Mailbox 0 Cancellation callback.
void(* TxMailbox2AbortCallback)(struct __CAN_HandleTypeDef *hcan)
void HAL_CAN_ErrorCallback(CAN_HandleTypeDef *hcan)
Error CAN callback.
void HAL_CAN_TxMailbox0CompleteCallback(CAN_HandleTypeDef *hcan)
Transmission Mailbox 0 complete callback.
void HAL_CAN_TxMailbox2CompleteCallback(CAN_HandleTypeDef *hcan)
Transmission Mailbox 2 complete callback.
void HAL_CAN_MspInit(CAN_HandleTypeDef *hcan)
Initializes the CAN MSP.
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))
void HAL_CAN_TxMailbox1AbortCallback(CAN_HandleTypeDef *hcan)
Transmission Mailbox 1 Cancellation callback.
void(* RxFifo1MsgPendingCallback)(struct __CAN_HandleTypeDef *hcan)

◆ HAL_CAN_MspDeInit()

__weak void HAL_CAN_MspDeInit ( CAN_HandleTypeDef hcan)

DeInitializes the CAN MSP.

Parameters
hcanpointer to a CAN_HandleTypeDef structure that contains the configuration information for the specified CAN.
Return values
None

Definition at line 522 of file stm32l4xx_hal_can.c.

523 {
524  /* Prevent unused argument(s) compilation warning */
525  UNUSED(hcan);
526 
527  /* NOTE : This function Should not be modified, when the callback is needed,
528  the HAL_CAN_MspDeInit could be implemented in the user file
529  */
530 }

◆ HAL_CAN_MspInit()

__weak void HAL_CAN_MspInit ( CAN_HandleTypeDef hcan)

Initializes the CAN MSP.

Parameters
hcanpointer to a CAN_HandleTypeDef structure that contains the configuration information for the specified CAN.
Return values
None

Definition at line 506 of file stm32l4xx_hal_can.c.

507 {
508  /* Prevent unused argument(s) compilation warning */
509  UNUSED(hcan);
510 
511  /* NOTE : This function Should not be modified, when the callback is needed,
512  the HAL_CAN_MspInit could be implemented in the user file
513  */
514 }

◆ HAL_CAN_RegisterCallback()

HAL_StatusTypeDef HAL_CAN_RegisterCallback ( CAN_HandleTypeDef hcan,
HAL_CAN_CallbackIDTypeDef  CallbackID,
void(*)(CAN_HandleTypeDef *_hcan)  pCallback 
)

Register a CAN CallBack. To be used instead of the weak predefined callback.

Parameters
hcanpointer to a CAN_HandleTypeDef structure that contains the configuration information for CAN module
CallbackIDID of the callback to be registered This parameter can be one of the following values:
  • HAL_CAN_TX_MAILBOX0_COMPLETE_CALLBACK_CB_ID Tx Mailbox 0 Complete callback ID
  • HAL_CAN_TX_MAILBOX1_COMPLETE_CALLBACK_CB_ID Tx Mailbox 1 Complete callback ID
  • HAL_CAN_TX_MAILBOX2_COMPLETE_CALLBACK_CB_ID Tx Mailbox 2 Complete callback ID
  • HAL_CAN_TX_MAILBOX0_ABORT_CALLBACK_CB_ID Tx Mailbox 0 Abort callback ID
  • HAL_CAN_TX_MAILBOX1_ABORT_CALLBACK_CB_ID Tx Mailbox 1 Abort callback ID
  • HAL_CAN_TX_MAILBOX2_ABORT_CALLBACK_CB_ID Tx Mailbox 2 Abort callback ID
  • HAL_CAN_RX_FIFO0_MSG_PENDING_CALLBACK_CB_ID Rx Fifo 0 message pending callback ID
  • HAL_CAN_RX_FIFO0_FULL_CALLBACK_CB_ID Rx Fifo 0 full callback ID
  • HAL_CAN_RX_FIFO1_MSGPENDING_CALLBACK_CB_ID Rx Fifo 1 message pending callback ID
  • HAL_CAN_RX_FIFO1_FULL_CALLBACK_CB_ID Rx Fifo 1 full callback ID
  • HAL_CAN_SLEEP_CALLBACK_CB_ID Sleep callback ID
  • HAL_CAN_WAKEUP_FROM_RX_MSG_CALLBACK_CB_ID Wake Up from Rx message callback ID
  • HAL_CAN_ERROR_CALLBACK_CB_ID Error callback ID
  • HAL_CAN_MSPINIT_CB_ID MspInit callback ID
  • HAL_CAN_MSPDEINIT_CB_ID MspDeInit callback ID
pCallbackpointer to the Callback function
Return values
HALstatus

Definition at line 558 of file stm32l4xx_hal_can.c.

559 {
560  HAL_StatusTypeDef status = HAL_OK;
561 
562  if (pCallback == NULL)
563  {
564  /* Update the error code */
565  hcan->ErrorCode |= HAL_CAN_ERROR_INVALID_CALLBACK;
566 
567  return HAL_ERROR;
568  }
569 
570  if (hcan->State == HAL_CAN_STATE_READY)
571  {
572  switch (CallbackID)
573  {
575  hcan->TxMailbox0CompleteCallback = pCallback;
576  break;
577 
579  hcan->TxMailbox1CompleteCallback = pCallback;
580  break;
581 
583  hcan->TxMailbox2CompleteCallback = pCallback;
584  break;
585 
587  hcan->TxMailbox0AbortCallback = pCallback;
588  break;
589 
591  hcan->TxMailbox1AbortCallback = pCallback;
592  break;
593 
595  hcan->TxMailbox2AbortCallback = pCallback;
596  break;
597 
599  hcan->RxFifo0MsgPendingCallback = pCallback;
600  break;
601 
603  hcan->RxFifo0FullCallback = pCallback;
604  break;
605 
607  hcan->RxFifo1MsgPendingCallback = pCallback;
608  break;
609 
611  hcan->RxFifo1FullCallback = pCallback;
612  break;
613 
614  case HAL_CAN_SLEEP_CB_ID :
615  hcan->SleepCallback = pCallback;
616  break;
617 
619  hcan->WakeUpFromRxMsgCallback = pCallback;
620  break;
621 
622  case HAL_CAN_ERROR_CB_ID :
623  hcan->ErrorCallback = pCallback;
624  break;
625 
626  case HAL_CAN_MSPINIT_CB_ID :
627  hcan->MspInitCallback = pCallback;
628  break;
629 
631  hcan->MspDeInitCallback = pCallback;
632  break;
633 
634  default :
635  /* Update the error code */
636  hcan->ErrorCode |= HAL_CAN_ERROR_INVALID_CALLBACK;
637 
638  /* Return error status */
639  status = HAL_ERROR;
640  break;
641  }
642  }
643  else if (hcan->State == HAL_CAN_STATE_RESET)
644  {
645  switch (CallbackID)
646  {
647  case HAL_CAN_MSPINIT_CB_ID :
648  hcan->MspInitCallback = pCallback;
649  break;
650 
652  hcan->MspDeInitCallback = pCallback;
653  break;
654 
655  default :
656  /* Update the error code */
657  hcan->ErrorCode |= HAL_CAN_ERROR_INVALID_CALLBACK;
658 
659  /* Return error status */
660  status = HAL_ERROR;
661  break;
662  }
663  }
664  else
665  {
666  /* Update the error code */
667  hcan->ErrorCode |= HAL_CAN_ERROR_INVALID_CALLBACK;
668 
669  /* Return error status */
670  status = HAL_ERROR;
671  }
672 
673  return status;
674 }
void(* TxMailbox0CompleteCallback)(struct __CAN_HandleTypeDef *hcan)
void(* RxFifo0MsgPendingCallback)(struct __CAN_HandleTypeDef *hcan)
void(* SleepCallback)(struct __CAN_HandleTypeDef *hcan)
void(* RxFifo0FullCallback)(struct __CAN_HandleTypeDef *hcan)
void(* MspInitCallback)(struct __CAN_HandleTypeDef *hcan)
void(* RxFifo1FullCallback)(struct __CAN_HandleTypeDef *hcan)
void(* ErrorCallback)(struct __CAN_HandleTypeDef *hcan)
void(* TxMailbox1CompleteCallback)(struct __CAN_HandleTypeDef *hcan)
void(* WakeUpFromRxMsgCallback)(struct __CAN_HandleTypeDef *hcan)
void(* TxMailbox0AbortCallback)(struct __CAN_HandleTypeDef *hcan)
void(* TxMailbox2CompleteCallback)(struct __CAN_HandleTypeDef *hcan)
__IO HAL_CAN_StateTypeDef State
return HAL_OK
void(* MspDeInitCallback)(struct __CAN_HandleTypeDef *hcan)
void(* TxMailbox1AbortCallback)(struct __CAN_HandleTypeDef *hcan)
void(* TxMailbox2AbortCallback)(struct __CAN_HandleTypeDef *hcan)
void(* RxFifo1MsgPendingCallback)(struct __CAN_HandleTypeDef *hcan)

◆ HAL_CAN_UnRegisterCallback()

HAL_StatusTypeDef HAL_CAN_UnRegisterCallback ( CAN_HandleTypeDef hcan,
HAL_CAN_CallbackIDTypeDef  CallbackID 
)

Unregister a CAN CallBack. CAN callabck is redirected to the weak predefined callback.

Parameters
hcanpointer to a CAN_HandleTypeDef structure that contains the configuration information for CAN module
CallbackIDID of the callback to be unregistered This parameter can be one of the following values:
  • HAL_CAN_TX_MAILBOX0_COMPLETE_CALLBACK_CB_ID Tx Mailbox 0 Complete callback ID
  • HAL_CAN_TX_MAILBOX1_COMPLETE_CALLBACK_CB_ID Tx Mailbox 1 Complete callback ID
  • HAL_CAN_TX_MAILBOX2_COMPLETE_CALLBACK_CB_ID Tx Mailbox 2 Complete callback ID
  • HAL_CAN_TX_MAILBOX0_ABORT_CALLBACK_CB_ID Tx Mailbox 0 Abort callback ID
  • HAL_CAN_TX_MAILBOX1_ABORT_CALLBACK_CB_ID Tx Mailbox 1 Abort callback ID
  • HAL_CAN_TX_MAILBOX2_ABORT_CALLBACK_CB_ID Tx Mailbox 2 Abort callback ID
  • HAL_CAN_RX_FIFO0_MSG_PENDING_CALLBACK_CB_ID Rx Fifo 0 message pending callback ID
  • HAL_CAN_RX_FIFO0_FULL_CALLBACK_CB_ID Rx Fifo 0 full callback ID
  • HAL_CAN_RX_FIFO1_MSGPENDING_CALLBACK_CB_ID Rx Fifo 1 message pending callback ID
  • HAL_CAN_RX_FIFO1_FULL_CALLBACK_CB_ID Rx Fifo 1 full callback ID
  • HAL_CAN_SLEEP_CALLBACK_CB_ID Sleep callback ID
  • HAL_CAN_WAKEUP_FROM_RX_MSG_CALLBACK_CB_ID Wake Up from Rx message callback ID
  • HAL_CAN_ERROR_CALLBACK_CB_ID Error callback ID
  • HAL_CAN_MSPINIT_CB_ID MspInit callback ID
  • HAL_CAN_MSPDEINIT_CB_ID MspDeInit callback ID
Return values
HALstatus

Definition at line 700 of file stm32l4xx_hal_can.c.

701 {
702  HAL_StatusTypeDef status = HAL_OK;
703 
704  if (hcan->State == HAL_CAN_STATE_READY)
705  {
706  switch (CallbackID)
707  {
710  break;
711 
714  break;
715 
718  break;
719 
722  break;
723 
726  break;
727 
730  break;
731 
734  break;
735 
738  break;
739 
742  break;
743 
746  break;
747 
748  case HAL_CAN_SLEEP_CB_ID :
750  break;
751 
754  break;
755 
756  case HAL_CAN_ERROR_CB_ID :
758  break;
759 
760  case HAL_CAN_MSPINIT_CB_ID :
762  break;
763 
766  break;
767 
768  default :
769  /* Update the error code */
770  hcan->ErrorCode |= HAL_CAN_ERROR_INVALID_CALLBACK;
771 
772  /* Return error status */
773  status = HAL_ERROR;
774  break;
775  }
776  }
777  else if (hcan->State == HAL_CAN_STATE_RESET)
778  {
779  switch (CallbackID)
780  {
781  case HAL_CAN_MSPINIT_CB_ID :
783  break;
784 
787  break;
788 
789  default :
790  /* Update the error code */
791  hcan->ErrorCode |= HAL_CAN_ERROR_INVALID_CALLBACK;
792 
793  /* Return error status */
794  status = HAL_ERROR;
795  break;
796  }
797  }
798  else
799  {
800  /* Update the error code */
801  hcan->ErrorCode |= HAL_CAN_ERROR_INVALID_CALLBACK;
802 
803  /* Return error status */
804  status = HAL_ERROR;
805  }
806 
807  return status;
808 }
void(* TxMailbox0CompleteCallback)(struct __CAN_HandleTypeDef *hcan)
void(* RxFifo0MsgPendingCallback)(struct __CAN_HandleTypeDef *hcan)
void(* SleepCallback)(struct __CAN_HandleTypeDef *hcan)
void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan)
Rx FIFO 0 message pending callback.
void HAL_CAN_SleepCallback(CAN_HandleTypeDef *hcan)
Sleep callback.
void HAL_CAN_TxMailbox1CompleteCallback(CAN_HandleTypeDef *hcan)
Transmission Mailbox 1 complete callback.
void(* RxFifo0FullCallback)(struct __CAN_HandleTypeDef *hcan)
void(* MspInitCallback)(struct __CAN_HandleTypeDef *hcan)
void HAL_CAN_TxMailbox2AbortCallback(CAN_HandleTypeDef *hcan)
Transmission Mailbox 2 Cancellation callback.
void(* RxFifo1FullCallback)(struct __CAN_HandleTypeDef *hcan)
void(* ErrorCallback)(struct __CAN_HandleTypeDef *hcan)
void(* TxMailbox1CompleteCallback)(struct __CAN_HandleTypeDef *hcan)
void HAL_CAN_RxFifo0FullCallback(CAN_HandleTypeDef *hcan)
Rx FIFO 0 full callback.
void(* WakeUpFromRxMsgCallback)(struct __CAN_HandleTypeDef *hcan)
void HAL_CAN_RxFifo1FullCallback(CAN_HandleTypeDef *hcan)
Rx FIFO 1 full callback.
void HAL_CAN_MspDeInit(CAN_HandleTypeDef *hcan)
DeInitializes the CAN MSP.
void(* TxMailbox0AbortCallback)(struct __CAN_HandleTypeDef *hcan)
void(* TxMailbox2CompleteCallback)(struct __CAN_HandleTypeDef *hcan)
__IO HAL_CAN_StateTypeDef State
return HAL_OK
void(* MspDeInitCallback)(struct __CAN_HandleTypeDef *hcan)
void(* TxMailbox1AbortCallback)(struct __CAN_HandleTypeDef *hcan)
void HAL_CAN_RxFifo1MsgPendingCallback(CAN_HandleTypeDef *hcan)
Rx FIFO 1 message pending callback.
void HAL_CAN_WakeUpFromRxMsgCallback(CAN_HandleTypeDef *hcan)
WakeUp from Rx message callback.
void HAL_CAN_TxMailbox0AbortCallback(CAN_HandleTypeDef *hcan)
Transmission Mailbox 0 Cancellation callback.
void(* TxMailbox2AbortCallback)(struct __CAN_HandleTypeDef *hcan)
void HAL_CAN_ErrorCallback(CAN_HandleTypeDef *hcan)
Error CAN callback.
void HAL_CAN_TxMailbox0CompleteCallback(CAN_HandleTypeDef *hcan)
Transmission Mailbox 0 complete callback.
void HAL_CAN_TxMailbox2CompleteCallback(CAN_HandleTypeDef *hcan)
Transmission Mailbox 2 complete callback.
void HAL_CAN_MspInit(CAN_HandleTypeDef *hcan)
Initializes the CAN MSP.
void HAL_CAN_TxMailbox1AbortCallback(CAN_HandleTypeDef *hcan)
Transmission Mailbox 1 Cancellation callback.
void(* RxFifo1MsgPendingCallback)(struct __CAN_HandleTypeDef *hcan)