STM32L4xx_HAL_Driver  1.14.0
Peripheral Control functions

Peripheral Control functions. More...

Functions

HAL_StatusTypeDef HAL_OPAMP_RegisterCallback (OPAMP_HandleTypeDef *hopamp, HAL_OPAMP_CallbackIDTypeDef CallbackID, pOPAMP_CallbackTypeDef pCallback)
 Register a User OPAMP Callback To be used instead of the weak (surcharged) predefined callback. More...
 
HAL_StatusTypeDef HAL_OPAMP_UnRegisterCallback (OPAMP_HandleTypeDef *hopamp, HAL_OPAMP_CallbackIDTypeDef CallbackID)
 Unregister a User OPAMP Callback OPAMP Callback is redirected to the weak (surcharged) predefined callback. More...
 
HAL_StatusTypeDef HAL_OPAMP_Lock (OPAMP_HandleTypeDef *hopamp)
 Lock the selected OPAMP configuration. More...
 
HAL_OPAMP_TrimmingValueTypeDef HAL_OPAMP_GetTrimOffset (OPAMP_HandleTypeDef *hopamp, uint32_t trimmingoffset)
 Return the OPAMP factory trimming value. More...
 

Detailed Description

Peripheral Control functions.

 ===============================================================================
                      ##### Peripheral Control functions #####
 ===============================================================================
    [..]
    This subsection provides a set of functions allowing to control the OPAMP data
    transfers.

Function Documentation

◆ HAL_OPAMP_GetTrimOffset()

HAL_OPAMP_TrimmingValueTypeDef HAL_OPAMP_GetTrimOffset ( OPAMP_HandleTypeDef hopamp,
uint32_t  trimmingoffset 
)

Return the OPAMP factory trimming value.

Note
On STM32L4 OPAMP, user can retrieve factory trimming if OPAMP has never been set to user trimming before. Therefore, this function must be called when OPAMP init parameter "UserTrimming" is set to trimming factory, and before OPAMP calibration (function "HAL_OPAMP_SelfCalibrate()"). Otherwise, factory trimming value cannot be retrieved and error status is returned.
Parameters
hopamp: OPAMP handle
trimmingoffset: Trimming offset (P or N) This parameter must be a value of OPAMP Factory Trimming
Note
Calibration parameter retrieved is corresponding to the mode specified in OPAMP init structure (mode normal or low-power). To retrieve calibration parameters for both modes, repeat this function after OPAMP init structure accordingly updated.
Return values
Trimmingvalue (P or N): range: 0->31 or OPAMP_FACTORYTRIMMING_DUMMY if trimming value is not available

Definition at line 919 of file stm32l4xx_hal_opamp.c.

920 {
921  HAL_OPAMP_TrimmingValueTypeDef trimmingvalue;
922  __IO uint32_t* tmp_opamp_reg_trimming; /* Selection of register of trimming depending on power mode: OTR or LPOTR */
923 
924  /* Check the OPAMP handle allocation */
925  /* Value can be retrieved in HAL_OPAMP_STATE_READY state */
926  if(hopamp == NULL)
927  {
928  return OPAMP_FACTORYTRIMMING_DUMMY;
929  }
930 
931  /* Check the OPAMP handle allocation */
932  /* Value can be retrieved in HAL_OPAMP_STATE_READY state */
933  if(hopamp->State == HAL_OPAMP_STATE_READY)
934  {
935  /* Check the parameter */
936  assert_param(IS_OPAMP_ALL_INSTANCE(hopamp->Instance));
937  assert_param(IS_OPAMP_FACTORYTRIMMING(trimmingoffset));
938  assert_param(IS_OPAMP_POWERMODE(hopamp->Init.PowerMode));
939 
940  /* Check the trimming mode */
941  if (READ_BIT(hopamp->Instance->CSR,OPAMP_CSR_USERTRIM) != 0U)
942  {
943  /* This function must called when OPAMP init parameter "UserTrimming" */
944  /* is set to trimming factory, and before OPAMP calibration (function */
945  /* "HAL_OPAMP_SelfCalibrate()"). */
946  /* Otherwise, factory trimming value cannot be retrieved and error */
947  /* status is returned. */
948  trimmingvalue = OPAMP_FACTORYTRIMMING_DUMMY;
949  }
950  else
951  {
952  /* Select trimming settings depending on power mode */
953  if (hopamp->Init.PowerMode == OPAMP_POWERMODE_NORMAL)
954  {
955  tmp_opamp_reg_trimming = &OPAMP->OTR;
956  }
957  else
958  {
959  tmp_opamp_reg_trimming = &OPAMP->LPOTR;
960  }
961 
962  /* Get factory trimming */
963  if (trimmingoffset == OPAMP_FACTORYTRIMMING_P)
964  {
965  /* OPAMP_FACTORYTRIMMING_P */
966  trimmingvalue = ((*tmp_opamp_reg_trimming) & OPAMP_OTR_TRIMOFFSETP) >> OPAMP_INPUT_NONINVERTING;
967  }
968  else
969  {
970  /* OPAMP_FACTORYTRIMMING_N */
971  trimmingvalue = (*tmp_opamp_reg_trimming) & OPAMP_OTR_TRIMOFFSETN;
972  }
973  }
974  }
975  else
976  {
977  return OPAMP_FACTORYTRIMMING_DUMMY;
978  }
979  return trimmingvalue;
980 }
uint32_t HAL_OPAMP_TrimmingValueTypeDef
HAl_OPAMP_TrimmingValueTypeDef definition.
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))

◆ HAL_OPAMP_Lock()

HAL_StatusTypeDef HAL_OPAMP_Lock ( OPAMP_HandleTypeDef hopamp)

Lock the selected OPAMP configuration.

Note
On STM32L4, HAL OPAMP lock is software lock only (in contrast of hardware lock available on some other STM32 devices).
Parameters
hopampOPAMP handle
Return values
HALstatus

Definition at line 870 of file stm32l4xx_hal_opamp.c.

871 {
872  HAL_StatusTypeDef status = HAL_OK;
873 
874  /* Check the OPAMP handle allocation */
875  /* Check if OPAMP locked */
876  /* OPAMP can be locked when enabled and running in normal mode */
877  /* It is meaningless otherwise */
878  if(hopamp == NULL)
879  {
880  status = HAL_ERROR;
881  }
882  else if(hopamp->State == HAL_OPAMP_STATE_BUSY)
883  {
884  /* Check the parameter */
885  assert_param(IS_OPAMP_ALL_INSTANCE(hopamp->Instance));
886 
887  /* OPAMP state changed to locked */
888  hopamp->State = HAL_OPAMP_STATE_BUSYLOCKED;
889  }
890  else
891  {
892  status = HAL_ERROR;
893  }
894  return status;
895 }
return HAL_OK
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))

◆ HAL_OPAMP_RegisterCallback()

HAL_StatusTypeDef HAL_OPAMP_RegisterCallback ( OPAMP_HandleTypeDef hopamp,
HAL_OPAMP_CallbackIDTypeDef  CallbackID,
pOPAMP_CallbackTypeDef  pCallback 
)

Register a User OPAMP Callback To be used instead of the weak (surcharged) predefined callback.

Parameters
hopamp: OPAMP handle
CallbackID: ID of the callback to be registered This parameter can be one of the following values:
pCallback: pointer to the Callback function
Return values
status

Definition at line 1037 of file stm32l4xx_hal_opamp.c.

1038 {
1039  HAL_StatusTypeDef status = HAL_OK;
1040 
1041  if(pCallback == NULL)
1042  {
1043  return HAL_ERROR;
1044  }
1045 
1046  /* Process locked */
1047  __HAL_LOCK(hopamp);
1048 
1049  if(hopamp->State == HAL_OPAMP_STATE_READY)
1050  {
1051  switch (CallbackID)
1052  {
1054  hopamp->MspInitCallback = pCallback;
1055  break;
1057  hopamp->MspDeInitCallback = pCallback;
1058  break;
1059  default :
1060  /* update return status */
1061  status = HAL_ERROR;
1062  break;
1063  }
1064  }
1065  else if (hopamp->State == HAL_OPAMP_STATE_RESET)
1066  {
1067  switch (CallbackID)
1068  {
1070  hopamp->MspInitCallback = pCallback;
1071  break;
1073  hopamp->MspDeInitCallback = pCallback;
1074  break;
1075  default :
1076  /* update return status */
1077  status = HAL_ERROR;
1078  break;
1079  }
1080  }
1081  else
1082  {
1083  /* update return status */
1084  status = HAL_ERROR;
1085  }
1086 
1087  /* Release Lock */
1088  __HAL_UNLOCK(hopamp);
1089  return status;
1090 }
__HAL_UNLOCK(hrtc)
__HAL_LOCK(hrtc)
return HAL_OK

◆ HAL_OPAMP_UnRegisterCallback()

HAL_StatusTypeDef HAL_OPAMP_UnRegisterCallback ( OPAMP_HandleTypeDef hopamp,
HAL_OPAMP_CallbackIDTypeDef  CallbackID 
)

Unregister a User OPAMP Callback OPAMP Callback is redirected to the weak (surcharged) predefined callback.

Parameters
hopamp: OPAMP handle
CallbackID: ID of the callback to be unregistered This parameter can be one of the following values:
Return values
status

Definition at line 1104 of file stm32l4xx_hal_opamp.c.

1105 {
1106  HAL_StatusTypeDef status = HAL_OK;
1107 
1108  /* Process locked */
1109  __HAL_LOCK(hopamp);
1110 
1111  if(hopamp->State == HAL_OPAMP_STATE_READY)
1112  {
1113  switch (CallbackID)
1114  {
1116  hopamp->MspInitCallback = HAL_OPAMP_MspInit;
1117  break;
1119  hopamp->MspDeInitCallback = HAL_OPAMP_MspDeInit;
1120  break;
1121  case HAL_OPAMP_ALL_CB_ID :
1122  hopamp->MspInitCallback = HAL_OPAMP_MspInit;
1123  hopamp->MspDeInitCallback = HAL_OPAMP_MspDeInit;
1124  break;
1125  default :
1126  /* update return status */
1127  status = HAL_ERROR;
1128  break;
1129  }
1130  }
1131  else if (hopamp->State == HAL_OPAMP_STATE_RESET)
1132  {
1133  switch (CallbackID)
1134  {
1136  hopamp->MspInitCallback = HAL_OPAMP_MspInit;
1137  break;
1139  hopamp->MspDeInitCallback = HAL_OPAMP_MspDeInit;
1140  break;
1141  default :
1142  /* update return status */
1143  status = HAL_ERROR;
1144  break;
1145  }
1146  }
1147  else
1148  {
1149  /* update return status */
1150  status = HAL_ERROR;
1151  }
1152 
1153  /* Release Lock */
1154  __HAL_UNLOCK(hopamp);
1155  return status;
1156 }
__HAL_UNLOCK(hrtc)
__HAL_LOCK(hrtc)
return HAL_OK
void HAL_OPAMP_MspDeInit(OPAMP_HandleTypeDef *hopamp)
DeInitialize OPAMP MSP.
void HAL_OPAMP_MspInit(OPAMP_HandleTypeDef *hopamp)
Initialize the OPAMP MSP.