Subversion Repositories LedShow

Rev

Rev 2 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2 Rev 9
Line 238... Line 238...
238
              using function HAL_DMA_Init().
238
              using function HAL_DMA_Init().
239
         (++) Disable the NVIC for DMA
239
         (++) Disable the NVIC for DMA
240
              using function HAL_NVIC_EnableIRQ(DMAx_Channelx_IRQn)
240
              using function HAL_NVIC_EnableIRQ(DMAx_Channelx_IRQn)
241
 
241
 
242
    [..]
242
    [..]
-
 
243
   
-
 
244
    *** Callback registration ***
-
 
245
    =============================================
-
 
246
    [..]
-
 
247
 
-
 
248
     The compilation flag USE_HAL_ADC_REGISTER_CALLBACKS, when set to 1,
-
 
249
     allows the user to configure dynamically the driver callbacks.
-
 
250
     Use Functions @ref HAL_ADC_RegisterCallback()
-
 
251
     to register an interrupt callback.
-
 
252
    [..]
-
 
253
 
-
 
254
     Function @ref HAL_ADC_RegisterCallback() allows to register following callbacks:
-
 
255
       (+) ConvCpltCallback               : ADC conversion complete callback
-
 
256
       (+) ConvHalfCpltCallback           : ADC conversion DMA half-transfer callback
-
 
257
       (+) LevelOutOfWindowCallback       : ADC analog watchdog 1 callback
-
 
258
       (+) ErrorCallback                  : ADC error callback
-
 
259
       (+) InjectedConvCpltCallback       : ADC group injected conversion complete callback
-
 
260
       (+) MspInitCallback                : ADC Msp Init callback
-
 
261
       (+) MspDeInitCallback              : ADC Msp DeInit callback
-
 
262
     This function takes as parameters the HAL peripheral handle, the Callback ID
-
 
263
     and a pointer to the user callback function.
-
 
264
    [..]
-
 
265
 
-
 
266
     Use function @ref HAL_ADC_UnRegisterCallback to reset a callback to the default
-
 
267
     weak function.
-
 
268
    [..]
-
 
269
 
-
 
270
     @ref HAL_ADC_UnRegisterCallback takes as parameters the HAL peripheral handle,
-
 
271
     and the Callback ID.
-
 
272
     This function allows to reset following callbacks:
-
 
273
       (+) ConvCpltCallback               : ADC conversion complete callback
-
 
274
       (+) ConvHalfCpltCallback           : ADC conversion DMA half-transfer callback
-
 
275
       (+) LevelOutOfWindowCallback       : ADC analog watchdog 1 callback
-
 
276
       (+) ErrorCallback                  : ADC error callback
-
 
277
       (+) InjectedConvCpltCallback       : ADC group injected conversion complete callback
-
 
278
       (+) MspInitCallback                : ADC Msp Init callback
-
 
279
       (+) MspDeInitCallback              : ADC Msp DeInit callback
-
 
280
     [..]
-
 
281
 
-
 
282
     By default, after the @ref HAL_ADC_Init() and when the state is @ref HAL_ADC_STATE_RESET
-
 
283
     all callbacks are set to the corresponding weak functions:
-
 
284
     examples @ref HAL_ADC_ConvCpltCallback(), @ref HAL_ADC_ErrorCallback().
-
 
285
     Exception done for MspInit and MspDeInit functions that are
-
 
286
     reset to the legacy weak functions in the @ref HAL_ADC_Init()/ @ref HAL_ADC_DeInit() only when
-
 
287
     these callbacks are null (not registered beforehand).
-
 
288
    [..]
-
 
289
 
-
 
290
     If MspInit or MspDeInit are not null, the @ref HAL_ADC_Init()/ @ref HAL_ADC_DeInit()
-
 
291
     keep and use the user MspInit/MspDeInit callbacks (registered beforehand) whatever the state.
-
 
292
     [..]
-
 
293
 
-
 
294
     Callbacks can be registered/unregistered in @ref HAL_ADC_STATE_READY state only.
-
 
295
     Exception done MspInit/MspDeInit functions that can be registered/unregistered
-
 
296
     in @ref HAL_ADC_STATE_READY or @ref HAL_ADC_STATE_RESET state,
-
 
297
     thus registered (user) MspInit/DeInit callbacks can be used during the Init/DeInit.
-
 
298
    [..]
-
 
299
 
-
 
300
     Then, the user first registers the MspInit/MspDeInit user callbacks
-
 
301
     using @ref HAL_ADC_RegisterCallback() before calling @ref HAL_ADC_DeInit()
-
 
302
     or @ref HAL_ADC_Init() function.
-
 
303
     [..]
-
 
304
 
-
 
305
     When the compilation flag USE_HAL_ADC_REGISTER_CALLBACKS is set to 0 or
-
 
306
     not defined, the callback registration feature is not available and all callbacks
-
 
307
     are set to the corresponding weak functions.
243
 
308
 
244
    @endverbatim
309
  @endverbatim
245
  ******************************************************************************
310
  ******************************************************************************
246
  * @attention
311
  * @attention
247
  *
312
  *
248
  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
313
  * <h2><center>&copy; Copyright (c) 2016 STMicroelectronics.
249
  *
-
 
250
  * Redistribution and use in source and binary forms, with or without modification,
-
 
251
  * are permitted provided that the following conditions are met:
-
 
252
  *   1. Redistributions of source code must retain the above copyright notice,
-
 
253
  *      this list of conditions and the following disclaimer.
-
 
254
  *   2. Redistributions in binary form must reproduce the above copyright notice,
-
 
255
  *      this list of conditions and the following disclaimer in the documentation
-
 
256
  *      and/or other materials provided with the distribution.
-
 
257
  *   3. Neither the name of STMicroelectronics nor the names of its contributors
-
 
258
  *      may be used to endorse or promote products derived from this software
-
 
259
  *      without specific prior written permission.
314
  * All rights reserved.</center></h2>
260
  *
315
  *
261
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
316
  * This software component is licensed by ST under BSD 3-Clause license,
262
  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-
 
263
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-
 
264
  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-
 
265
  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-
 
266
  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
317
  * the "License"; You may not use this file except in compliance with the
267
  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
318
  * License. You may obtain a copy of the License at:
268
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-
 
269
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-
 
270
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
319
  *                        opensource.org/licenses/BSD-3-Clause
271
  *
320
  *
272
  ******************************************************************************  
321
  ******************************************************************************
273
  */
322
  */
274
 
323
 
275
/* Includes ------------------------------------------------------------------*/
324
/* Includes ------------------------------------------------------------------*/
276
#include "stm32f1xx_hal.h"
325
#include "stm32f1xx_hal.h"
277
 
326
 
Line 412... Line 461...
412
    ADC_CLEAR_ERRORCODE(hadc);
461
    ADC_CLEAR_ERRORCODE(hadc);
413
   
462
   
414
    /* Allocate lock resource and initialize it */
463
    /* Allocate lock resource and initialize it */
415
    hadc->Lock = HAL_UNLOCKED;
464
    hadc->Lock = HAL_UNLOCKED;
416
   
465
   
-
 
466
#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
-
 
467
    /* Init the ADC Callback settings */
-
 
468
    hadc->ConvCpltCallback              = HAL_ADC_ConvCpltCallback;                 /* Legacy weak callback */
-
 
469
    hadc->ConvHalfCpltCallback          = HAL_ADC_ConvHalfCpltCallback;             /* Legacy weak callback */
-
 
470
    hadc->LevelOutOfWindowCallback      = HAL_ADC_LevelOutOfWindowCallback;         /* Legacy weak callback */
-
 
471
    hadc->ErrorCallback                 = HAL_ADC_ErrorCallback;                    /* Legacy weak callback */
-
 
472
    hadc->InjectedConvCpltCallback      = HAL_ADCEx_InjectedConvCpltCallback;       /* Legacy weak callback */
-
 
473
   
-
 
474
    if (hadc->MspInitCallback == NULL)
-
 
475
    {
-
 
476
      hadc->MspInitCallback = HAL_ADC_MspInit; /* Legacy weak MspInit  */
-
 
477
    }
-
 
478
   
-
 
479
    /* Init the low level hardware */
-
 
480
    hadc->MspInitCallback(hadc);
-
 
481
#else
417
    /* Init the low level hardware */
482
    /* Init the low level hardware */
418
    HAL_ADC_MspInit(hadc);
483
    HAL_ADC_MspInit(hadc);
-
 
484
#endif /* USE_HAL_ADC_REGISTER_CALLBACKS */
419
  }
485
  }
420
 
486
 
421
  /* Stop potential conversion on going, on regular and injected groups */
487
  /* Stop potential conversion on going, on regular and injected groups */
422
  /* Disable ADC peripheral */
488
  /* Disable ADC peripheral */
423
  /* Note: In case of ADC already enabled, precaution to not launch an        */
489
  /* Note: In case of ADC already enabled, precaution to not launch an        */
Line 446... Line 512...
446
    /*  - continuous conversion mode                                          */
512
    /*  - continuous conversion mode                                          */
447
    /* Note: External trigger polarity (ADC_CR2_EXTTRIG) is set into          */
513
    /* Note: External trigger polarity (ADC_CR2_EXTTRIG) is set into          */
448
    /*       HAL_ADC_Start_xxx functions because if set in this function,     */
514
    /*       HAL_ADC_Start_xxx functions because if set in this function,     */
449
    /*       a conversion on injected group would start a conversion also on  */
515
    /*       a conversion on injected group would start a conversion also on  */
450
    /*       regular group after ADC enabling.                                */
516
    /*       regular group after ADC enabling.                                */
451
    tmp_cr2 |= (hadc->Init.DataAlign                               |
517
    tmp_cr2 |= (hadc->Init.DataAlign                                          |
452
                ADC_CFGR_EXTSEL(hadc, hadc->Init.ExternalTrigConv) |
518
                ADC_CFGR_EXTSEL(hadc, hadc->Init.ExternalTrigConv)            |
453
                ADC_CR2_CONTINUOUS(hadc->Init.ContinuousConvMode)   );
519
                ADC_CR2_CONTINUOUS((uint32_t)hadc->Init.ContinuousConvMode)   );
454
   
520
 
455
    /* Configuration of ADC:                                                  */
521
    /* Configuration of ADC:                                                  */
456
    /*  - scan mode                                                           */
522
    /*  - scan mode                                                           */
457
    /*  - discontinuous mode disable/enable                                   */
523
    /*  - discontinuous mode disable/enable                                   */
458
    /*  - discontinuous mode number of conversions                            */
524
    /*  - discontinuous mode number of conversions                            */
459
    tmp_cr1 |= (ADC_CR1_SCAN_SET(hadc->Init.ScanConvMode));
525
    tmp_cr1 |= (ADC_CR1_SCAN_SET(hadc->Init.ScanConvMode));
Line 683... Line 749...
683
    /* function "void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)":              */
749
    /* function "void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)":              */
684
    /*                                                                        */
750
    /*                                                                        */
685
    /*  __HAL_RCC_ADC1_FORCE_RESET()                                          */
751
    /*  __HAL_RCC_ADC1_FORCE_RESET()                                          */
686
    /*  __HAL_RCC_ADC1_RELEASE_RESET()                                        */
752
    /*  __HAL_RCC_ADC1_RELEASE_RESET()                                        */
687
   
753
   
-
 
754
#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
-
 
755
    if (hadc->MspDeInitCallback == NULL)
-
 
756
    {
-
 
757
      hadc->MspDeInitCallback = HAL_ADC_MspDeInit; /* Legacy weak MspDeInit  */
-
 
758
    }
-
 
759
   
-
 
760
    /* DeInit the low level hardware */
-
 
761
    hadc->MspDeInitCallback(hadc);
-
 
762
#else
688
    /* DeInit the low level hardware */
763
    /* DeInit the low level hardware */
689
    HAL_ADC_MspDeInit(hadc);
764
    HAL_ADC_MspDeInit(hadc);
-
 
765
#endif /* USE_HAL_ADC_REGISTER_CALLBACKS */
690
   
766
   
691
    /* Set ADC error code to none */
767
    /* Set ADC error code to none */
692
    ADC_CLEAR_ERRORCODE(hadc);
768
    ADC_CLEAR_ERRORCODE(hadc);
693
   
769
   
694
    /* Set ADC state */
770
    /* Set ADC state */
Line 729... Line 805...
729
  /* NOTE : This function should not be modified. When the callback is needed,
805
  /* NOTE : This function should not be modified. When the callback is needed,
730
            function HAL_ADC_MspDeInit must be implemented in the user file.
806
            function HAL_ADC_MspDeInit must be implemented in the user file.
731
   */
807
   */
732
}
808
}
733
 
809
 
-
 
810
#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
-
 
811
/**
-
 
812
  * @brief  Register a User ADC Callback
-
 
813
  *         To be used instead of the weak predefined callback
-
 
814
  * @param  hadc Pointer to a ADC_HandleTypeDef structure that contains
-
 
815
  *                the configuration information for the specified ADC.
-
 
816
  * @param  CallbackID ID of the callback to be registered
-
 
817
  *         This parameter can be one of the following values:
-
 
818
  *          @arg @ref HAL_ADC_CONVERSION_COMPLETE_CB_ID      ADC conversion complete callback ID
-
 
819
  *          @arg @ref HAL_ADC_CONVERSION_HALF_CB_ID          ADC conversion complete callback ID
-
 
820
  *          @arg @ref HAL_ADC_LEVEL_OUT_OF_WINDOW_1_CB_ID    ADC analog watchdog 1 callback ID
-
 
821
  *          @arg @ref HAL_ADC_ERROR_CB_ID                    ADC error callback ID
-
 
822
  *          @arg @ref HAL_ADC_INJ_CONVERSION_COMPLETE_CB_ID  ADC group injected conversion complete callback ID
-
 
823
  *          @arg @ref HAL_ADC_MSPINIT_CB_ID                  ADC Msp Init callback ID
-
 
824
  *          @arg @ref HAL_ADC_MSPDEINIT_CB_ID                ADC Msp DeInit callback ID
-
 
825
  *          @arg @ref HAL_ADC_MSPINIT_CB_ID MspInit callback ID
-
 
826
  *          @arg @ref HAL_ADC_MSPDEINIT_CB_ID MspDeInit callback ID
-
 
827
  * @param  pCallback pointer to the Callback function
-
 
828
  * @retval HAL status
-
 
829
  */
-
 
830
HAL_StatusTypeDef HAL_ADC_RegisterCallback(ADC_HandleTypeDef *hadc, HAL_ADC_CallbackIDTypeDef CallbackID, pADC_CallbackTypeDef pCallback)
-
 
831
{
-
 
832
  HAL_StatusTypeDef status = HAL_OK;
-
 
833
 
-
 
834
  if (pCallback == NULL)
-
 
835
  {
-
 
836
    /* Update the error code */
-
 
837
    hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
-
 
838
 
-
 
839
    return HAL_ERROR;
-
 
840
  }
-
 
841
 
-
 
842
  if ((hadc->State & HAL_ADC_STATE_READY) != 0)
-
 
843
  {
-
 
844
    switch (CallbackID)
-
 
845
    {
-
 
846
      case HAL_ADC_CONVERSION_COMPLETE_CB_ID :
-
 
847
        hadc->ConvCpltCallback = pCallback;
-
 
848
        break;
-
 
849
     
-
 
850
      case HAL_ADC_CONVERSION_HALF_CB_ID :
-
 
851
        hadc->ConvHalfCpltCallback = pCallback;
-
 
852
        break;
-
 
853
     
-
 
854
      case HAL_ADC_LEVEL_OUT_OF_WINDOW_1_CB_ID :
-
 
855
        hadc->LevelOutOfWindowCallback = pCallback;
-
 
856
        break;
-
 
857
     
-
 
858
      case HAL_ADC_ERROR_CB_ID :
-
 
859
        hadc->ErrorCallback = pCallback;
-
 
860
        break;
-
 
861
     
-
 
862
      case HAL_ADC_INJ_CONVERSION_COMPLETE_CB_ID :
-
 
863
        hadc->InjectedConvCpltCallback = pCallback;
-
 
864
        break;
-
 
865
     
-
 
866
      case HAL_ADC_MSPINIT_CB_ID :
-
 
867
        hadc->MspInitCallback = pCallback;
-
 
868
        break;
-
 
869
     
-
 
870
      case HAL_ADC_MSPDEINIT_CB_ID :
-
 
871
        hadc->MspDeInitCallback = pCallback;
-
 
872
        break;
-
 
873
     
-
 
874
      default :
-
 
875
        /* Update the error code */
-
 
876
        hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
-
 
877
 
-
 
878
        /* Return error status */
-
 
879
        status = HAL_ERROR;
-
 
880
        break;
-
 
881
    }
-
 
882
  }
-
 
883
  else if (HAL_ADC_STATE_RESET == hadc->State)
-
 
884
  {
-
 
885
    switch (CallbackID)
-
 
886
    {
-
 
887
      case HAL_ADC_MSPINIT_CB_ID :
-
 
888
        hadc->MspInitCallback = pCallback;
-
 
889
        break;
-
 
890
     
-
 
891
      case HAL_ADC_MSPDEINIT_CB_ID :
-
 
892
        hadc->MspDeInitCallback = pCallback;
-
 
893
        break;
-
 
894
     
-
 
895
      default :
-
 
896
        /* Update the error code */
-
 
897
        hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
-
 
898
     
-
 
899
        /* Return error status */
-
 
900
        status = HAL_ERROR;
-
 
901
        break;
-
 
902
    }
-
 
903
  }
-
 
904
  else
-
 
905
  {
-
 
906
    /* Update the error code */
-
 
907
    hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
-
 
908
   
-
 
909
    /* Return error status */
-
 
910
    status =  HAL_ERROR;
-
 
911
  }
-
 
912
 
-
 
913
  return status;
-
 
914
}
-
 
915
 
-
 
916
/**
-
 
917
  * @brief  Unregister a ADC Callback
-
 
918
  *         ADC callback is redirected to the weak predefined callback
-
 
919
  * @param  hadc Pointer to a ADC_HandleTypeDef structure that contains
-
 
920
  *                the configuration information for the specified ADC.
-
 
921
  * @param  CallbackID ID of the callback to be unregistered
-
 
922
  *         This parameter can be one of the following values:
-
 
923
  *          @arg @ref HAL_ADC_CONVERSION_COMPLETE_CB_ID      ADC conversion complete callback ID
-
 
924
  *          @arg @ref HAL_ADC_CONVERSION_HALF_CB_ID          ADC conversion complete callback ID
-
 
925
  *          @arg @ref HAL_ADC_LEVEL_OUT_OF_WINDOW_1_CB_ID    ADC analog watchdog 1 callback ID
-
 
926
  *          @arg @ref HAL_ADC_ERROR_CB_ID                    ADC error callback ID
-
 
927
  *          @arg @ref HAL_ADC_INJ_CONVERSION_COMPLETE_CB_ID  ADC group injected conversion complete callback ID
-
 
928
  *          @arg @ref HAL_ADC_MSPINIT_CB_ID                  ADC Msp Init callback ID
-
 
929
  *          @arg @ref HAL_ADC_MSPDEINIT_CB_ID                ADC Msp DeInit callback ID
-
 
930
  *          @arg @ref HAL_ADC_MSPINIT_CB_ID MspInit callback ID
-
 
931
  *          @arg @ref HAL_ADC_MSPDEINIT_CB_ID MspDeInit callback ID
-
 
932
  * @retval HAL status
-
 
933
  */
-
 
934
HAL_StatusTypeDef HAL_ADC_UnRegisterCallback(ADC_HandleTypeDef *hadc, HAL_ADC_CallbackIDTypeDef CallbackID)
-
 
935
{
-
 
936
  HAL_StatusTypeDef status = HAL_OK;
-
 
937
 
-
 
938
  if ((hadc->State & HAL_ADC_STATE_READY) != 0)
-
 
939
  {
-
 
940
    switch (CallbackID)
-
 
941
    {
-
 
942
      case HAL_ADC_CONVERSION_COMPLETE_CB_ID :
-
 
943
        hadc->ConvCpltCallback = HAL_ADC_ConvCpltCallback;
-
 
944
        break;
-
 
945
     
-
 
946
      case HAL_ADC_CONVERSION_HALF_CB_ID :
-
 
947
        hadc->ConvHalfCpltCallback = HAL_ADC_ConvHalfCpltCallback;
-
 
948
        break;
-
 
949
     
-
 
950
      case HAL_ADC_LEVEL_OUT_OF_WINDOW_1_CB_ID :
-
 
951
        hadc->LevelOutOfWindowCallback = HAL_ADC_LevelOutOfWindowCallback;
-
 
952
        break;
-
 
953
     
-
 
954
      case HAL_ADC_ERROR_CB_ID :
-
 
955
        hadc->ErrorCallback = HAL_ADC_ErrorCallback;
-
 
956
        break;
-
 
957
     
-
 
958
      case HAL_ADC_INJ_CONVERSION_COMPLETE_CB_ID :
-
 
959
        hadc->InjectedConvCpltCallback = HAL_ADCEx_InjectedConvCpltCallback;
-
 
960
        break;
-
 
961
     
-
 
962
      case HAL_ADC_MSPINIT_CB_ID :
-
 
963
        hadc->MspInitCallback = HAL_ADC_MspInit; /* Legacy weak MspInit              */
-
 
964
        break;
-
 
965
     
-
 
966
      case HAL_ADC_MSPDEINIT_CB_ID :
-
 
967
        hadc->MspDeInitCallback = HAL_ADC_MspDeInit; /* Legacy weak MspDeInit            */
-
 
968
        break;
-
 
969
     
-
 
970
      default :
-
 
971
        /* Update the error code */
-
 
972
        hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
-
 
973
       
-
 
974
        /* Return error status */
-
 
975
        status =  HAL_ERROR;
-
 
976
        break;
-
 
977
    }
-
 
978
  }
-
 
979
  else if (HAL_ADC_STATE_RESET == hadc->State)
-
 
980
  {
-
 
981
    switch (CallbackID)
-
 
982
    {
-
 
983
      case HAL_ADC_MSPINIT_CB_ID :
-
 
984
        hadc->MspInitCallback = HAL_ADC_MspInit;                   /* Legacy weak MspInit              */
-
 
985
        break;
-
 
986
       
-
 
987
      case HAL_ADC_MSPDEINIT_CB_ID :
-
 
988
        hadc->MspDeInitCallback = HAL_ADC_MspDeInit;               /* Legacy weak MspDeInit            */
-
 
989
        break;
-
 
990
       
-
 
991
      default :
-
 
992
        /* Update the error code */
-
 
993
        hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
-
 
994
       
-
 
995
        /* Return error status */
-
 
996
        status =  HAL_ERROR;
-
 
997
        break;
-
 
998
    }
-
 
999
  }
-
 
1000
  else
-
 
1001
  {
-
 
1002
    /* Update the error code */
-
 
1003
    hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
-
 
1004
   
-
 
1005
    /* Return error status */
-
 
1006
    status =  HAL_ERROR;
-
 
1007
  }
-
 
1008
 
-
 
1009
  return status;
-
 
1010
}
-
 
1011
 
-
 
1012
#endif /* USE_HAL_ADC_REGISTER_CALLBACKS */
-
 
1013
 
734
/**
1014
/**
735
  * @}
1015
  * @}
736
  */
1016
  */
737
 
1017
 
738
/** @defgroup ADC_Exported_Functions_Group2 IO operation functions
1018
/** @defgroup ADC_Exported_Functions_Group2 IO operation functions
Line 1429... Line 1709...
1429
    /* Disable ADC DMA mode */
1709
    /* Disable ADC DMA mode */
1430
    CLEAR_BIT(hadc->Instance->CR2, ADC_CR2_DMA);
1710
    CLEAR_BIT(hadc->Instance->CR2, ADC_CR2_DMA);
1431
   
1711
   
1432
    /* Disable the DMA channel (in case of DMA in circular mode or stop while */
1712
    /* Disable the DMA channel (in case of DMA in circular mode or stop while */
1433
    /* DMA transfer is on going)                                              */
1713
    /* DMA transfer is on going)                                              */
1434
    tmp_hal_status = HAL_DMA_Abort(hadc->DMA_Handle);
-
 
1435
   
-
 
1436
    /* Check if DMA channel effectively disabled */
-
 
1437
    if (tmp_hal_status == HAL_OK)
-
 
1438
    {
-
 
1439
      /* Set ADC state */
-
 
1440
      ADC_STATE_CLR_SET(hadc->State,
-
 
1441
                        HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY,
-
 
1442
                        HAL_ADC_STATE_READY);
1714
    if (hadc->DMA_Handle->State == HAL_DMA_STATE_BUSY)
1443
    }
-
 
1444
    else
-
 
1445
    {
1715
    {
-
 
1716
      tmp_hal_status = HAL_DMA_Abort(hadc->DMA_Handle);
-
 
1717
     
-
 
1718
      /* Check if DMA channel effectively disabled */
-
 
1719
      if (tmp_hal_status == HAL_OK)
-
 
1720
      {
-
 
1721
        /* Set ADC state */
-
 
1722
        ADC_STATE_CLR_SET(hadc->State,
-
 
1723
                          HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY,
-
 
1724
                          HAL_ADC_STATE_READY);
-
 
1725
      }
-
 
1726
      else
-
 
1727
      {
1446
      /* Update ADC state machine to error */
1728
        /* Update ADC state machine to error */
1447
      SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_DMA);
1729
        SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_DMA);
-
 
1730
      }
1448
    }
1731
    }
1449
  }
1732
  }
1450
   
1733
 
1451
  /* Process unlocked */
1734
  /* Process unlocked */
1452
  __HAL_UNLOCK(hadc);
1735
  __HAL_UNLOCK(hadc);
1453
   
1736
   
1454
  /* Return function status */
1737
  /* Return function status */
1455
  return tmp_hal_status;
1738
  return tmp_hal_status;
Line 1530... Line 1813...
1530
          SET_BIT(hadc->State, HAL_ADC_STATE_READY);
1813
          SET_BIT(hadc->State, HAL_ADC_STATE_READY);
1531
        }
1814
        }
1532
      }
1815
      }
1533
 
1816
 
1534
      /* Conversion complete callback */
1817
      /* Conversion complete callback */
-
 
1818
#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
-
 
1819
      hadc->ConvCpltCallback(hadc);
-
 
1820
#else
1535
      HAL_ADC_ConvCpltCallback(hadc);
1821
      HAL_ADC_ConvCpltCallback(hadc);
-
 
1822
#endif /* USE_HAL_ADC_REGISTER_CALLBACKS */
1536
     
1823
     
1537
      /* Clear regular group conversion flag */
1824
      /* Clear regular group conversion flag */
1538
      __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_STRT | ADC_FLAG_EOC);
1825
      __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_STRT | ADC_FLAG_EOC);
1539
    }
1826
    }
1540
  }
1827
  }
Line 1574... Line 1861...
1574
          SET_BIT(hadc->State, HAL_ADC_STATE_READY);
1861
          SET_BIT(hadc->State, HAL_ADC_STATE_READY);
1575
        }
1862
        }
1576
      }
1863
      }
1577
 
1864
 
1578
      /* Conversion complete callback */
1865
      /* Conversion complete callback */
-
 
1866
#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
-
 
1867
      hadc->InjectedConvCpltCallback(hadc);
-
 
1868
#else
1579
      HAL_ADCEx_InjectedConvCpltCallback(hadc);
1869
      HAL_ADCEx_InjectedConvCpltCallback(hadc);
-
 
1870
#endif /* USE_HAL_ADC_REGISTER_CALLBACKS */
1580
     
1871
     
1581
      /* Clear injected group conversion flag */
1872
      /* Clear injected group conversion flag */
1582
      __HAL_ADC_CLEAR_FLAG(hadc, (ADC_FLAG_JSTRT | ADC_FLAG_JEOC));
1873
      __HAL_ADC_CLEAR_FLAG(hadc, (ADC_FLAG_JSTRT | ADC_FLAG_JEOC));
1583
    }
1874
    }
1584
  }
1875
  }
Line 1590... Line 1881...
1590
    {
1881
    {
1591
      /* Set ADC state */
1882
      /* Set ADC state */
1592
      SET_BIT(hadc->State, HAL_ADC_STATE_AWD1);
1883
      SET_BIT(hadc->State, HAL_ADC_STATE_AWD1);
1593
     
1884
     
1594
      /* Level out of window callback */
1885
      /* Level out of window callback */
-
 
1886
#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
-
 
1887
      hadc->LevelOutOfWindowCallback(hadc);
-
 
1888
#else
1595
      HAL_ADC_LevelOutOfWindowCallback(hadc);
1889
      HAL_ADC_LevelOutOfWindowCallback(hadc);
-
 
1890
#endif /* USE_HAL_ADC_REGISTER_CALLBACKS */
1596
     
1891
     
1597
      /* Clear the ADC analog watchdog flag */
1892
      /* Clear the ADC analog watchdog flag */
1598
      __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_AWD);
1893
      __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_AWD);
1599
    }
1894
    }
1600
  }
1895
  }
Line 2049... Line 2344...
2049
        SET_BIT(hadc->State, HAL_ADC_STATE_READY);
2344
        SET_BIT(hadc->State, HAL_ADC_STATE_READY);
2050
      }
2345
      }
2051
    }
2346
    }
2052
   
2347
   
2053
    /* Conversion complete callback */
2348
    /* Conversion complete callback */
-
 
2349
#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
-
 
2350
    hadc->ConvCpltCallback(hadc);
-
 
2351
#else
2054
    HAL_ADC_ConvCpltCallback(hadc);
2352
    HAL_ADC_ConvCpltCallback(hadc);
-
 
2353
#endif /* USE_HAL_ADC_REGISTER_CALLBACKS */
2055
  }
2354
  }
2056
  else
2355
  else
2057
  {
2356
  {
2058
    /* Call DMA error callback */
2357
    /* Call DMA error callback */
2059
    hadc->DMA_Handle->XferErrorCallback(hdma);
2358
    hadc->DMA_Handle->XferErrorCallback(hdma);
Line 2069... Line 2368...
2069
{
2368
{
2070
  /* Retrieve ADC handle corresponding to current DMA handle */
2369
  /* Retrieve ADC handle corresponding to current DMA handle */
2071
  ADC_HandleTypeDef* hadc = ( ADC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
2370
  ADC_HandleTypeDef* hadc = ( ADC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
2072
 
2371
 
2073
  /* Half conversion callback */
2372
  /* Half conversion callback */
-
 
2373
#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
-
 
2374
    hadc->ConvHalfCpltCallback(hadc);
-
 
2375
#else
2074
  HAL_ADC_ConvHalfCpltCallback(hadc);
2376
  HAL_ADC_ConvHalfCpltCallback(hadc);
-
 
2377
#endif /* USE_HAL_ADC_REGISTER_CALLBACKS */
2075
}
2378
}
2076
 
2379
 
2077
/**
2380
/**
2078
  * @brief  DMA error callback
2381
  * @brief  DMA error callback
2079
  * @param  hdma: pointer to DMA handle.
2382
  * @param  hdma: pointer to DMA handle.
Line 2089... Line 2392...
2089
 
2392
 
2090
  /* Set ADC error code to DMA error */
2393
  /* Set ADC error code to DMA error */
2091
  SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_DMA);
2394
  SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_DMA);
2092
 
2395
 
2093
  /* Error callback */
2396
  /* Error callback */
-
 
2397
#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
-
 
2398
  hadc->ErrorCallback(hadc);
-
 
2399
#else
2094
  HAL_ADC_ErrorCallback(hadc);
2400
  HAL_ADC_ErrorCallback(hadc);
-
 
2401
#endif /* USE_HAL_ADC_REGISTER_CALLBACKS */
2095
}
2402
}
2096
 
2403
 
2097
/**
2404
/**
2098
  * @}
2405
  * @}
2099
  */
2406
  */