@@ -204,6 +204,10 @@ typedef struct
204204 uint32_t SamplingMode ; /*!< Select the sampling mode to be used for ADC group regular conversion.
205205 This parameter can be a value of @ref ADC_regular_sampling_mode */
206206
207+ #if defined(ADC3 )
208+ uint32_t ConversionDataManagement ; /*!< Specifies whether the Data conversion data is managed: using the DMA (one shot
209+ or circular),or stored in the DR register or transferred to ADF register.*/
210+ #endif /* ADC3 */
207211 FunctionalState DMAContinuousRequests ; /*!< Specify whether the DMA requests are performed in one shot mode (DMA
208212 transfer stops when number of conversions is reached) or in continuous
209213 mode (DMA transfer unlimited, whatever number of conversions).
@@ -664,7 +668,7 @@ typedef void (*pADC_CallbackTypeDef)(ADC_HandleTypeDef *hadc); /*!< pointer to
664668
665669/* Triggers specific to some devices of STM32H5 series */
666670#if defined(TIM8 )
667- /* Devices STM32H563/H573xx */
671+ /* Devices STM32H563/H573xx and STM32H5Ex/H5Fxxx */
668672#define ADC_EXTERNALTRIG_T4_CC4 (LL_ADC_REG_TRIG_EXT_TIM4_CH4) /*!< ADC group regular conversion
669673 trigger from external peripheral: TIM4 channel 4 event (capture compare).
670674 Specific to devices STM32H563/H573xx. */
@@ -680,6 +684,12 @@ typedef void (*pADC_CallbackTypeDef)(ADC_HandleTypeDef *hadc); /*!< pointer to
680684#define ADC_EXTERNALTRIG_T15_TRGO (LL_ADC_REG_TRIG_EXT_TIM15_TRGO) /*!< ADC group regular conversion
681685 trigger from external peripheral: TIM15 TRGO event.
682686 Specific to devices STM32H563/H573xx. */
687+ #if defined(ADC3 )
688+ /* Devices STM32H5Ex/H5Fxxx */
689+ #define ADC_EXTERNALTRIG_PLAY_OUT7 (LL_ADC_REG_TRIG_EXT_PLAY_OUT7) /*!< ADC group regular conversion
690+ trigger from external peripheral: PLAY_OUT7 event.
691+ Specific to devices STM32H5Ex/H5Fxxx. */
692+ #endif /* ADC3 */
683693#else
684694/* Devices STM32H503xx */
685695#define ADC_EXTERNALTRIG_T7_TRGO (LL_ADC_REG_TRIG_EXT_TIM7_TRGO) /*!< ADC group regular conversion
@@ -809,18 +819,43 @@ typedef void (*pADC_CallbackTypeDef)(ADC_HandleTypeDef *hadc); /*!< pointer to
809819#define ADC_CHANNEL_18 (LL_ADC_CHANNEL_18) /*!< External channel (GPIO pin) ADCx_IN18 */
810820#define ADC_CHANNEL_19 (LL_ADC_CHANNEL_19) /*!< External channel (GPIO pin) ADCx_IN19 */
811821#define ADC_CHANNEL_VREFINT (LL_ADC_CHANNEL_VREFINT) /*!< Internal channel VrefInt: Internal
812- voltage reference, channel specific to ADC1. */
822+ voltage reference, channel specific to ADC1, ADC3 . */
813823#define ADC_CHANNEL_TEMPSENSOR (LL_ADC_CHANNEL_TEMPSENSOR) /*!< Internal channel Temperature sensor,
814- channel specific to ADC1. */
824+ channel specific to ADC1, ADC3 . */
815825#define ADC_CHANNEL_VBAT (LL_ADC_CHANNEL_VBAT) /*!< Internal channel Vbat/4: Vbat voltage
816826 through a divider ladder of factor 1/4 to have channel voltage always below
817827 Vdda, channel specific to ADC2. */
818828#define ADC_CHANNEL_VDDCORE (LL_ADC_CHANNEL_VDDCORE) /*!< Internal channel Vddcore, channel
819829 specific to ADC2. */
830+ #if defined(ADC3 )
831+ #define ADC_CHANNEL_VBAT_ADC3 (LL_ADC_CHANNEL_VBAT_ADC3) /*!< Internal channel Vbat/4: Vbat voltage
832+ through a divider ladder of factor 1/4 to have channel voltage always below
833+ Vdda, channel specific to ADC3. */
834+ #define ADC_CHANNEL_VDDCORE_ADC3 (LL_ADC_CHANNEL_VDDCORE_ADC3) /*!< Internal channel Vddcore, channel
835+ specific to ADC3. */
836+ #define ADC_CHANNEL_DAC1_CH1 (LL_ADC_CHANNEL_DAC1_CH1) /*!< Internal channel DAC1 channel 1,
837+ channel specific to ADC3 */
838+ #define ADC_CHANNEL_DAC1_CH2 (LL_ADC_CHANNEL_DAC1_CH2) /*!< Internal channel DAC1 channel 2,
839+ channel specific to ADC3 */
840+ #endif /* ADC3 */
820841/**
821842 * @}
822843 */
823844
845+ #if defined(ADC3 )
846+ /** @defgroup ADC_ConversionDataManagement ADC Conversion Data Management
847+ * @{
848+ */
849+ #define ADC_CONVERSIONDATA_DR (0x00000000UL) /*!< Regular Conversion data stored in DR register
850+ only */
851+ #if defined(ADC_CFGR_ADFCFG )
852+ #define ADC_CONVERSIONDATA_MDF (ADC_CFGR_ADFCFG) /*!< MDF (ADF) mode selected */
853+ #endif /* ADC_CFGR_ADFCFG */
854+ /**
855+ * @}
856+ */
857+
858+ #endif /* ADC3*/
824859/** @defgroup ADC_HAL_EC_AWD_NUMBER Analog watchdog - ADC analog watchdog (AWD) number
825860 * @{
826861 */
@@ -1007,6 +1042,22 @@ out-of-window sample to raise flag or interrupt */
10071042 */
10081043/* Macro reserved for internal HAL driver usage, not intended to be used in */
10091044/* code of final user. */
1045+ #if defined(ADC3 )
1046+ /**
1047+ * @brief Verify the ADC data conversion setting.
1048+ * @param DATA : programmed DATA conversion mode.
1049+ * @retval SET (DATA is a valid value) or RESET (DATA is invalid)
1050+ */
1051+ #if defined(ADC_CFGR_ADFCFG )
1052+ #define IS_ADC_CONVERSIONDATAMGT (DATA ) \
1053+ ((((DATA) == ADC_CONVERSIONDATA_DR)) || \
1054+ (((DATA) == ADC_CONVERSIONDATA_MDF)))
1055+ #else
1056+ #define IS_ADC_CONVERSIONDATAMGT (DATA ) \
1057+ (((DATA) == ADC_CONVERSIONDATA_DR))
1058+
1059+ #endif /* ADC_CFGR_ADFCFG */
1060+ #endif /* ADC3*/
10101061
10111062/**
10121063 * @brief Return resolution bits in CFGR register RES[1:0] field.
@@ -1129,7 +1180,7 @@ out-of-window sample to raise flag or interrupt */
11291180 * @param __REGTRIG__ programmed ADC regular conversions external trigger.
11301181 * @retval SET (__REGTRIG__ is a valid value) or RESET (__REGTRIG__ is invalid)
11311182 */
1132- #if defined(TIM8 )
1183+ #if defined(TIM8 ) && !defined( ADC3 )
11331184/* Devices STM32H563/H573xx */
11341185#define IS_ADC_EXTTRIG (__REGTRIG__ ) (((__REGTRIG__) == ADC_EXTERNALTRIG_T1_CC1) || \
11351186 ((__REGTRIG__) == ADC_EXTERNALTRIG_T1_CC2) || \
@@ -1151,6 +1202,29 @@ out-of-window sample to raise flag or interrupt */
11511202 ((__REGTRIG__) == ADC_EXTERNALTRIG_LPTIM1_CH1) || \
11521203 ((__REGTRIG__) == ADC_EXTERNALTRIG_LPTIM2_CH1) || \
11531204 ((__REGTRIG__) == ADC_SOFTWARE_START) )
1205+ #elif defined(ADC3 )
1206+ /* Devices STM32H5Ex/H5Fxxx */
1207+ #define IS_ADC_EXTTRIG (__REGTRIG__ ) (((__REGTRIG__) == ADC_EXTERNALTRIG_T1_CC1) || \
1208+ ((__REGTRIG__) == ADC_EXTERNALTRIG_T1_CC2) || \
1209+ ((__REGTRIG__) == ADC_EXTERNALTRIG_T1_CC3) || \
1210+ ((__REGTRIG__) == ADC_EXTERNALTRIG_T2_CC2) || \
1211+ ((__REGTRIG__) == ADC_EXTERNALTRIG_T3_TRGO) || \
1212+ ((__REGTRIG__) == ADC_EXTERNALTRIG_T4_CC4) || \
1213+ ((__REGTRIG__) == ADC_EXTERNALTRIG_EXT_IT11) || \
1214+ ((__REGTRIG__) == ADC_EXTERNALTRIG_T8_TRGO) || \
1215+ ((__REGTRIG__) == ADC_EXTERNALTRIG_T8_TRGO2) || \
1216+ ((__REGTRIG__) == ADC_EXTERNALTRIG_T1_TRGO) || \
1217+ ((__REGTRIG__) == ADC_EXTERNALTRIG_T1_TRGO2) || \
1218+ ((__REGTRIG__) == ADC_EXTERNALTRIG_T2_TRGO) || \
1219+ ((__REGTRIG__) == ADC_EXTERNALTRIG_T4_TRGO) || \
1220+ ((__REGTRIG__) == ADC_EXTERNALTRIG_T6_TRGO) || \
1221+ ((__REGTRIG__) == ADC_EXTERNALTRIG_T15_TRGO) || \
1222+ ((__REGTRIG__) == ADC_EXTERNALTRIG_T3_CC4) || \
1223+ ((__REGTRIG__) == ADC_EXTERNALTRIG_EXT_IT15) || \
1224+ ((__REGTRIG__) == ADC_EXTERNALTRIG_LPTIM1_CH1) || \
1225+ ((__REGTRIG__) == ADC_EXTERNALTRIG_LPTIM2_CH1) || \
1226+ ((__REGTRIG__) == ADC_EXTERNALTRIG_PLAY_OUT7) || \
1227+ ((__REGTRIG__) == ADC_SOFTWARE_START) )
11541228#else
11551229/* Devices STM32H503xx */
11561230#define IS_ADC_EXTTRIG (__REGTRIG__ ) (((__REGTRIG__) == ADC_EXTERNALTRIG_T1_CC1) || \
0 commit comments