@@ -239,11 +239,21 @@ static uint32_t get_adc_internal_channel(PinName pin)
239239{
240240 uint32_t channel = 0 ;
241241 switch (pin ) {
242- #ifdef ADC_CHANNEL_TEMPSENSOR
242+ #if defined( ADC_CHANNEL_TEMPSENSOR )
243243 case PADC_TEMP :
244244 channel = ADC_CHANNEL_TEMPSENSOR ;
245245 break ;
246246#endif
247+ #if defined(ADC_CHANNEL_TEMPSENSOR_ADC1 )
248+ case PADC_TEMP :
249+ channel = ADC_CHANNEL_TEMPSENSOR_ADC1 ;
250+ break ;
251+ #endif
252+ #if defined(ADC5 ) && defined(ADC_CHANNEL_TEMPSENSOR_ADC5 )
253+ case PADC_TEMP_ADC5 :
254+ channel = ADC_CHANNEL_TEMPSENSOR_ADC5 ;
255+ break ;
256+ #endif
247257#ifdef ADC_CHANNEL_VREFINT
248258 case PADC_VREF :
249259 channel = ADC_CHANNEL_VREFINT ;
@@ -326,18 +336,43 @@ static uint32_t get_dac_channel(PinName pin)
326336 */
327337void HAL_DAC_MspInit (DAC_HandleTypeDef * hdac )
328338{
329- UNUSED (hdac );
330-
331339 /* DAC Periph clock enable */
340+ if (hdac -> Instance == DAC1 ) {
341+ #ifdef __HAL_RCC_DAC_CLK_ENABLE
342+ __HAL_RCC_DAC_CLK_ENABLE ();
343+ #endif
332344#ifdef __HAL_RCC_DAC1_CLK_ENABLE
333- __HAL_RCC_DAC1_CLK_ENABLE ();
345+ __HAL_RCC_DAC1_CLK_ENABLE ();
334346#endif
335- #ifdef __HAL_RCC_DAC_CLK_ENABLE
336- __HAL_RCC_DAC_CLK_ENABLE ();
347+ #ifdef __HAL_RCC_DAC12_CLK_ENABLE
348+ __HAL_RCC_DAC12_CLK_ENABLE ();
349+ #endif
350+ }
351+ #ifdef DAC2
352+ else if (hdac -> Instance == DAC2 ) {
353+ #ifdef __HAL_RCC_DAC2_CLK_ENABLE
354+ __HAL_RCC_DAC2_CLK_ENABLE ();
337355#endif
338356#ifdef __HAL_RCC_DAC12_CLK_ENABLE
339- __HAL_RCC_DAC12_CLK_ENABLE ();
357+ __HAL_RCC_DAC12_CLK_ENABLE ();
358+ #endif
359+ }
360+ #endif
361+ #ifdef DAC3
362+ else if (hdac -> Instance == DAC3 ) {
363+ #ifdef __HAL_RCC_DAC3_CLK_ENABLE
364+ __HAL_RCC_DAC3_CLK_ENABLE ();
365+ #endif
366+ }
367+ #endif
368+ #ifdef DAC4
369+ else if (hdac -> Instance == DAC4 ) {
370+ #ifdef __HAL_RCC_DAC4_CLK_ENABLE
371+ __HAL_RCC_DAC4_CLK_ENABLE ();
340372#endif
373+ }
374+ #endif
375+
341376 /* Configure DAC GPIO pins */
342377 pinmap_pinout (g_current_pin , PinMap_DAC );
343378}
@@ -362,7 +397,11 @@ void dac_write_value(PinName pin, uint32_t value, uint8_t do_init)
362397 return ;
363398 }
364399 dacChannel = get_dac_channel (pin );
400+ #if defined(STM32G4xx )
401+ if (!IS_DAC_CHANNEL (DacHandle .Instance , dacChannel )) {
402+ #else
365403 if (!IS_DAC_CHANNEL (dacChannel )) {
404+ #endif
366405 return ;
367406 }
368407 if (do_init == 1 ) {
@@ -406,13 +445,83 @@ void dac_write_value(PinName pin, uint32_t value, uint8_t do_init)
406445 */
407446void HAL_DAC_MspDeInit (DAC_HandleTypeDef * hdac )
408447{
409- UNUSED (hdac );
410448 /* DAC Periph clock disable */
411- #ifdef __HAL_RCC_DAC1_CLK_DISABLE
412- __HAL_RCC_DAC1_CLK_DISABLE ();
449+ if (hdac -> Instance == DAC1 ) {
450+ #ifdef __HAL_RCC_DAC_FORCE_RESET
451+ __HAL_RCC_DAC_FORCE_RESET ();
452+ #endif
453+ #ifdef __HAL_RCC_DAC1_FORCE_RESET
454+ __HAL_RCC_DAC1_FORCE_RESET ();
455+ #endif
456+ #ifdef __HAL_RCC_DAC12_FORCE_RESET
457+ __HAL_RCC_DAC12_FORCE_RESET ();
458+ #endif
459+ #ifdef __HAL_RCC_DAC_RELEASE_RESET
460+ __HAL_RCC_DAC_RELEASE_RESET ();
461+ #endif
462+ #ifdef __HAL_RCC_DAC1_RELEASE_RESET
463+ __HAL_RCC_DAC1_RELEASE_RESET ();
464+ #endif
465+ #ifdef __HAL_RCC_DAC12_RELEASE_RESET
466+ __HAL_RCC_DAC12_RELEASE_RESET ();
413467#endif
414468#ifdef __HAL_RCC_DAC_CLK_DISABLE
415- __HAL_RCC_DAC_CLK_DISABLE ();
469+ __HAL_RCC_DAC_CLK_DISABLE ();
470+ #endif
471+ #ifdef __HAL_RCC_DAC1_CLK_DISABLE
472+ __HAL_RCC_DAC1_CLK_DISABLE ();
473+ #endif
474+ #ifdef __HAL_RCC_DAC12_CLK_ENABLE
475+ __HAL_RCC_DAC12_CLK_ENABLE ();
476+ #endif
477+ }
478+ #ifdef DAC2
479+ else if (hdac -> Instance == DAC2 ) {
480+ #ifdef __HAL_RCC_DAC2_FORCE_RESET
481+ __HAL_RCC_DAC2_FORCE_RESET ();
482+ #endif
483+ #ifdef __HAL_RCC_DAC12_FORCE_RESET
484+ __HAL_RCC_DAC12_FORCE_RESET ();
485+ #endif
486+ #ifdef __HAL_RCC_DAC2_RELEASE_RESET
487+ __HAL_RCC_DAC2_RELEASE_RESET ();
488+ #endif
489+ #ifdef __HAL_RCC_DAC12_RELEASE_RESET
490+ __HAL_RCC_DAC12_RELEASE_RESET ();
491+ #endif
492+ #ifdef __HAL_RCC_DAC2_CLK_ENABLE
493+ __HAL_RCC_DAC2_CLK_ENABLE ();
494+ #endif
495+ #ifdef __HAL_RCC_DAC12_CLK_ENABLE
496+ __HAL_RCC_DAC12_CLK_ENABLE ();
497+ #endif
498+ }
499+ #endif
500+ #ifdef DAC3
501+ else if (hdac -> Instance == DAC3 ) {
502+ #ifdef __HAL_RCC_DAC3_FORCE_RESET
503+ __HAL_RCC_DAC3_FORCE_RESET ();
504+ #endif
505+ #ifdef __HAL_RCC_DAC3_RELEASE_RESET
506+ __HAL_RCC_DAC3_RELEASE_RESET ();
507+ #endif
508+ #ifdef __HAL_RCC_DAC3_CLK_DISABLE
509+ __HAL_RCC_DAC3_CLK_DISABLE ();
510+ #endif
511+ }
512+ #endif
513+ #ifdef DAC4
514+ else if (hdac -> Instance == DAC4 ) {
515+ #ifdef __HAL_RCC_DAC4_FORCE_RESET
516+ __HAL_RCC_DAC4_FORCE_RESET ();
517+ #endif
518+ #ifdef __HAL_RCC_DAC4_RELEASE_RESET
519+ __HAL_RCC_DAC4_RELEASE_RESET ();
520+ #endif
521+ #ifdef __HAL_RCC_DAC4_CLK_DISABLE
522+ __HAL_RCC_DAC4_CLK_DISABLE ();
523+ #endif
524+ }
416525#endif
417526}
418527
@@ -432,7 +541,11 @@ void dac_stop(PinName pin)
432541 return ;
433542 }
434543 dacChannel = get_dac_channel (pin );
544+ #if defined(STM32G4xx )
545+ if (!IS_DAC_CHANNEL (DacHandle .Instance , dacChannel )) {
546+ #else
435547 if (!IS_DAC_CHANNEL (dacChannel )) {
548+ #endif
436549 return ;
437550 }
438551
@@ -485,15 +598,29 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef *hadc)
485598#endif
486599#ifdef __HAL_RCC_ADC34_CLK_ENABLE
487600 __HAL_RCC_ADC34_CLK_ENABLE ();
601+ #endif
602+ #if defined(ADC345_COMMON )
603+ __HAL_RCC_ADC345_CLK_ENABLE ();
488604#endif
489605 }
490606#endif
491607#ifdef ADC4
492608 else if (hadc -> Instance == ADC4 ) {
609+ #ifdef __HAL_RCC_ADC34_CLK_ENABLE
493610 __HAL_RCC_ADC34_CLK_ENABLE ();
611+ #endif
612+ #if defined(ADC345_COMMON )
613+ __HAL_RCC_ADC345_CLK_ENABLE ();
614+ #endif
615+ }
616+ #endif
617+ #ifdef ADC5
618+ else if (hadc -> Instance == ADC5 ) {
619+ #if defined(ADC345_COMMON )
620+ __HAL_RCC_ADC345_CLK_ENABLE ();
621+ #endif
494622 }
495623#endif
496-
497624#ifdef __HAL_RCC_ADC_CLK_ENABLE
498625 __HAL_RCC_ADC_CLK_ENABLE ();
499626#endif
@@ -585,14 +712,39 @@ void HAL_ADC_MspDeInit(ADC_HandleTypeDef *hadc)
585712#endif
586713#ifdef __HAL_RCC_ADC34_CLK_DISABLE
587714 __HAL_RCC_ADC34_CLK_DISABLE ();
715+ #endif
716+ #if defined(ADC345_COMMON )
717+ __HAL_RCC_ADC345_FORCE_RESET ();
718+ __HAL_RCC_ADC345_RELEASE_RESET ();
719+ __HAL_RCC_ADC345_CLK_DISABLE ();
588720#endif
589721 }
590722#endif
591723#ifdef ADC4
592724 else if (hadc -> Instance == ADC4 ) {
725+ #ifdef __HAL_RCC_ADC34_FORCE_RESET
593726 __HAL_RCC_ADC34_FORCE_RESET ();
727+ #endif
728+ #ifdef __HAL_RCC_ADC34_RELEASE_RESET
594729 __HAL_RCC_ADC34_RELEASE_RESET ();
730+ #endif
731+ #ifdef __HAL_RCC_ADC34_CLK_DISABLE
595732 __HAL_RCC_ADC34_CLK_DISABLE ();
733+ #endif
734+ #if defined(ADC345_COMMON )
735+ __HAL_RCC_ADC345_FORCE_RESET ();
736+ __HAL_RCC_ADC345_RELEASE_RESET ();
737+ __HAL_RCC_ADC345_CLK_DISABLE ();
738+ #endif
739+ }
740+ #endif
741+ #ifdef ADC5
742+ else if (hadc -> Instance == ADC5 ) {
743+ #if defined(ADC345_COMMON )
744+ __HAL_RCC_ADC345_FORCE_RESET ();
745+ __HAL_RCC_ADC345_RELEASE_RESET ();
746+ __HAL_RCC_ADC345_CLK_DISABLE ();
747+ #endif
596748 }
597749#endif
598750#ifdef __HAL_RCC_ADC_CLK_DISABLE
@@ -620,6 +772,11 @@ uint16_t adc_read_value(PinName pin)
620772 AdcHandle .Instance = ADC3 ;
621773#else
622774 AdcHandle .Instance = ADC1 ;
775+ #if defined(ADC5 ) && defined(ADC_CHANNEL_TEMPSENSOR_ADC5 )
776+ if (pin == PADC_TEMP_ADC5 ) {
777+ AdcHandle .Instance = ADC5 ;
778+ }
779+ #endif
623780#endif
624781 channel = get_adc_internal_channel (pin );
625782 samplingTime = ADC_SAMPLINGTIME_INTERNAL ;
@@ -650,8 +807,8 @@ uint16_t adc_read_value(PinName pin)
650807 AdcHandle .Init .LowPowerAutoWait = DISABLE ; /* Auto-delayed conversion feature disabled */
651808#endif
652809#if !defined(STM32F1xx ) && !defined(STM32F2xx ) && !defined(STM32F3xx ) && \
653- !defined(STM32F4xx ) && !defined(STM32F7xx ) && !defined(STM32H7xx ) && \
654- !defined(STM32L4xx ) && !defined(STM32WBxx )
810+ !defined(STM32F4xx ) && !defined(STM32F7xx ) && !defined(STM32G4xx ) && \
811+ !defined(STM32H7xx ) && !defined( STM32L4xx ) && !defined(STM32WBxx )
655812 AdcHandle .Init .LowPowerAutoPowerOff = DISABLE ; /* ADC automatically powers-off after a conversion and automatically wakes-up when a new conversion is triggered */
656813#endif
657814#ifdef ADC_CHANNELS_BANK_A
@@ -724,13 +881,13 @@ uint16_t adc_read_value(PinName pin)
724881
725882#if defined(STM32L4xx ) || defined(STM32WBxx )
726883 if (!IS_ADC_CHANNEL (& AdcHandle , AdcChannelConf .Channel )) {
727- return 0 ;
728- }
884+ #elif defined(STM32G4xx)
885+ if (! IS_ADC_CHANNEL ( & AdcHandle , AdcChannelConf . Channel )) {
729886#else
730887 if (!IS_ADC_CHANNEL (AdcChannelConf .Channel )) {
888+ #endif /* STM32L4xx || STM32WBxx */
731889 return 0 ;
732890 }
733- #endif /* STM32L4xx || STM32WBxx */
734891 AdcChannelConf .Rank = ADC_REGULAR_RANK_1 ; /* Specifies the rank in the regular group sequencer */
735892#if !defined(STM32L0xx )
736893#if !defined(STM32G0xx )
@@ -763,8 +920,8 @@ uint16_t adc_read_value(PinName pin)
763920 }
764921
765922#if defined(STM32F0xx ) || defined(STM32F1xx ) || defined(STM32F3xx ) || \
766- defined(STM32G0xx ) || defined(STM32H7xx ) || defined(STM32L0xx ) || \
767- defined(STM32L4xx ) || defined(STM32WBxx )
923+ defined(STM32G0xx ) || defined(STM32G4xx ) || defined(STM32H7xx ) || \
924+ defined(STM32L0xx ) || defined( STM32L4xx ) || defined(STM32WBxx )
768925 /*##-2.1- Calibrate ADC then Start the conversion process ####################*/
769926#if defined(STM32F0xx ) || defined(STM32G0xx ) || defined(STM32F1xx ) || \
770927 defined(STM32F373xC ) || defined(STM32F378xx )
0 commit comments