Skip to content

Commit 6b42f45

Browse files
committed
STM32G4 update drivers version to CUBE V1.4.0
1 parent 376fda5 commit 6b42f45

File tree

93 files changed

+5812
-3522
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

93 files changed

+5812
-3522
lines changed

targets/TARGET_STM/TARGET_STM32G4/STM32Cube_FW/CMSIS/stm32g471xx.h

Lines changed: 223 additions & 0 deletions
Large diffs are not rendered by default.

targets/TARGET_STM/TARGET_STM32G4/STM32Cube_FW/CMSIS/stm32g474xx.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1120,7 +1120,6 @@ typedef struct
11201120
typedef struct {
11211121
HRTIM_Master_TypeDef sMasterRegs;
11221122
HRTIM_Timerx_TypeDef sTimerxRegs[6];
1123-
// uint32_t RESERVED0[32];
11241123
HRTIM_Common_TypeDef sCommonRegs;
11251124
}HRTIM_TypeDef;
11261125

targets/TARGET_STM/TARGET_STM32G4/STM32Cube_FW/CMSIS/stm32g484xx.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1152,7 +1152,6 @@ typedef struct
11521152
typedef struct {
11531153
HRTIM_Master_TypeDef sMasterRegs;
11541154
HRTIM_Timerx_TypeDef sTimerxRegs[6];
1155-
// uint32_t RESERVED0[32];
11561155
HRTIM_Common_TypeDef sCommonRegs;
11571156
}HRTIM_TypeDef;
11581157

targets/TARGET_STM/TARGET_STM32G4/STM32Cube_FW/CMSIS/stm32g4xx.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,11 +85,11 @@
8585
#endif /* USE_HAL_DRIVER */
8686

8787
/**
88-
* @brief CMSIS Device version number V1.2.0
88+
* @brief CMSIS Device version number V1.2.1
8989
*/
9090
#define __STM32G4_CMSIS_VERSION_MAIN (0x01U) /*!< [31:24] main version */
9191
#define __STM32G4_CMSIS_VERSION_SUB1 (0x02U) /*!< [23:16] sub1 version */
92-
#define __STM32G4_CMSIS_VERSION_SUB2 (0x00U) /*!< [15:8] sub2 version */
92+
#define __STM32G4_CMSIS_VERSION_SUB2 (0x01U) /*!< [15:8] sub2 version */
9393
#define __STM32G4_CMSIS_VERSION_RC (0x00U) /*!< [7:0] release candidate */
9494
#define __STM32G4_CMSIS_VERSION ((__STM32G4_CMSIS_VERSION_MAIN << 24)\
9595
|(__STM32G4_CMSIS_VERSION_SUB1 << 16)\

targets/TARGET_STM/TARGET_STM32G4/STM32Cube_FW/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ target_sources(mbed-stm32g4cube-fw
5252
STM32G4xx_HAL_Driver/stm32g4xx_hal_smartcard.c
5353
STM32G4xx_HAL_Driver/stm32g4xx_hal_smartcard_ex.c
5454
STM32G4xx_HAL_Driver/stm32g4xx_hal_smbus.c
55+
STM32G4xx_HAL_Driver/stm32g4xx_hal_smbus_ex.c
5556
STM32G4xx_HAL_Driver/stm32g4xx_hal_spi.c
5657
STM32G4xx_HAL_Driver/stm32g4xx_hal_spi_ex.c
5758
STM32G4xx_HAL_Driver/stm32g4xx_hal_sram.c

targets/TARGET_STM/TARGET_STM32G4/STM32Cube_FW/STM32G4xx_HAL_Driver/Legacy/stm32_hal_legacy.h

Lines changed: 79 additions & 102 deletions
Large diffs are not rendered by default.

targets/TARGET_STM/TARGET_STM32G4/STM32Cube_FW/STM32G4xx_HAL_Driver/stm32g4xx_hal.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,11 @@
4949
/* Private typedef -----------------------------------------------------------*/
5050
/* Private define ------------------------------------------------------------*/
5151
/**
52-
* @brief STM32G4xx HAL Driver version number V1.2.0
52+
* @brief STM32G4xx HAL Driver version number V1.2.1
5353
*/
5454
#define __STM32G4xx_HAL_VERSION_MAIN (0x01U) /*!< [31:24] main version */
5555
#define __STM32G4xx_HAL_VERSION_SUB1 (0x02U) /*!< [23:16] sub1 version */
56-
#define __STM32G4xx_HAL_VERSION_SUB2 (0x00U) /*!< [15:8] sub2 version */
56+
#define __STM32G4xx_HAL_VERSION_SUB2 (0x01U) /*!< [15:8] sub2 version */
5757
#define __STM32G4xx_HAL_VERSION_RC (0x00U) /*!< [7:0] release candidate */
5858
#define __STM32G4xx_HAL_VERSION ((__STM32G4xx_HAL_VERSION_MAIN << 24U)\
5959
|(__STM32G4xx_HAL_VERSION_SUB1 << 16U)\

targets/TARGET_STM/TARGET_STM32G4/STM32Cube_FW/STM32G4xx_HAL_Driver/stm32g4xx_hal_adc.c

Lines changed: 113 additions & 91 deletions
Large diffs are not rendered by default.

targets/TARGET_STM/TARGET_STM32G4/STM32Cube_FW/STM32G4xx_HAL_Driver/stm32g4xx_hal_adc.h

Lines changed: 25 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@ typedef struct
384384
typedef struct __ADC_HandleTypeDef
385385
#else
386386
typedef struct
387-
#endif
387+
#endif /* USE_HAL_ADC_REGISTER_CALLBACKS */
388388
{
389389
ADC_TypeDef *Instance; /*!< Register base address */
390390
ADC_InitTypeDef Init; /*!< ADC initialization parameters and regular conversions setting */
@@ -769,7 +769,6 @@ typedef void (*pADC_CallbackTypeDef)(ADC_HandleTypeDef *hadc); /*!< pointer to
769769
* @}
770770
*/
771771

772-
773772
/** @defgroup ADC_Event_type ADC Event type
774773
* @{
775774
*/
@@ -1239,7 +1238,7 @@ typedef void (*pADC_CallbackTypeDef)(ADC_HandleTypeDef *hadc); /*!< pointer to
12391238
#else
12401239
#define __HAL_ADC_RESET_HANDLE_STATE(__HANDLE__) \
12411240
((__HANDLE__)->State = HAL_ADC_STATE_RESET)
1242-
#endif
1241+
#endif /* USE_HAL_ADC_REGISTER_CALLBACKS */
12431242

12441243
/**
12451244
* @brief Enable ADC interrupt.
@@ -1667,7 +1666,7 @@ typedef void (*pADC_CallbackTypeDef)(ADC_HandleTypeDef *hadc); /*!< pointer to
16671666
*/
16681667
#define __HAL_ADC_MULTI_CONV_DATA_MASTER_SLAVE(__ADC_MULTI_MASTER_SLAVE__, __ADC_MULTI_CONV_DATA__) \
16691668
__LL_ADC_MULTI_CONV_DATA_MASTER_SLAVE((__ADC_MULTI_MASTER_SLAVE__), (__ADC_MULTI_CONV_DATA__))
1670-
#endif
1669+
#endif /* ADC_MULTIMODE_SUPPORT */
16711670

16721671
/**
16731672
* @brief Helper macro to select the ADC common instance
@@ -1738,10 +1737,10 @@ typedef void (*pADC_CallbackTypeDef)(ADC_HandleTypeDef *hadc); /*!< pointer to
17381737
*/
17391738
#define __HAL_ADC_CONVERT_DATA_RESOLUTION(__DATA__,\
17401739
__ADC_RESOLUTION_CURRENT__,\
1741-
__ADC_RESOLUTION_TARGET__) \
1742-
__LL_ADC_CONVERT_DATA_RESOLUTION((__DATA__), \
1743-
(__ADC_RESOLUTION_CURRENT__), \
1744-
(__ADC_RESOLUTION_TARGET__))
1740+
__ADC_RESOLUTION_TARGET__) \
1741+
__LL_ADC_CONVERT_DATA_RESOLUTION((__DATA__),\
1742+
(__ADC_RESOLUTION_CURRENT__),\
1743+
(__ADC_RESOLUTION_TARGET__))
17451744

17461745
/**
17471746
* @brief Helper macro to calculate the voltage (unit: mVolt)
@@ -1761,10 +1760,10 @@ typedef void (*pADC_CallbackTypeDef)(ADC_HandleTypeDef *hadc); /*!< pointer to
17611760
*/
17621761
#define __HAL_ADC_CALC_DATA_TO_VOLTAGE(__VREFANALOG_VOLTAGE__,\
17631762
__ADC_DATA__,\
1764-
__ADC_RESOLUTION__) \
1765-
__LL_ADC_CALC_DATA_TO_VOLTAGE((__VREFANALOG_VOLTAGE__), \
1766-
(__ADC_DATA__), \
1767-
(__ADC_RESOLUTION__))
1763+
__ADC_RESOLUTION__) \
1764+
__LL_ADC_CALC_DATA_TO_VOLTAGE((__VREFANALOG_VOLTAGE__),\
1765+
(__ADC_DATA__),\
1766+
(__ADC_RESOLUTION__))
17681767

17691768
/**
17701769
* @brief Helper macro to calculate analog reference voltage (Vref+)
@@ -1792,9 +1791,9 @@ typedef void (*pADC_CallbackTypeDef)(ADC_HandleTypeDef *hadc); /*!< pointer to
17921791
* @retval Analog reference voltage (unit: mV)
17931792
*/
17941793
#define __HAL_ADC_CALC_VREFANALOG_VOLTAGE(__VREFINT_ADC_DATA__,\
1795-
__ADC_RESOLUTION__) \
1796-
__LL_ADC_CALC_VREFANALOG_VOLTAGE((__VREFINT_ADC_DATA__), \
1797-
(__ADC_RESOLUTION__))
1794+
__ADC_RESOLUTION__) \
1795+
__LL_ADC_CALC_VREFANALOG_VOLTAGE((__VREFINT_ADC_DATA__),\
1796+
(__ADC_RESOLUTION__))
17981797

17991798
/**
18001799
* @brief Helper macro to calculate the temperature (unit: degree Celsius)
@@ -1843,10 +1842,10 @@ typedef void (*pADC_CallbackTypeDef)(ADC_HandleTypeDef *hadc); /*!< pointer to
18431842
*/
18441843
#define __HAL_ADC_CALC_TEMPERATURE(__VREFANALOG_VOLTAGE__,\
18451844
__TEMPSENSOR_ADC_DATA__,\
1846-
__ADC_RESOLUTION__) \
1847-
__LL_ADC_CALC_TEMPERATURE((__VREFANALOG_VOLTAGE__), \
1848-
(__TEMPSENSOR_ADC_DATA__), \
1849-
(__ADC_RESOLUTION__))
1845+
__ADC_RESOLUTION__) \
1846+
__LL_ADC_CALC_TEMPERATURE((__VREFANALOG_VOLTAGE__),\
1847+
(__TEMPSENSOR_ADC_DATA__),\
1848+
(__ADC_RESOLUTION__))
18501849

18511850
/**
18521851
* @brief Helper macro to calculate the temperature (unit: degree Celsius)
@@ -1897,13 +1896,13 @@ typedef void (*pADC_CallbackTypeDef)(ADC_HandleTypeDef *hadc); /*!< pointer to
18971896
__TEMPSENSOR_CALX_TEMP__,\
18981897
__VREFANALOG_VOLTAGE__,\
18991898
__TEMPSENSOR_ADC_DATA__,\
1900-
__ADC_RESOLUTION__) \
1901-
__LL_ADC_CALC_TEMPERATURE_TYP_PARAMS((__TEMPSENSOR_TYP_AVGSLOPE__), \
1902-
(__TEMPSENSOR_TYP_CALX_V__), \
1903-
(__TEMPSENSOR_CALX_TEMP__), \
1904-
(__VREFANALOG_VOLTAGE__), \
1905-
(__TEMPSENSOR_ADC_DATA__), \
1906-
(__ADC_RESOLUTION__))
1899+
__ADC_RESOLUTION__) \
1900+
__LL_ADC_CALC_TEMPERATURE_TYP_PARAMS((__TEMPSENSOR_TYP_AVGSLOPE__),\
1901+
(__TEMPSENSOR_TYP_CALX_V__),\
1902+
(__TEMPSENSOR_CALX_TEMP__),\
1903+
(__VREFANALOG_VOLTAGE__),\
1904+
(__TEMPSENSOR_ADC_DATA__),\
1905+
(__ADC_RESOLUTION__))
19071906

19081907
/**
19091908
* @}

targets/TARGET_STM/TARGET_STM32G4/STM32Cube_FW/STM32G4xx_HAL_Driver/stm32g4xx_hal_adc_ex.c

Lines changed: 65 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,7 @@
6262

6363
#define ADC_JSQR_FIELDS ((ADC_JSQR_JL | ADC_JSQR_JEXTSEL | ADC_JSQR_JEXTEN |\
6464
ADC_JSQR_JSQ1 | ADC_JSQR_JSQ2 |\
65-
ADC_JSQR_JSQ3 | ADC_JSQR_JSQ4 )) /*!< ADC_JSQR fields of parameters that can be updated anytime
66-
once the ADC is enabled */
65+
ADC_JSQR_JSQ3 | ADC_JSQR_JSQ4 )) /*!< ADC_JSQR fields of parameters that can be updated anytime once the ADC is enabled */
6766

6867
/* Fixed timeout value for ADC calibration. */
6968
/* Values defined to be higher than worst cases: low clock frequency, */
@@ -227,7 +226,8 @@ uint32_t HAL_ADCEx_Calibration_GetValue(ADC_HandleTypeDef *hadc, uint32_t Single
227226
* @param CalibrationFactor Calibration factor (coded on 7 bits maximum)
228227
* @retval HAL state
229228
*/
230-
HAL_StatusTypeDef HAL_ADCEx_Calibration_SetValue(ADC_HandleTypeDef *hadc, uint32_t SingleDiff, uint32_t CalibrationFactor)
229+
HAL_StatusTypeDef HAL_ADCEx_Calibration_SetValue(ADC_HandleTypeDef *hadc, uint32_t SingleDiff,
230+
uint32_t CalibrationFactor)
231231
{
232232
HAL_StatusTypeDef tmp_hal_status = HAL_OK;
233233
uint32_t tmp_adc_is_conversion_on_going_regular;
@@ -523,13 +523,17 @@ HAL_StatusTypeDef HAL_ADCEx_InjectedPollForConversion(ADC_HandleTypeDef *hadc, u
523523
{
524524
if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0UL))
525525
{
526-
/* Update ADC state machine to timeout */
527-
SET_BIT(hadc->State, HAL_ADC_STATE_TIMEOUT);
526+
/* New check to avoid false timeout detection in case of preemption */
527+
if ((hadc->Instance->ISR & tmp_Flag_End) == 0UL)
528+
{
529+
/* Update ADC state machine to timeout */
530+
SET_BIT(hadc->State, HAL_ADC_STATE_TIMEOUT);
528531

529-
/* Process unlocked */
530-
__HAL_UNLOCK(hadc);
532+
/* Process unlocked */
533+
__HAL_UNLOCK(hadc);
531534

532-
return HAL_TIMEOUT;
535+
return HAL_TIMEOUT;
536+
}
533537
}
534538
}
535539
}
@@ -885,6 +889,10 @@ HAL_StatusTypeDef HAL_ADCEx_MultiModeStart_DMA(ADC_HandleTypeDef *hadc, uint32_t
885889
/* Process locked */
886890
__HAL_LOCK(hadc);
887891

892+
/* Temporary handle minimum initialization */
893+
__HAL_ADC_RESET_HANDLE_STATE(&tmphadcSlave);
894+
ADC_CLEAR_ERRORCODE(&tmphadcSlave);
895+
888896
/* Set a temporary handle of the ADC slave associated to the ADC master */
889897
ADC_MULTI_SLAVE(hadc, &tmphadcSlave);
890898

@@ -1000,6 +1008,10 @@ HAL_StatusTypeDef HAL_ADCEx_MultiModeStop_DMA(ADC_HandleTypeDef *hadc)
10001008
/* Disable ADC peripheral if conversions are effectively stopped */
10011009
if (tmp_hal_status == HAL_OK)
10021010
{
1011+
/* Temporary handle minimum initialization */
1012+
__HAL_ADC_RESET_HANDLE_STATE(&tmphadcSlave);
1013+
ADC_CLEAR_ERRORCODE(&tmphadcSlave);
1014+
10031015
/* Set a temporary handle of the ADC slave associated to the ADC master */
10041016
ADC_MULTI_SLAVE(hadc, &tmphadcSlave);
10051017

@@ -1027,13 +1039,20 @@ HAL_StatusTypeDef HAL_ADCEx_MultiModeStop_DMA(ADC_HandleTypeDef *hadc)
10271039
{
10281040
if ((HAL_GetTick() - tickstart) > ADC_STOP_CONVERSION_TIMEOUT)
10291041
{
1030-
/* Update ADC state machine to error */
1031-
SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL);
1042+
/* New check to avoid false timeout detection in case of preemption */
1043+
tmphadcSlave_conversion_on_going = LL_ADC_REG_IsConversionOngoing((&tmphadcSlave)->Instance);
1044+
if ((LL_ADC_REG_IsConversionOngoing(hadc->Instance) == 1UL)
1045+
|| (tmphadcSlave_conversion_on_going == 1UL)
1046+
)
1047+
{
1048+
/* Update ADC state machine to error */
1049+
SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL);
10321050

1033-
/* Process unlocked */
1034-
__HAL_UNLOCK(hadc);
1051+
/* Process unlocked */
1052+
__HAL_UNLOCK(hadc);
10351053

1036-
return HAL_ERROR;
1054+
return HAL_ERROR;
1055+
}
10371056
}
10381057

10391058
tmphadcSlave_conversion_on_going = LL_ADC_REG_IsConversionOngoing((&tmphadcSlave)->Instance);
@@ -1484,6 +1503,10 @@ HAL_StatusTypeDef HAL_ADCEx_RegularMultiModeStop_DMA(ADC_HandleTypeDef *hadc)
14841503
/* Clear HAL_ADC_STATE_REG_BUSY bit */
14851504
CLEAR_BIT(hadc->State, HAL_ADC_STATE_REG_BUSY);
14861505

1506+
/* Temporary handle minimum initialization */
1507+
__HAL_ADC_RESET_HANDLE_STATE(&tmphadcSlave);
1508+
ADC_CLEAR_ERRORCODE(&tmphadcSlave);
1509+
14871510
/* Set a temporary handle of the ADC slave associated to the ADC master */
14881511
ADC_MULTI_SLAVE(hadc, &tmphadcSlave);
14891512

@@ -1511,13 +1534,20 @@ HAL_StatusTypeDef HAL_ADCEx_RegularMultiModeStop_DMA(ADC_HandleTypeDef *hadc)
15111534
{
15121535
if ((HAL_GetTick() - tickstart) > ADC_STOP_CONVERSION_TIMEOUT)
15131536
{
1514-
/* Update ADC state machine to error */
1515-
SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL);
1537+
/* New check to avoid false timeout detection in case of preemption */
1538+
tmphadcSlave_conversion_on_going = LL_ADC_REG_IsConversionOngoing((&tmphadcSlave)->Instance);
1539+
if ((LL_ADC_REG_IsConversionOngoing(hadc->Instance) == 1UL)
1540+
|| (tmphadcSlave_conversion_on_going == 1UL)
1541+
)
1542+
{
1543+
/* Update ADC state machine to error */
1544+
SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL);
15161545

1517-
/* Process unlocked */
1518-
__HAL_UNLOCK(hadc);
1546+
/* Process unlocked */
1547+
__HAL_UNLOCK(hadc);
15191548

1520-
return HAL_ERROR;
1549+
return HAL_ERROR;
1550+
}
15211551
}
15221552

15231553
tmphadcSlave_conversion_on_going = LL_ADC_REG_IsConversionOngoing((&tmphadcSlave)->Instance);
@@ -1957,19 +1987,23 @@ HAL_StatusTypeDef HAL_ADCEx_InjectedConfigChannel(ADC_HandleTypeDef *hadc, ADC_I
19571987
{
19581988
/* Scan each offset register to check if the selected channel is targeted. */
19591989
/* If this is the case, the corresponding offset number is disabled. */
1960-
if(__LL_ADC_CHANNEL_TO_DECIMAL_NB(LL_ADC_GetOffsetChannel(hadc->Instance, LL_ADC_OFFSET_1)) == __LL_ADC_CHANNEL_TO_DECIMAL_NB(sConfigInjected->InjectedChannel))
1990+
if (__LL_ADC_CHANNEL_TO_DECIMAL_NB(LL_ADC_GetOffsetChannel(hadc->Instance, LL_ADC_OFFSET_1))
1991+
== __LL_ADC_CHANNEL_TO_DECIMAL_NB(sConfigInjected->InjectedChannel))
19611992
{
19621993
LL_ADC_SetOffsetState(hadc->Instance, LL_ADC_OFFSET_1, LL_ADC_OFFSET_DISABLE);
19631994
}
1964-
if(__LL_ADC_CHANNEL_TO_DECIMAL_NB(LL_ADC_GetOffsetChannel(hadc->Instance, LL_ADC_OFFSET_2)) == __LL_ADC_CHANNEL_TO_DECIMAL_NB(sConfigInjected->InjectedChannel))
1995+
if (__LL_ADC_CHANNEL_TO_DECIMAL_NB(LL_ADC_GetOffsetChannel(hadc->Instance, LL_ADC_OFFSET_2))
1996+
== __LL_ADC_CHANNEL_TO_DECIMAL_NB(sConfigInjected->InjectedChannel))
19651997
{
19661998
LL_ADC_SetOffsetState(hadc->Instance, LL_ADC_OFFSET_2, LL_ADC_OFFSET_DISABLE);
19671999
}
1968-
if(__LL_ADC_CHANNEL_TO_DECIMAL_NB(LL_ADC_GetOffsetChannel(hadc->Instance, LL_ADC_OFFSET_3)) == __LL_ADC_CHANNEL_TO_DECIMAL_NB(sConfigInjected->InjectedChannel))
2000+
if (__LL_ADC_CHANNEL_TO_DECIMAL_NB(LL_ADC_GetOffsetChannel(hadc->Instance, LL_ADC_OFFSET_3))
2001+
== __LL_ADC_CHANNEL_TO_DECIMAL_NB(sConfigInjected->InjectedChannel))
19692002
{
19702003
LL_ADC_SetOffsetState(hadc->Instance, LL_ADC_OFFSET_3, LL_ADC_OFFSET_DISABLE);
19712004
}
1972-
if(__LL_ADC_CHANNEL_TO_DECIMAL_NB(LL_ADC_GetOffsetChannel(hadc->Instance, LL_ADC_OFFSET_4)) == __LL_ADC_CHANNEL_TO_DECIMAL_NB(sConfigInjected->InjectedChannel))
2005+
if (__LL_ADC_CHANNEL_TO_DECIMAL_NB(LL_ADC_GetOffsetChannel(hadc->Instance, LL_ADC_OFFSET_4))
2006+
== __LL_ADC_CHANNEL_TO_DECIMAL_NB(sConfigInjected->InjectedChannel))
19732007
{
19742008
LL_ADC_SetOffsetState(hadc->Instance, LL_ADC_OFFSET_4, LL_ADC_OFFSET_DISABLE);
19752009
}
@@ -1990,7 +2024,9 @@ HAL_StatusTypeDef HAL_ADCEx_InjectedConfigChannel(ADC_HandleTypeDef *hadc, ADC_I
19902024
if (sConfigInjected->InjectedSingleDiff == ADC_DIFFERENTIAL_ENDED)
19912025
{
19922026
/* Set sampling time of the selected ADC channel */
1993-
LL_ADC_SetChannelSamplingTime(hadc->Instance, (uint32_t)(__LL_ADC_DECIMAL_NB_TO_CHANNEL((__LL_ADC_CHANNEL_TO_DECIMAL_NB((uint32_t)sConfigInjected->InjectedChannel) + 1UL) & 0x1FUL)), sConfigInjected->InjectedSamplingTime);
2027+
LL_ADC_SetChannelSamplingTime(hadc->Instance,
2028+
(uint32_t)(__LL_ADC_DECIMAL_NB_TO_CHANNEL((__LL_ADC_CHANNEL_TO_DECIMAL_NB((uint32_t)sConfigInjected->InjectedChannel)
2029+
+ 1UL) & 0x1FUL)), sConfigInjected->InjectedSamplingTime);
19942030
}
19952031

19962032
}
@@ -2021,7 +2057,7 @@ HAL_StatusTypeDef HAL_ADCEx_InjectedConfigChannel(ADC_HandleTypeDef *hadc, ADC_I
20212057
/* Note: Variable divided by 2 to compensate partially */
20222058
/* CPU processing cycles, scaling in us split to not */
20232059
/* exceed 32 bits register capacity and handle low frequency. */
2024-
wait_loop_index = ((LL_ADC_DELAY_TEMPSENSOR_STAB_US / 10UL) * (SystemCoreClock / (100000UL * 2UL)));
2060+
wait_loop_index = ((LL_ADC_DELAY_TEMPSENSOR_STAB_US / 10UL) * (((SystemCoreClock / (100000UL * 2UL)) + 1UL) + 1UL));
20252061
while (wait_loop_index != 0UL)
20262062
{
20272063
wait_loop_index--;
@@ -2080,7 +2116,7 @@ HAL_StatusTypeDef HAL_ADCEx_MultiModeConfigChannel(ADC_HandleTypeDef *hadc, ADC_
20802116
{
20812117
HAL_StatusTypeDef tmp_hal_status = HAL_OK;
20822118
ADC_Common_TypeDef *tmpADC_Common;
2083-
ADC_HandleTypeDef tmphadcSlave;
2119+
ADC_HandleTypeDef tmphadcSlave;
20842120
uint32_t tmphadcSlave_conversion_on_going;
20852121

20862122
/* Check the parameters */
@@ -2095,6 +2131,10 @@ HAL_StatusTypeDef HAL_ADCEx_MultiModeConfigChannel(ADC_HandleTypeDef *hadc, ADC_
20952131
/* Process locked */
20962132
__HAL_LOCK(hadc);
20972133

2134+
/* Temporary handle minimum initialization */
2135+
__HAL_ADC_RESET_HANDLE_STATE(&tmphadcSlave);
2136+
ADC_CLEAR_ERRORCODE(&tmphadcSlave);
2137+
20982138
ADC_MULTI_SLAVE(hadc, &tmphadcSlave);
20992139

21002140
if (tmphadcSlave.Instance == NULL)

0 commit comments

Comments
 (0)