Subversion Repositories ScreenTimer

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. /**
  2.   ******************************************************************************
  3.   * @file    stm32f0xx_hal_adc_ex.h
  4.   * @author  MCD Application Team
  5.   * @brief   Header file of ADC HAL Extension module.
  6.   ******************************************************************************
  7.   * @attention
  8.   *
  9.   * <h2><center>&copy; Copyright (c) 2016 STMicroelectronics.
  10.   * All rights reserved.</center></h2>
  11.   *
  12.   * This software component is licensed by ST under BSD 3-Clause license,
  13.   * the "License"; You may not use this file except in compliance with the
  14.   * License. You may obtain a copy of the License at:
  15.   *                        opensource.org/licenses/BSD-3-Clause
  16.   *
  17.   ******************************************************************************
  18.   */
  19.  
  20. /* Define to prevent recursive inclusion -------------------------------------*/
  21. #ifndef __STM32F0xx_HAL_ADC_EX_H
  22. #define __STM32F0xx_HAL_ADC_EX_H
  23.  
  24. #ifdef __cplusplus
  25.  extern "C" {
  26. #endif
  27.  
  28. /* Includes ------------------------------------------------------------------*/
  29. #include "stm32f0xx_hal_def.h"  
  30.  
  31. /** @addtogroup STM32F0xx_HAL_Driver
  32.   * @{
  33.   */
  34.  
  35. /** @addtogroup ADCEx
  36.   * @{
  37.   */
  38.  
  39. /* Exported types ------------------------------------------------------------*/
  40. /* Exported constants --------------------------------------------------------*/
  41.  
  42. /** @defgroup ADC_Exported_Constants ADC Exported Constants
  43.   * @{
  44.   */
  45.  
  46. #if !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC)
  47. #define ADC_CCR_ALL     (ADC_CCR_VBATEN | ADC_CCR_TSEN | ADC_CCR_VREFEN)
  48. #else
  49. #define ADC_CCR_ALL     (ADC_CCR_TSEN | ADC_CCR_VREFEN)
  50. #endif
  51.  
  52. /** @defgroup ADC_External_trigger_source_Regular ADC External trigger source Regular
  53.   * @{
  54.   */
  55. /* List of external triggers with generic trigger name, sorted by trigger     */
  56. /* name:                                                                      */
  57.  
  58. /* External triggers of regular group for ADC1 */
  59. #define ADC_EXTERNALTRIGCONV_T1_TRGO        ADC1_2_EXTERNALTRIG_T1_TRGO
  60. #define ADC_EXTERNALTRIGCONV_T1_CC4         ADC1_2_EXTERNALTRIG_T1_CC4
  61. #define ADC_EXTERNALTRIGCONV_T3_TRGO        ADC1_2_EXTERNALTRIG_T3_TRGO
  62. #define ADC_SOFTWARE_START                  (ADC_CFGR1_EXTSEL + 1U)
  63.  
  64. #if !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC)
  65. #define ADC_EXTERNALTRIGCONV_T2_TRGO        ADC1_2_EXTERNALTRIG_T2_TRGO
  66. #endif
  67.  
  68. #if !defined(STM32F030x6) && !defined(STM32F070x6) && !defined(STM32F042x6)
  69. #define ADC_EXTERNALTRIGCONV_T15_TRGO       ADC1_2_EXTERNALTRIG_T15_TRGO
  70. #endif
  71.  
  72. /**
  73.   * @}
  74.   */
  75.  
  76.  
  77. /** @defgroup ADC_channels ADC channels
  78.   * @{
  79.   */
  80. /* Note: Depending on devices, some channels may not be available on package  */
  81. /*       pins. Refer to device datasheet for channels availability.           */
  82. /* Note: Channels are used by bitfields for setting of channel selection      */
  83. /*       (register ADC_CHSELR) and used by number for setting of analog       */
  84. /*       watchdog channel (bits AWDCH in register ADC_CFGR1).                 */
  85. /*       Channels are defined with decimal numbers and converted them to      */
  86. /*       bitfields when needed.                                               */
  87. #define ADC_CHANNEL_0           ( 0x00000000U)
  88. #define ADC_CHANNEL_1           ( 0x00000001U)
  89. #define ADC_CHANNEL_2           ( 0x00000002U)
  90. #define ADC_CHANNEL_3           ( 0x00000003U)
  91. #define ADC_CHANNEL_4           ( 0x00000004U)
  92. #define ADC_CHANNEL_5           ( 0x00000005U)
  93. #define ADC_CHANNEL_6           ( 0x00000006U)
  94. #define ADC_CHANNEL_7           ( 0x00000007U)
  95. #define ADC_CHANNEL_8           ( 0x00000008U)
  96. #define ADC_CHANNEL_9           ( 0x00000009U)
  97. #define ADC_CHANNEL_10          ( 0x0000000AU)
  98. #define ADC_CHANNEL_11          ( 0x0000000BU)
  99. #define ADC_CHANNEL_12          ( 0x0000000CU)
  100. #define ADC_CHANNEL_13          ( 0x0000000DU)
  101. #define ADC_CHANNEL_14          ( 0x0000000EU)
  102. #define ADC_CHANNEL_15          ( 0x0000000FU)
  103. #define ADC_CHANNEL_16          ( 0x00000010U)
  104. #define ADC_CHANNEL_17          ( 0x00000011U)
  105.  
  106. #define ADC_CHANNEL_TEMPSENSOR  ADC_CHANNEL_16
  107. #define ADC_CHANNEL_VREFINT     ADC_CHANNEL_17
  108.    
  109. #if !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC)
  110. #define ADC_CHANNEL_18          ( 0x00000012U)
  111. #define ADC_CHANNEL_VBAT        ADC_CHANNEL_18
  112. #endif
  113.    
  114. /**
  115.   * @}
  116.   */
  117.  
  118. /**
  119.   * @}
  120.   */
  121.    
  122. /* Exported macro ------------------------------------------------------------*/
  123.  
  124.  
  125. /* Private macros ------------------------------------------------------------*/
  126.  
  127. /** @defgroup ADCEx_Private_Macros ADCEx Private Macros
  128.   * @{
  129.   */
  130. /* Macro reserved for internal HAL driver usage, not intended to be used in   */
  131. /* code of final user.                                                        */
  132.  
  133. /**
  134.   * @brief Test if the selected ADC channel is an internal channel
  135.   *        VrefInt/TempSensor/Vbat
  136.   *        Note: On STM32F0, availability of internal channel Vbat depends on
  137.   *              devices lines.
  138.   * @param __CHANNEL__ ADC channel
  139.   * @retval None
  140.   */
  141. #if !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC)
  142. #define ADC_IS_CHANNEL_INTERNAL(__CHANNEL__)                                   \
  143.  (((__CHANNEL__) == ADC_CHANNEL_TEMPSENSOR) ||                                 \
  144.   ((__CHANNEL__) == ADC_CHANNEL_VREFINT)    ||                                 \
  145.   ((__CHANNEL__) == ADC_CHANNEL_VBAT)                                          \
  146.  )
  147. #else
  148. #define ADC_IS_CHANNEL_INTERNAL(__CHANNEL__)                                   \
  149.  (((__CHANNEL__) == ADC_CHANNEL_TEMPSENSOR) ||                                 \
  150.   ((__CHANNEL__) == ADC_CHANNEL_VREFINT)                                       \
  151.  )
  152. #endif
  153.    
  154. /**
  155.   * @brief Select the internal measurement path to be enabled/disabled
  156.   *        corresponding to the selected ADC internal channel
  157.   *        VrefInt/TempSensor/Vbat.
  158.   *        Note: On STM32F0, availability of internal channel Vbat depends on
  159.   *              devices lines.
  160.   * @param __CHANNEL__ ADC channel
  161.   * @retval Bit of register ADC_CCR
  162.   */
  163. #if !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC)
  164. #define ADC_CHANNEL_INTERNAL_PATH(__CHANNEL__)                                 \
  165.  (( (__CHANNEL__) == ADC_CHANNEL_TEMPSENSOR                                    \
  166.   )?                                                                           \
  167.    (ADC_CCR_TSEN)                                                              \
  168.    :                                                                           \
  169.    (                                                                           \
  170.      ( (__CHANNEL__) == ADC_CHANNEL_VREFINT                                    \
  171.      )?                                                                        \
  172.       (ADC_CCR_VREFEN)                                                         \
  173.       :                                                                        \
  174.       (ADC_CCR_VBATEN)                                                         \
  175.    )                                                                           \
  176.  )
  177. #else
  178. #define ADC_CHANNEL_INTERNAL_PATH(__CHANNEL__)                                 \
  179.  (( (__CHANNEL__) == ADC_CHANNEL_TEMPSENSOR                                    \
  180.   )?                                                                           \
  181.    (ADC_CCR_TSEN)                                                              \
  182.    :                                                                           \
  183.    (ADC_CCR_VREFEN)                                                            \
  184.  )
  185. #endif
  186.    
  187.    
  188. #if defined (STM32F030x6) || defined (STM32F070x6)
  189. #define IS_ADC_EXTTRIG(REGTRIG) (((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_TRGO)  || \
  190.                                  ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC4)   || \
  191.                                  ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_TRGO)  || \
  192.                                  ((REGTRIG) == ADC_SOFTWARE_START))
  193. #elif defined (STM32F042x6)
  194. #define IS_ADC_EXTTRIG(REGTRIG) (((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_TRGO)  || \
  195.                                  ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC4)   || \
  196.                                  ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_TRGO)  || \
  197.                                  ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_TRGO)  || \
  198.                                  ((REGTRIG) == ADC_SOFTWARE_START))  
  199.  
  200. #elif defined (STM32F030xC) || defined (STM32F070xB) || defined (STM32F030x8)
  201. #define IS_ADC_EXTTRIG(REGTRIG) (((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_TRGO)  || \
  202.                                  ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC4)   || \
  203.                                  ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_TRGO)  || \
  204.                                  ((REGTRIG) == ADC_EXTERNALTRIGCONV_T15_TRGO) || \
  205.                                  ((REGTRIG) == ADC_SOFTWARE_START))
  206. #else
  207. #define IS_ADC_EXTTRIG(REGTRIG) (((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_TRGO)  || \
  208.                                  ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC4)   || \
  209.                                  ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_TRGO)  || \
  210.                                  ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_TRGO)  || \
  211.                                  ((REGTRIG) == ADC_EXTERNALTRIGCONV_T15_TRGO) || \
  212.                                  ((REGTRIG) == ADC_SOFTWARE_START))  
  213. #endif
  214.  
  215. #if !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC)
  216. #define IS_ADC_CHANNEL(CHANNEL) (((CHANNEL) == ADC_CHANNEL_0)           || \
  217.                                  ((CHANNEL) == ADC_CHANNEL_1)           || \
  218.                                  ((CHANNEL) == ADC_CHANNEL_2)           || \
  219.                                  ((CHANNEL) == ADC_CHANNEL_3)           || \
  220.                                  ((CHANNEL) == ADC_CHANNEL_4)           || \
  221.                                  ((CHANNEL) == ADC_CHANNEL_5)           || \
  222.                                  ((CHANNEL) == ADC_CHANNEL_6)           || \
  223.                                  ((CHANNEL) == ADC_CHANNEL_7)           || \
  224.                                  ((CHANNEL) == ADC_CHANNEL_8)           || \
  225.                                  ((CHANNEL) == ADC_CHANNEL_9)           || \
  226.                                  ((CHANNEL) == ADC_CHANNEL_10)          || \
  227.                                  ((CHANNEL) == ADC_CHANNEL_11)          || \
  228.                                  ((CHANNEL) == ADC_CHANNEL_12)          || \
  229.                                  ((CHANNEL) == ADC_CHANNEL_13)          || \
  230.                                  ((CHANNEL) == ADC_CHANNEL_14)          || \
  231.                                  ((CHANNEL) == ADC_CHANNEL_15)          || \
  232.                                  ((CHANNEL) == ADC_CHANNEL_TEMPSENSOR)  || \
  233.                                  ((CHANNEL) == ADC_CHANNEL_VREFINT)     || \
  234.                                  ((CHANNEL) == ADC_CHANNEL_VBAT)          )
  235. #else
  236. #define IS_ADC_CHANNEL(CHANNEL) (((CHANNEL) == ADC_CHANNEL_0)           || \
  237.                                  ((CHANNEL) == ADC_CHANNEL_1)           || \
  238.                                  ((CHANNEL) == ADC_CHANNEL_2)           || \
  239.                                  ((CHANNEL) == ADC_CHANNEL_3)           || \
  240.                                  ((CHANNEL) == ADC_CHANNEL_4)           || \
  241.                                  ((CHANNEL) == ADC_CHANNEL_5)           || \
  242.                                  ((CHANNEL) == ADC_CHANNEL_6)           || \
  243.                                  ((CHANNEL) == ADC_CHANNEL_7)           || \
  244.                                  ((CHANNEL) == ADC_CHANNEL_8)           || \
  245.                                  ((CHANNEL) == ADC_CHANNEL_9)           || \
  246.                                  ((CHANNEL) == ADC_CHANNEL_10)          || \
  247.                                  ((CHANNEL) == ADC_CHANNEL_11)          || \
  248.                                  ((CHANNEL) == ADC_CHANNEL_12)          || \
  249.                                  ((CHANNEL) == ADC_CHANNEL_13)          || \
  250.                                  ((CHANNEL) == ADC_CHANNEL_14)          || \
  251.                                  ((CHANNEL) == ADC_CHANNEL_15)          || \
  252.                                  ((CHANNEL) == ADC_CHANNEL_TEMPSENSOR)  || \
  253.                                  ((CHANNEL) == ADC_CHANNEL_VREFINT)       )
  254. #endif
  255.  
  256. /**
  257.   * @}
  258.   */
  259.  
  260.    
  261. /* Exported functions --------------------------------------------------------*/
  262. /** @addtogroup ADCEx_Exported_Functions
  263.   * @{
  264.   */
  265.  
  266. /* IO operation functions  *****************************************************/
  267. /** @addtogroup ADCEx_Exported_Functions_Group1
  268.   * @{
  269.   */
  270.  
  271. /* ADC calibration */
  272. HAL_StatusTypeDef       HAL_ADCEx_Calibration_Start(ADC_HandleTypeDef* hadc);
  273. /**
  274.   * @}
  275.   */
  276.  
  277.  
  278. /**
  279.   * @}
  280.   */
  281.  
  282.  
  283. /**
  284.   * @}
  285.   */
  286.  
  287. /**
  288.   * @}
  289.   */
  290.    
  291. #ifdef __cplusplus
  292. }
  293. #endif
  294.  
  295. #endif /* __STM32F0xx_HAL_ADC_EX_H */
  296.  
  297.  
  298. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
  299.  
  300.