STM32L4xx_HAL_Driver  1.14.0
Initialization and de-initialization functions

Initialization and Configuration functions. More...

Functions

HAL_StatusTypeDef HAL_I2C_Init (I2C_HandleTypeDef *hi2c)
 Initializes the I2C according to the specified parameters in the I2C_InitTypeDef and initialize the associated handle. More...
 
HAL_StatusTypeDef HAL_I2C_DeInit (I2C_HandleTypeDef *hi2c)
 DeInitialize the I2C peripheral. More...
 
void HAL_I2C_MspInit (I2C_HandleTypeDef *hi2c)
 Initialize the I2C MSP. More...
 
void HAL_I2C_MspDeInit (I2C_HandleTypeDef *hi2c)
 DeInitialize the I2C MSP. More...
 
HAL_StatusTypeDef HAL_I2C_RegisterCallback (I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef CallbackID, pI2C_CallbackTypeDef pCallback)
 Register a User I2C Callback To be used instead of the weak predefined callback. More...
 
HAL_StatusTypeDef HAL_I2C_UnRegisterCallback (I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef CallbackID)
 Unregister an I2C Callback I2C callback is redirected to the weak predefined callback. More...
 
HAL_StatusTypeDef HAL_I2C_RegisterAddrCallback (I2C_HandleTypeDef *hi2c, pI2C_AddrCallbackTypeDef pCallback)
 Register the Slave Address Match I2C Callback To be used instead of the weak HAL_I2C_AddrCallback() predefined callback. More...
 
HAL_StatusTypeDef HAL_I2C_UnRegisterAddrCallback (I2C_HandleTypeDef *hi2c)
 UnRegister the Slave Address Match I2C Callback Info Ready I2C Callback is redirected to the weak HAL_I2C_AddrCallback() predefined callback. More...
 

Detailed Description

Initialization and Configuration functions.

 ===============================================================================
              ##### Initialization and de-initialization functions #####
 ===============================================================================
    [..]  This subsection provides a set of functions allowing to initialize and
          deinitialize the I2Cx peripheral:

      (+) User must Implement HAL_I2C_MspInit() function in which he configures
          all related peripherals resources (CLOCK, GPIO, DMA, IT and NVIC ).

      (+) Call the function HAL_I2C_Init() to configure the selected device with
          the selected configuration:
        (++) Clock Timing
        (++) Own Address 1
        (++) Addressing mode (Master, Slave)
        (++) Dual Addressing mode
        (++) Own Address 2
        (++) Own Address 2 Mask
        (++) General call mode
        (++) Nostretch mode

      (+) Call the function HAL_I2C_DeInit() to restore the default configuration
          of the selected I2Cx peripheral.

Function Documentation

◆ HAL_I2C_DeInit()

HAL_StatusTypeDef HAL_I2C_DeInit ( I2C_HandleTypeDef hi2c)

DeInitialize the I2C peripheral.

Parameters
hi2cPointer to a I2C_HandleTypeDef structure that contains the configuration information for the specified I2C.
Return values
HALstatus

Definition at line 578 of file stm32l4xx_hal_i2c.c.

579 {
580  /* Check the I2C handle allocation */
581  if (hi2c == NULL)
582  {
583  return HAL_ERROR;
584  }
585 
586  /* Check the parameters */
587  assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance));
588 
589  hi2c->State = HAL_I2C_STATE_BUSY;
590 
591  /* Disable the I2C Peripheral Clock */
592  __HAL_I2C_DISABLE(hi2c);
593 
594 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
595  if (hi2c->MspDeInitCallback == NULL)
596  {
597  hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */
598  }
599 
600  /* DeInit the low level hardware: GPIO, CLOCK, NVIC */
601  hi2c->MspDeInitCallback(hi2c);
602 #else
603  /* DeInit the low level hardware: GPIO, CLOCK, NVIC */
604  HAL_I2C_MspDeInit(hi2c);
605 #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
606 
607  hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
608  hi2c->State = HAL_I2C_STATE_RESET;
609  hi2c->PreviousState = I2C_STATE_NONE;
610  hi2c->Mode = HAL_I2C_MODE_NONE;
611 
612  /* Release Lock */
613  __HAL_UNLOCK(hi2c);
614 
615  return HAL_OK;
616 }
__HAL_UNLOCK(hrtc)
return HAL_OK
__IO HAL_I2C_ModeTypeDef Mode
__IO uint32_t PreviousState
void(* MspDeInitCallback)(struct __I2C_HandleTypeDef *hi2c)
__IO HAL_I2C_StateTypeDef State
void HAL_I2C_MspDeInit(I2C_HandleTypeDef *hi2c)
DeInitialize the I2C MSP.
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))

◆ HAL_I2C_Init()

HAL_StatusTypeDef HAL_I2C_Init ( I2C_HandleTypeDef hi2c)

Initializes the I2C according to the specified parameters in the I2C_InitTypeDef and initialize the associated handle.

Parameters
hi2cPointer to a I2C_HandleTypeDef structure that contains the configuration information for the specified I2C.
Return values
HALstatus

Definition at line 469 of file stm32l4xx_hal_i2c.c.

470 {
471  /* Check the I2C handle allocation */
472  if (hi2c == NULL)
473  {
474  return HAL_ERROR;
475  }
476 
477  /* Check the parameters */
478  assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance));
479  assert_param(IS_I2C_OWN_ADDRESS1(hi2c->Init.OwnAddress1));
480  assert_param(IS_I2C_ADDRESSING_MODE(hi2c->Init.AddressingMode));
481  assert_param(IS_I2C_DUAL_ADDRESS(hi2c->Init.DualAddressMode));
482  assert_param(IS_I2C_OWN_ADDRESS2(hi2c->Init.OwnAddress2));
483  assert_param(IS_I2C_OWN_ADDRESS2_MASK(hi2c->Init.OwnAddress2Masks));
484  assert_param(IS_I2C_GENERAL_CALL(hi2c->Init.GeneralCallMode));
485  assert_param(IS_I2C_NO_STRETCH(hi2c->Init.NoStretchMode));
486 
487  if (hi2c->State == HAL_I2C_STATE_RESET)
488  {
489  /* Allocate lock resource and initialize it */
490  hi2c->Lock = HAL_UNLOCKED;
491 
492 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
493  /* Init the I2C Callback settings */
494  hi2c->MasterTxCpltCallback = HAL_I2C_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallback */
495  hi2c->MasterRxCpltCallback = HAL_I2C_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallback */
496  hi2c->SlaveTxCpltCallback = HAL_I2C_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallback */
497  hi2c->SlaveRxCpltCallback = HAL_I2C_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallback */
498  hi2c->ListenCpltCallback = HAL_I2C_ListenCpltCallback; /* Legacy weak ListenCpltCallback */
499  hi2c->MemTxCpltCallback = HAL_I2C_MemTxCpltCallback; /* Legacy weak MemTxCpltCallback */
500  hi2c->MemRxCpltCallback = HAL_I2C_MemRxCpltCallback; /* Legacy weak MemRxCpltCallback */
501  hi2c->ErrorCallback = HAL_I2C_ErrorCallback; /* Legacy weak ErrorCallback */
502  hi2c->AbortCpltCallback = HAL_I2C_AbortCpltCallback; /* Legacy weak AbortCpltCallback */
503  hi2c->AddrCallback = HAL_I2C_AddrCallback; /* Legacy weak AddrCallback */
504 
505  if (hi2c->MspInitCallback == NULL)
506  {
507  hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */
508  }
509 
510  /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */
511  hi2c->MspInitCallback(hi2c);
512 #else
513  /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */
514  HAL_I2C_MspInit(hi2c);
515 #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
516  }
517 
518  hi2c->State = HAL_I2C_STATE_BUSY;
519 
520  /* Disable the selected I2C peripheral */
521  __HAL_I2C_DISABLE(hi2c);
522 
523  /*---------------------------- I2Cx TIMINGR Configuration ------------------*/
524  /* Configure I2Cx: Frequency range */
525  hi2c->Instance->TIMINGR = hi2c->Init.Timing & TIMING_CLEAR_MASK;
526 
527  /*---------------------------- I2Cx OAR1 Configuration ---------------------*/
528  /* Disable Own Address1 before set the Own Address1 configuration */
529  hi2c->Instance->OAR1 &= ~I2C_OAR1_OA1EN;
530 
531  /* Configure I2Cx: Own Address1 and ack own address1 mode */
532  if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_7BIT)
533  {
534  hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | hi2c->Init.OwnAddress1);
535  }
536  else /* I2C_ADDRESSINGMODE_10BIT */
537  {
538  hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | I2C_OAR1_OA1MODE | hi2c->Init.OwnAddress1);
539  }
540 
541  /*---------------------------- I2Cx CR2 Configuration ----------------------*/
542  /* Configure I2Cx: Addressing Master mode */
543  if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT)
544  {
545  hi2c->Instance->CR2 = (I2C_CR2_ADD10);
546  }
547  /* Enable the AUTOEND by default, and enable NACK (should be disable only during Slave process */
548  hi2c->Instance->CR2 |= (I2C_CR2_AUTOEND | I2C_CR2_NACK);
549 
550  /*---------------------------- I2Cx OAR2 Configuration ---------------------*/
551  /* Disable Own Address2 before set the Own Address2 configuration */
552  hi2c->Instance->OAR2 &= ~I2C_DUALADDRESS_ENABLE;
553 
554  /* Configure I2Cx: Dual mode and Own Address2 */
555  hi2c->Instance->OAR2 = (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2 | (hi2c->Init.OwnAddress2Masks << 8));
556 
557  /*---------------------------- I2Cx CR1 Configuration ----------------------*/
558  /* Configure I2Cx: Generalcall and NoStretch mode */
559  hi2c->Instance->CR1 = (hi2c->Init.GeneralCallMode | hi2c->Init.NoStretchMode);
560 
561  /* Enable the selected I2C peripheral */
562  __HAL_I2C_ENABLE(hi2c);
563 
564  hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
565  hi2c->State = HAL_I2C_STATE_READY;
566  hi2c->PreviousState = I2C_STATE_NONE;
567  hi2c->Mode = HAL_I2C_MODE_NONE;
568 
569  return HAL_OK;
570 }
void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c)
Slave Rx Transfer completed callback.
uint32_t DualAddressMode
void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c)
I2C abort callback.
void(* SlaveRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c)
void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c)
Master Rx Transfer completed callback.
void(* MspInitCallback)(struct __I2C_HandleTypeDef *hi2c)
void(* ErrorCallback)(struct __I2C_HandleTypeDef *hi2c)
void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c)
Slave Tx Transfer completed callback.
void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c)
I2C error callback.
uint32_t GeneralCallMode
void(* ListenCpltCallback)(struct __I2C_HandleTypeDef *hi2c)
void(* MemTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c)
void HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c)
Listen Complete callback.
void(* MemRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c)
I2C_InitTypeDef Init
void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c)
Memory Tx Transfer completed callback.
void(* SlaveTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c)
return HAL_OK
uint32_t OwnAddress2Masks
void(* MasterTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c)
void(* AbortCpltCallback)(struct __I2C_HandleTypeDef *hi2c)
__IO HAL_I2C_ModeTypeDef Mode
__IO uint32_t PreviousState
__IO HAL_I2C_StateTypeDef State
HAL_LockTypeDef Lock
void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c)
Initialize the I2C MSP.
void HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode)
Slave Address Match callback.
void(* AddrCallback)(struct __I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode)
void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c)
Master Tx Transfer completed callback.
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))
void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c)
Memory Rx Transfer completed callback.
void(* MasterRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c)

◆ HAL_I2C_MspDeInit()

__weak void HAL_I2C_MspDeInit ( I2C_HandleTypeDef hi2c)

DeInitialize the I2C MSP.

Parameters
hi2cPointer to a I2C_HandleTypeDef structure that contains the configuration information for the specified I2C.
Return values
None

Definition at line 640 of file stm32l4xx_hal_i2c.c.

641 {
642  /* Prevent unused argument(s) compilation warning */
643  UNUSED(hi2c);
644 
645  /* NOTE : This function should not be modified, when the callback is needed,
646  the HAL_I2C_MspDeInit could be implemented in the user file
647  */
648 }

◆ HAL_I2C_MspInit()

__weak void HAL_I2C_MspInit ( I2C_HandleTypeDef hi2c)

Initialize the I2C MSP.

Parameters
hi2cPointer to a I2C_HandleTypeDef structure that contains the configuration information for the specified I2C.
Return values
None

Definition at line 624 of file stm32l4xx_hal_i2c.c.

625 {
626  /* Prevent unused argument(s) compilation warning */
627  UNUSED(hi2c);
628 
629  /* NOTE : This function should not be modified, when the callback is needed,
630  the HAL_I2C_MspInit could be implemented in the user file
631  */
632 }

◆ HAL_I2C_RegisterAddrCallback()

HAL_StatusTypeDef HAL_I2C_RegisterAddrCallback ( I2C_HandleTypeDef hi2c,
pI2C_AddrCallbackTypeDef  pCallback 
)

Register the Slave Address Match I2C Callback To be used instead of the weak HAL_I2C_AddrCallback() predefined callback.

Parameters
hi2cPointer to a I2C_HandleTypeDef structure that contains the configuration information for the specified I2C.
pCallbackpointer to the Address Match Callback function
Return values
HALstatus

Definition at line 906 of file stm32l4xx_hal_i2c.c.

907 {
908  HAL_StatusTypeDef status = HAL_OK;
909 
910  if (pCallback == NULL)
911  {
912  /* Update the error code */
913  hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
914 
915  return HAL_ERROR;
916  }
917  /* Process locked */
918  __HAL_LOCK(hi2c);
919 
920  if (HAL_I2C_STATE_READY == hi2c->State)
921  {
922  hi2c->AddrCallback = pCallback;
923  }
924  else
925  {
926  /* Update the error code */
927  hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
928 
929  /* Return error status */
930  status = HAL_ERROR;
931  }
932 
933  /* Release Lock */
934  __HAL_UNLOCK(hi2c);
935  return status;
936 }
__HAL_UNLOCK(hrtc)
__HAL_LOCK(hrtc)
return HAL_OK
__IO HAL_I2C_StateTypeDef State
void(* AddrCallback)(struct __I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode)

◆ HAL_I2C_RegisterCallback()

HAL_StatusTypeDef HAL_I2C_RegisterCallback ( I2C_HandleTypeDef hi2c,
HAL_I2C_CallbackIDTypeDef  CallbackID,
pI2C_CallbackTypeDef  pCallback 
)

Register a User I2C Callback To be used instead of the weak predefined callback.

Parameters
hi2cPointer to a I2C_HandleTypeDef structure that contains the configuration information for the specified I2C.
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 672 of file stm32l4xx_hal_i2c.c.

673 {
674  HAL_StatusTypeDef status = HAL_OK;
675 
676  if (pCallback == NULL)
677  {
678  /* Update the error code */
679  hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
680 
681  return HAL_ERROR;
682  }
683  /* Process locked */
684  __HAL_LOCK(hi2c);
685 
686  if (HAL_I2C_STATE_READY == hi2c->State)
687  {
688  switch (CallbackID)
689  {
691  hi2c->MasterTxCpltCallback = pCallback;
692  break;
693 
695  hi2c->MasterRxCpltCallback = pCallback;
696  break;
697 
699  hi2c->SlaveTxCpltCallback = pCallback;
700  break;
701 
703  hi2c->SlaveRxCpltCallback = pCallback;
704  break;
705 
707  hi2c->ListenCpltCallback = pCallback;
708  break;
709 
711  hi2c->MemTxCpltCallback = pCallback;
712  break;
713 
715  hi2c->MemRxCpltCallback = pCallback;
716  break;
717 
718  case HAL_I2C_ERROR_CB_ID :
719  hi2c->ErrorCallback = pCallback;
720  break;
721 
722  case HAL_I2C_ABORT_CB_ID :
723  hi2c->AbortCpltCallback = pCallback;
724  break;
725 
726  case HAL_I2C_MSPINIT_CB_ID :
727  hi2c->MspInitCallback = pCallback;
728  break;
729 
731  hi2c->MspDeInitCallback = pCallback;
732  break;
733 
734  default :
735  /* Update the error code */
736  hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
737 
738  /* Return error status */
739  status = HAL_ERROR;
740  break;
741  }
742  }
743  else if (HAL_I2C_STATE_RESET == hi2c->State)
744  {
745  switch (CallbackID)
746  {
747  case HAL_I2C_MSPINIT_CB_ID :
748  hi2c->MspInitCallback = pCallback;
749  break;
750 
752  hi2c->MspDeInitCallback = pCallback;
753  break;
754 
755  default :
756  /* Update the error code */
757  hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
758 
759  /* Return error status */
760  status = HAL_ERROR;
761  break;
762  }
763  }
764  else
765  {
766  /* Update the error code */
767  hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
768 
769  /* Return error status */
770  status = HAL_ERROR;
771  }
772 
773  /* Release Lock */
774  __HAL_UNLOCK(hi2c);
775  return status;
776 }
void(* SlaveRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c)
void(* MspInitCallback)(struct __I2C_HandleTypeDef *hi2c)
void(* ErrorCallback)(struct __I2C_HandleTypeDef *hi2c)
__HAL_UNLOCK(hrtc)
void(* ListenCpltCallback)(struct __I2C_HandleTypeDef *hi2c)
void(* MemTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c)
void(* MemRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c)
__HAL_LOCK(hrtc)
void(* SlaveTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c)
return HAL_OK
void(* MasterTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c)
void(* AbortCpltCallback)(struct __I2C_HandleTypeDef *hi2c)
void(* MspDeInitCallback)(struct __I2C_HandleTypeDef *hi2c)
__IO HAL_I2C_StateTypeDef State
void(* MasterRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c)

◆ HAL_I2C_UnRegisterAddrCallback()

HAL_StatusTypeDef HAL_I2C_UnRegisterAddrCallback ( I2C_HandleTypeDef hi2c)

UnRegister the Slave Address Match I2C Callback Info Ready I2C Callback is redirected to the weak HAL_I2C_AddrCallback() predefined callback.

Parameters
hi2cPointer to a I2C_HandleTypeDef structure that contains the configuration information for the specified I2C.
Return values
HALstatus

Definition at line 945 of file stm32l4xx_hal_i2c.c.

946 {
947  HAL_StatusTypeDef status = HAL_OK;
948 
949  /* Process locked */
950  __HAL_LOCK(hi2c);
951 
952  if (HAL_I2C_STATE_READY == hi2c->State)
953  {
954  hi2c->AddrCallback = HAL_I2C_AddrCallback; /* Legacy weak AddrCallback */
955  }
956  else
957  {
958  /* Update the error code */
959  hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
960 
961  /* Return error status */
962  status = HAL_ERROR;
963  }
964 
965  /* Release Lock */
966  __HAL_UNLOCK(hi2c);
967  return status;
968 }
__HAL_UNLOCK(hrtc)
__HAL_LOCK(hrtc)
return HAL_OK
__IO HAL_I2C_StateTypeDef State
void HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode)
Slave Address Match callback.
void(* AddrCallback)(struct __I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode)

◆ HAL_I2C_UnRegisterCallback()

HAL_StatusTypeDef HAL_I2C_UnRegisterCallback ( I2C_HandleTypeDef hi2c,
HAL_I2C_CallbackIDTypeDef  CallbackID 
)

Unregister an I2C Callback I2C callback is redirected to the weak predefined callback.

Parameters
hi2cPointer to a I2C_HandleTypeDef structure that contains the configuration information for the specified I2C.
CallbackIDID of the callback to be unregistered This parameter can be one of the following values: This parameter can be one of the following values:
Return values
HALstatus

Definition at line 799 of file stm32l4xx_hal_i2c.c.

800 {
801  HAL_StatusTypeDef status = HAL_OK;
802 
803  /* Process locked */
804  __HAL_LOCK(hi2c);
805 
806  if (HAL_I2C_STATE_READY == hi2c->State)
807  {
808  switch (CallbackID)
809  {
811  hi2c->MasterTxCpltCallback = HAL_I2C_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallback */
812  break;
813 
815  hi2c->MasterRxCpltCallback = HAL_I2C_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallback */
816  break;
817 
819  hi2c->SlaveTxCpltCallback = HAL_I2C_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallback */
820  break;
821 
823  hi2c->SlaveRxCpltCallback = HAL_I2C_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallback */
824  break;
825 
827  hi2c->ListenCpltCallback = HAL_I2C_ListenCpltCallback; /* Legacy weak ListenCpltCallback */
828  break;
829 
831  hi2c->MemTxCpltCallback = HAL_I2C_MemTxCpltCallback; /* Legacy weak MemTxCpltCallback */
832  break;
833 
835  hi2c->MemRxCpltCallback = HAL_I2C_MemRxCpltCallback; /* Legacy weak MemRxCpltCallback */
836  break;
837 
838  case HAL_I2C_ERROR_CB_ID :
839  hi2c->ErrorCallback = HAL_I2C_ErrorCallback; /* Legacy weak ErrorCallback */
840  break;
841 
842  case HAL_I2C_ABORT_CB_ID :
843  hi2c->AbortCpltCallback = HAL_I2C_AbortCpltCallback; /* Legacy weak AbortCpltCallback */
844  break;
845 
846  case HAL_I2C_MSPINIT_CB_ID :
847  hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */
848  break;
849 
851  hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */
852  break;
853 
854  default :
855  /* Update the error code */
856  hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
857 
858  /* Return error status */
859  status = HAL_ERROR;
860  break;
861  }
862  }
863  else if (HAL_I2C_STATE_RESET == hi2c->State)
864  {
865  switch (CallbackID)
866  {
867  case HAL_I2C_MSPINIT_CB_ID :
868  hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */
869  break;
870 
872  hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */
873  break;
874 
875  default :
876  /* Update the error code */
877  hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
878 
879  /* Return error status */
880  status = HAL_ERROR;
881  break;
882  }
883  }
884  else
885  {
886  /* Update the error code */
887  hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK;
888 
889  /* Return error status */
890  status = HAL_ERROR;
891  }
892 
893  /* Release Lock */
894  __HAL_UNLOCK(hi2c);
895  return status;
896 }
void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c)
Slave Rx Transfer completed callback.
void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c)
I2C abort callback.
void(* SlaveRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c)
void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c)
Master Rx Transfer completed callback.
void(* MspInitCallback)(struct __I2C_HandleTypeDef *hi2c)
void(* ErrorCallback)(struct __I2C_HandleTypeDef *hi2c)
void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c)
Slave Tx Transfer completed callback.
void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c)
I2C error callback.
__HAL_UNLOCK(hrtc)
void(* ListenCpltCallback)(struct __I2C_HandleTypeDef *hi2c)
void(* MemTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c)
void HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c)
Listen Complete callback.
void(* MemRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c)
__HAL_LOCK(hrtc)
void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c)
Memory Tx Transfer completed callback.
void(* SlaveTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c)
return HAL_OK
void(* MasterTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c)
void(* AbortCpltCallback)(struct __I2C_HandleTypeDef *hi2c)
void(* MspDeInitCallback)(struct __I2C_HandleTypeDef *hi2c)
__IO HAL_I2C_StateTypeDef State
void HAL_I2C_MspDeInit(I2C_HandleTypeDef *hi2c)
DeInitialize the I2C MSP.
void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c)
Initialize the I2C MSP.
void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c)
Master Tx Transfer completed callback.
void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c)
Memory Rx Transfer completed callback.
void(* MasterRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c)