@@ -239,11 +239,21 @@ static uint32_t get_adc_internal_channel(PinName pin)
239
239
{
240
240
uint32_t channel = 0 ;
241
241
switch (pin ) {
242
- #ifdef ADC_CHANNEL_TEMPSENSOR
242
+ #if defined( ADC_CHANNEL_TEMPSENSOR )
243
243
case PADC_TEMP :
244
244
channel = ADC_CHANNEL_TEMPSENSOR ;
245
245
break ;
246
246
#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
247
257
#ifdef ADC_CHANNEL_VREFINT
248
258
case PADC_VREF :
249
259
channel = ADC_CHANNEL_VREFINT ;
@@ -326,18 +336,43 @@ static uint32_t get_dac_channel(PinName pin)
326
336
*/
327
337
void HAL_DAC_MspInit (DAC_HandleTypeDef * hdac )
328
338
{
329
- UNUSED (hdac );
330
-
331
339
/* DAC Periph clock enable */
340
+ if (hdac -> Instance == DAC1 ) {
341
+ #ifdef __HAL_RCC_DAC_CLK_ENABLE
342
+ __HAL_RCC_DAC_CLK_ENABLE ();
343
+ #endif
332
344
#ifdef __HAL_RCC_DAC1_CLK_ENABLE
333
- __HAL_RCC_DAC1_CLK_ENABLE ();
345
+ __HAL_RCC_DAC1_CLK_ENABLE ();
334
346
#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 ();
337
355
#endif
338
356
#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 ();
340
372
#endif
373
+ }
374
+ #endif
375
+
341
376
/* Configure DAC GPIO pins */
342
377
pinmap_pinout (g_current_pin , PinMap_DAC );
343
378
}
@@ -362,7 +397,11 @@ void dac_write_value(PinName pin, uint32_t value, uint8_t do_init)
362
397
return ;
363
398
}
364
399
dacChannel = get_dac_channel (pin );
400
+ #if defined(STM32G4xx )
401
+ if (!IS_DAC_CHANNEL (DacHandle .Instance , dacChannel )) {
402
+ #else
365
403
if (!IS_DAC_CHANNEL (dacChannel )) {
404
+ #endif
366
405
return ;
367
406
}
368
407
if (do_init == 1 ) {
@@ -406,13 +445,83 @@ void dac_write_value(PinName pin, uint32_t value, uint8_t do_init)
406
445
*/
407
446
void HAL_DAC_MspDeInit (DAC_HandleTypeDef * hdac )
408
447
{
409
- UNUSED (hdac );
410
448
/* 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 ();
413
467
#endif
414
468
#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
+ }
416
525
#endif
417
526
}
418
527
@@ -432,7 +541,11 @@ void dac_stop(PinName pin)
432
541
return ;
433
542
}
434
543
dacChannel = get_dac_channel (pin );
544
+ #if defined(STM32G4xx )
545
+ if (!IS_DAC_CHANNEL (DacHandle .Instance , dacChannel )) {
546
+ #else
435
547
if (!IS_DAC_CHANNEL (dacChannel )) {
548
+ #endif
436
549
return ;
437
550
}
438
551
@@ -485,15 +598,29 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef *hadc)
485
598
#endif
486
599
#ifdef __HAL_RCC_ADC34_CLK_ENABLE
487
600
__HAL_RCC_ADC34_CLK_ENABLE ();
601
+ #endif
602
+ #if defined(ADC345_COMMON )
603
+ __HAL_RCC_ADC345_CLK_ENABLE ();
488
604
#endif
489
605
}
490
606
#endif
491
607
#ifdef ADC4
492
608
else if (hadc -> Instance == ADC4 ) {
609
+ #ifdef __HAL_RCC_ADC34_CLK_ENABLE
493
610
__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
494
622
}
495
623
#endif
496
-
497
624
#ifdef __HAL_RCC_ADC_CLK_ENABLE
498
625
__HAL_RCC_ADC_CLK_ENABLE ();
499
626
#endif
@@ -585,14 +712,39 @@ void HAL_ADC_MspDeInit(ADC_HandleTypeDef *hadc)
585
712
#endif
586
713
#ifdef __HAL_RCC_ADC34_CLK_DISABLE
587
714
__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 ();
588
720
#endif
589
721
}
590
722
#endif
591
723
#ifdef ADC4
592
724
else if (hadc -> Instance == ADC4 ) {
725
+ #ifdef __HAL_RCC_ADC34_FORCE_RESET
593
726
__HAL_RCC_ADC34_FORCE_RESET ();
727
+ #endif
728
+ #ifdef __HAL_RCC_ADC34_RELEASE_RESET
594
729
__HAL_RCC_ADC34_RELEASE_RESET ();
730
+ #endif
731
+ #ifdef __HAL_RCC_ADC34_CLK_DISABLE
595
732
__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
596
748
}
597
749
#endif
598
750
#ifdef __HAL_RCC_ADC_CLK_DISABLE
@@ -620,6 +772,11 @@ uint16_t adc_read_value(PinName pin)
620
772
AdcHandle .Instance = ADC3 ;
621
773
#else
622
774
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
623
780
#endif
624
781
channel = get_adc_internal_channel (pin );
625
782
samplingTime = ADC_SAMPLINGTIME_INTERNAL ;
@@ -650,8 +807,8 @@ uint16_t adc_read_value(PinName pin)
650
807
AdcHandle .Init .LowPowerAutoWait = DISABLE ; /* Auto-delayed conversion feature disabled */
651
808
#endif
652
809
#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 )
655
812
AdcHandle .Init .LowPowerAutoPowerOff = DISABLE ; /* ADC automatically powers-off after a conversion and automatically wakes-up when a new conversion is triggered */
656
813
#endif
657
814
#ifdef ADC_CHANNELS_BANK_A
@@ -724,13 +881,13 @@ uint16_t adc_read_value(PinName pin)
724
881
725
882
#if defined(STM32L4xx ) || defined(STM32WBxx )
726
883
if (!IS_ADC_CHANNEL (& AdcHandle , AdcChannelConf .Channel )) {
727
- return 0 ;
728
- }
884
+ #elif defined(STM32G4xx)
885
+ if (! IS_ADC_CHANNEL ( & AdcHandle , AdcChannelConf . Channel )) {
729
886
#else
730
887
if (!IS_ADC_CHANNEL (AdcChannelConf .Channel )) {
888
+ #endif /* STM32L4xx || STM32WBxx */
731
889
return 0 ;
732
890
}
733
- #endif /* STM32L4xx || STM32WBxx */
734
891
AdcChannelConf .Rank = ADC_REGULAR_RANK_1 ; /* Specifies the rank in the regular group sequencer */
735
892
#if !defined(STM32L0xx )
736
893
#if !defined(STM32G0xx )
@@ -763,8 +920,8 @@ uint16_t adc_read_value(PinName pin)
763
920
}
764
921
765
922
#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 )
768
925
/*##-2.1- Calibrate ADC then Start the conversion process ####################*/
769
926
#if defined(STM32F0xx ) || defined(STM32G0xx ) || defined(STM32F1xx ) || \
770
927
defined(STM32F373xC ) || defined(STM32F378xx )
0 commit comments