123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017 |
- extern "C" {
-
-
-
- typedef struct
- {
- uint32_t ClockPrescaler;
- uint32_t Resolution;
- uint32_t DataAlign;
- uint32_t ScanConvMode;
- uint32_t EOCSelection;
-
- FunctionalState LowPowerAutoWait;
- FunctionalState LowPowerAutoPowerOff;
- FunctionalState ContinuousConvMode;
- FunctionalState DiscontinuousConvMode;
- uint32_t ExternalTrigConv;
- uint32_t ExternalTrigConvEdge;
- FunctionalState DMAContinuousRequests;
- uint32_t Overrun;
- uint32_t SamplingTimeCommon;
- }ADC_InitTypeDef;
- typedef struct
- {
- uint32_t Channel;
- uint32_t Rank;
- uint32_t SamplingTime;
- }ADC_ChannelConfTypeDef;
- typedef struct
- {
- uint32_t WatchdogMode;
- uint32_t Channel;
- FunctionalState ITMode;
- uint32_t HighThreshold;
- uint32_t LowThreshold;
- }ADC_AnalogWDGConfTypeDef;
- external trigger, low power auto power-on, multimode ADC master control) */
- external trigger, low power auto power-on, multimode ADC master control) */
-
- typedef struct __ADC_HandleTypeDef
- {
- ADC_TypeDef *Instance;
- ADC_InitTypeDef Init;
- DMA_HandleTypeDef *DMA_Handle;
- HAL_LockTypeDef Lock;
- __IO uint32_t State;
- __IO uint32_t ErrorCode;
- void (* ConvCpltCallback)(struct __ADC_HandleTypeDef *hadc);
- void (* ConvHalfCpltCallback)(struct __ADC_HandleTypeDef *hadc);
- void (* LevelOutOfWindowCallback)(struct __ADC_HandleTypeDef *hadc);
- void (* ErrorCallback)(struct __ADC_HandleTypeDef *hadc);
- void (* MspInitCallback)(struct __ADC_HandleTypeDef *hadc);
- void (* MspDeInitCallback)(struct __ADC_HandleTypeDef *hadc);
- }ADC_HandleTypeDef;
- typedef enum
- {
- HAL_ADC_CONVERSION_COMPLETE_CB_ID = 0x00U,
- HAL_ADC_CONVERSION_HALF_CB_ID = 0x01U,
- HAL_ADC_LEVEL_OUT_OF_WINDOW_1_CB_ID = 0x02U,
- HAL_ADC_ERROR_CB_ID = 0x03U,
- HAL_ADC_INJ_CONVERSION_COMPLETE_CB_ID = 0x04U,
- HAL_ADC_MSPINIT_CB_ID = 0x09U,
- HAL_ADC_MSPDEINIT_CB_ID = 0x0AU
- } HAL_ADC_CallbackIDTypeDef;
- typedef void (*pADC_CallbackTypeDef)(ADC_HandleTypeDef *hadc);
-
- enable/disable, erroneous state */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ((__HANDLE__)->Instance->CR |= ADC_CR_ADEN)
- /**
- * @brief Disable the ADC peripheral
- * @param __HANDLE__ ADC handle
- * @retval None
- */
- #define __HAL_ADC_DISABLE(__HANDLE__) \
- do{ \
- (__HANDLE__)->Instance->CR |= ADC_CR_ADDIS; \
- __HAL_ADC_CLEAR_FLAG((__HANDLE__), (ADC_FLAG_EOSMP | ADC_FLAG_RDY)); \
- } while(0)
- (((__HANDLE__)->Instance->IER) |= (__INTERRUPT__))
- /**
- * @brief Disable the ADC end of conversion interrupt.
- * @param __HANDLE__ ADC handle
- * @param __INTERRUPT__ ADC Interrupt
- * This parameter can be any combination of the following values:
- * @arg ADC_IT_EOC: ADC End of Regular Conversion interrupt source
- * @arg ADC_IT_EOS: ADC End of Regular sequence of Conversions interrupt source
- * @arg ADC_IT_AWD: ADC Analog watchdog interrupt source
- * @arg ADC_IT_OVR: ADC overrun interrupt source
- * @arg ADC_IT_EOSMP: ADC End of Sampling interrupt source
- * @arg ADC_IT_RDY: ADC Ready interrupt source
- * @retval None
- */
- #define __HAL_ADC_DISABLE_IT(__HANDLE__, __INTERRUPT__) \
- (((__HANDLE__)->Instance->IER) &= ~(__INTERRUPT__))
- /** @brief Checks if the specified ADC interrupt source is enabled or disabled.
- * @param __HANDLE__ ADC handle
- * @param __INTERRUPT__ ADC interrupt source to check
- * This parameter can be any combination of the following values:
- * @arg ADC_IT_EOC: ADC End of Regular Conversion interrupt source
- * @arg ADC_IT_EOS: ADC End of Regular sequence of Conversions interrupt source
- * @arg ADC_IT_AWD: ADC Analog watchdog interrupt source
- * @arg ADC_IT_OVR: ADC overrun interrupt source
- * @arg ADC_IT_EOSMP: ADC End of Sampling interrupt source
- * @arg ADC_IT_RDY: ADC Ready interrupt source
- * @retval State ofinterruption (SET or RESET)
- */
- #define __HAL_ADC_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) \
- (((__HANDLE__)->Instance->IER & (__INTERRUPT__)) == (__INTERRUPT__))
-
- /**
- * @brief Get the selected ADC's flag status.
- * @param __HANDLE__ ADC handle
- * @param __FLAG__ ADC flag
- * This parameter can be any combination of the following values:
- * @arg ADC_FLAG_EOC: ADC End of Regular conversion flag
- * @arg ADC_FLAG_EOS: ADC End of Regular sequence of Conversions flag
- * @arg ADC_FLAG_AWD: ADC Analog watchdog flag
- * @arg ADC_FLAG_OVR: ADC overrun flag
- * @arg ADC_FLAG_EOSMP: ADC End of Sampling flag
- * @arg ADC_FLAG_RDY: ADC Ready flag
- * @retval None
- */
- #define __HAL_ADC_GET_FLAG(__HANDLE__, __FLAG__) \
- ((((__HANDLE__)->Instance->ISR) & (__FLAG__)) == (__FLAG__))
- /**
- * @brief Clear the ADC's pending flags
- * @param __HANDLE__ ADC handle
- * @param __FLAG__ ADC flag
- * This parameter can be any combination of the following values:
- * @arg ADC_FLAG_EOC: ADC End of Regular conversion flag
- * @arg ADC_FLAG_EOS: ADC End of Regular sequence of Conversions flag
- * @arg ADC_FLAG_AWD: ADC Analog watchdog flag
- * @arg ADC_FLAG_OVR: ADC overrun flag
- * @arg ADC_FLAG_EOSMP: ADC End of Sampling flag
- * @arg ADC_FLAG_RDY: ADC Ready flag
- * @retval None
- */
- /* Note: bit cleared bit by writing 1 (writing 0 has no effect on any bit of register ISR) */
- #define __HAL_ADC_CLEAR_FLAG(__HANDLE__, __FLAG__) \
- (((__HANDLE__)->Instance->ISR) = (__FLAG__))
- /** @brief Reset ADC handle state
- * @param __HANDLE__ ADC handle
- * @retval None
- */
- #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
- #define __HAL_ADC_RESET_HANDLE_STATE(__HANDLE__) \
- do{ \
- (__HANDLE__)->State = HAL_ADC_STATE_RESET; \
- (__HANDLE__)->MspInitCallback = NULL; \
- (__HANDLE__)->MspDeInitCallback = NULL; \
- } while(0)
- ((__HANDLE__)->State = HAL_ADC_STATE_RESET)
- #endif
- /**
- * @}
- */
- /* Private macro -------------------------------------------------------------*/
- /** @defgroup ADC_Private_Macros ADC Private Macros
- * @{
- */
- /* Macro reserved for internal HAL driver usage, not intended to be used in */
- /* code of final user. */
- /**
- * @brief Verification of hardware constraints before ADC can be enabled
- * @param __HANDLE__ ADC handle
- * @retval SET (ADC can be enabled) or RESET (ADC cannot be enabled)
- */
- #define ADC_ENABLING_CONDITIONS(__HANDLE__) \
- (( ( ((__HANDLE__)->Instance->CR) & \
- (ADC_CR_ADCAL | ADC_CR_ADSTP | ADC_CR_ADSTART | ADC_CR_ADDIS | ADC_CR_ADEN) \
- ) == RESET \
- ) ? SET : RESET)
- /**
- * @brief Verification of hardware constraints before ADC can be disabled
- * @param __HANDLE__ ADC handle
- * @retval SET (ADC can be disabled) or RESET (ADC cannot be disabled)
- */
- #define ADC_DISABLING_CONDITIONS(__HANDLE__) \
- (( ( ((__HANDLE__)->Instance->CR) & \
- (ADC_CR_ADSTART | ADC_CR_ADEN)) == ADC_CR_ADEN \
- ) ? SET : RESET)
- /**
- * @brief Verification of ADC state: enabled or disabled
- * @param __HANDLE__ ADC handle
- * @retval SET (ADC enabled) or RESET (ADC disabled)
- */
- /* Note: If low power mode AutoPowerOff is enabled, power-on/off phases are */
- /* performed automatically by hardware and flag ADC_FLAG_RDY is not */
- /* set. */
- #define ADC_IS_ENABLE(__HANDLE__) \
- (( ((((__HANDLE__)->Instance->CR) & (ADC_CR_ADEN | ADC_CR_ADDIS)) == ADC_CR_ADEN) && \
- (((((__HANDLE__)->Instance->ISR) & ADC_FLAG_RDY) == ADC_FLAG_RDY) || \
- ((((__HANDLE__)->Instance->CFGR1) & ADC_CFGR1_AUTOFF) == ADC_CFGR1_AUTOFF) ) \
- ) ? SET : RESET)
- /**
- * @brief Test if conversion trigger of regular group is software start
- * or external trigger.
- * @param __HANDLE__ ADC handle
- * @retval SET (software start) or RESET (external trigger)
- */
- #define ADC_IS_SOFTWARE_START_REGULAR(__HANDLE__) \
- (((__HANDLE__)->Instance->CFGR1 & ADC_CFGR1_EXTEN) == RESET)
- /**
- * @brief Check if no conversion on going on regular group
- * @param __HANDLE__ ADC handle
- * @retval SET (conversion is on going) or RESET (no conversion is on going)
- */
- #define ADC_IS_CONVERSION_ONGOING_REGULAR(__HANDLE__) \
- (( (((__HANDLE__)->Instance->CR) & ADC_CR_ADSTART) == RESET \
- ) ? RESET : SET)
- /**
- * @brief Returns resolution bits in CFGR1 register: RES[1:0].
- * Returned value is among parameters to @ref ADC_Resolution.
- * @param __HANDLE__ ADC handle
- * @retval None
- */
- #define ADC_GET_RESOLUTION(__HANDLE__) \
- (((__HANDLE__)->Instance->CFGR1) & ADC_CFGR1_RES)
- /**
- * @brief Returns ADC sample time bits in SMPR register: SMP[2:0].
- * Returned value is among parameters to @ref ADC_Resolution.
- * @param __HANDLE__ ADC handle
- * @retval None
- */
- #define ADC_GET_SAMPLINGTIME(__HANDLE__) \
- (((__HANDLE__)->Instance->SMPR) & ADC_SMPR_SMP)
- /**
- * @brief Simultaneously clears and sets specific bits of the handle State
- * @note: ADC_STATE_CLR_SET() macro is merely aliased to generic macro MODIFY_REG(),
- * the first parameter is the ADC handle State, the second parameter is the
- * bit field to clear, the third and last parameter is the bit field to set.
- * @retval None
- */
- #define ADC_STATE_CLR_SET MODIFY_REG
- /**
- * @brief Clear ADC error code (set it to error code: "no error")
- * @param __HANDLE__ ADC handle
- * @retval None
- */
- #define ADC_CLEAR_ERRORCODE(__HANDLE__) \
- ((__HANDLE__)->ErrorCode = HAL_ADC_ERROR_NONE)
- /**
- * @brief Configure the channel number into channel selection register
- * @param _CHANNEL_ ADC Channel
- * @retval None
- */
- /* This function converts ADC channels from numbers (see defgroup ADC_channels)
- to bitfields, to get the equivalence of CMSIS channels:
- ADC_CHANNEL_0 ((uint32_t) ADC_CHSELR_CHSEL0)
- ADC_CHANNEL_1 ((uint32_t) ADC_CHSELR_CHSEL1)
- ADC_CHANNEL_2 ((uint32_t) ADC_CHSELR_CHSEL2)
- ADC_CHANNEL_3 ((uint32_t) ADC_CHSELR_CHSEL3)
- ADC_CHANNEL_4 ((uint32_t) ADC_CHSELR_CHSEL4)
- ADC_CHANNEL_5 ((uint32_t) ADC_CHSELR_CHSEL5)
- ADC_CHANNEL_6 ((uint32_t) ADC_CHSELR_CHSEL6)
- ADC_CHANNEL_7 ((uint32_t) ADC_CHSELR_CHSEL7)
- ADC_CHANNEL_8 ((uint32_t) ADC_CHSELR_CHSEL8)
- ADC_CHANNEL_9 ((uint32_t) ADC_CHSELR_CHSEL9)
- ADC_CHANNEL_10 ((uint32_t) ADC_CHSELR_CHSEL10)
- ADC_CHANNEL_11 ((uint32_t) ADC_CHSELR_CHSEL11)
- ADC_CHANNEL_12 ((uint32_t) ADC_CHSELR_CHSEL12)
- ADC_CHANNEL_13 ((uint32_t) ADC_CHSELR_CHSEL13)
- ADC_CHANNEL_14 ((uint32_t) ADC_CHSELR_CHSEL14)
- ADC_CHANNEL_15 ((uint32_t) ADC_CHSELR_CHSEL15)
- ADC_CHANNEL_16 ((uint32_t) ADC_CHSELR_CHSEL16)
- ADC_CHANNEL_17 ((uint32_t) ADC_CHSELR_CHSEL17)
- ADC_CHANNEL_18 ((uint32_t) ADC_CHSELR_CHSEL18)
- */
- #define ADC_CHSELR_CHANNEL(_CHANNEL_) \
- ( 1U << (_CHANNEL_))
- /**
- * @brief Set the ADC's sample time
- * @param _SAMPLETIME_ Sample time parameter.
- * @retval None
- */
- /* Note: ADC sampling time set using mask ADC_SMPR_SMP due to parameter */
- /* "ADC_SAMPLETIME_1CYCLE_5" defined with a dummy bit (bit used to */
- /* distinguish this parameter versus reset value 0x00000000, */
- /* in the context of management of parameters "SamplingTimeCommon" */
- /* and "SamplingTime" (obsolete)). */
- #define ADC_SMPR_SET(_SAMPLETIME_) \
- ((_SAMPLETIME_) & (ADC_SMPR_SMP))
- /**
- * @brief Set the Analog Watchdog 1 channel.
- * @param _CHANNEL_ channel to be monitored by Analog Watchdog 1.
- * @retval None
- */
- #define ADC_CFGR_AWDCH(_CHANNEL_) \
- ((_CHANNEL_) << 26U)
- /**
- * @brief Enable ADC discontinuous conversion mode for regular group
- * @param _REG_DISCONTINUOUS_MODE_ Regular discontinuous mode.
- * @retval None
- */
- #define ADC_CFGR1_REG_DISCCONTINUOUS(_REG_DISCONTINUOUS_MODE_) \
- ((_REG_DISCONTINUOUS_MODE_) << 16U)
-
- /**
- * @brief Enable the ADC auto off mode.
- * @param _AUTOOFF_ Auto off bit enable or disable.
- * @retval None
- */
- #define ADC_CFGR1_AUTOOFF(_AUTOOFF_) \
- ((_AUTOOFF_) << 15U)
-
- /**
- * @brief Enable the ADC auto delay mode.
- * @param _AUTOWAIT_ Auto delay bit enable or disable.
- * @retval None
- */
- #define ADC_CFGR1_AUTOWAIT(_AUTOWAIT_) \
- ((_AUTOWAIT_) << 14U)
- /**
- * @brief Enable ADC continuous conversion mode.
- * @param _CONTINUOUS_MODE_ Continuous mode.
- * @retval None
- */
- #define ADC_CFGR1_CONTINUOUS(_CONTINUOUS_MODE_) \
- ((_CONTINUOUS_MODE_) << 13U)
-
- /**
- * @brief Enable ADC overrun mode.
- * @param _OVERRUN_MODE_ Overrun mode.
- * @retval Overrun bit setting to be programmed into CFGR register
- */
- /* Note: Bit ADC_CFGR1_OVRMOD not used directly in constant */
- /* "ADC_OVR_DATA_OVERWRITTEN" to have this case defined to 0x00, to set it */
- /* as the default case to be compliant with other STM32 devices. */
- #define ADC_CFGR1_OVERRUN(_OVERRUN_MODE_) \
- ( ( (_OVERRUN_MODE_) != (ADC_OVR_DATA_PRESERVED) \
- )? (ADC_CFGR1_OVRMOD) : (0x00000000) \
- )
- /**
- * @brief Enable ADC scan mode to convert multiple ranks with sequencer.
- * @param _SCAN_MODE_ Scan conversion mode.
- * @retval None
- */
- /* Note: Scan mode set using this macro (instead of parameter direct set) */
- /* due to different modes on other STM32 devices: to avoid any */
- /* unwanted setting, the exact parameter corresponding to the device */
- /* must be passed to this macro. */
- #define ADC_SCANDIR(_SCAN_MODE_) \
- ( ( (_SCAN_MODE_) == (ADC_SCAN_DIRECTION_BACKWARD) \
- )? (ADC_CFGR1_SCANDIR) : (0x00000000) \
- )
- /**
- * @brief Enable the ADC DMA continuous request.
- * @param _DMACONTREQ_MODE_ DMA continuous request mode.
- * @retval None
- */
- #define ADC_CFGR1_DMACONTREQ(_DMACONTREQ_MODE_) \
- ((_DMACONTREQ_MODE_) << 1U)
- /**
- * @brief Configure the analog watchdog high threshold into register TR.
- * @param _Threshold_ Threshold value
- * @retval None
- */
- #define ADC_TRX_HIGHTHRESHOLD(_Threshold_) \
- ((_Threshold_) << 16U)
-
- /**
- * @brief Shift the AWD threshold in function of the selected ADC resolution.
- * Thresholds have to be left-aligned on bit 11, the LSB (right bits) are set to 0.
- * If resolution 12 bits, no shift.
- * If resolution 10 bits, shift of 2 ranks on the left.
- * If resolution 8 bits, shift of 4 ranks on the left.
- * If resolution 6 bits, shift of 6 ranks on the left.
- * therefore, shift = (12 - resolution) = 12 - (12- (((RES[1:0]) >> 3)*2))
- * @param __HANDLE__ ADC handle
- * @param _Threshold_ Value to be shifted
- * @retval None
- */
- #define ADC_AWD1THRESHOLD_SHIFT_RESOLUTION(__HANDLE__, _Threshold_) \
- ((_Threshold_) << ((((__HANDLE__)->Instance->CFGR1 & ADC_CFGR1_RES) >> 3U)*2))
-
- #define IS_ADC_CLOCKPRESCALER(ADC_CLOCK) (((ADC_CLOCK) == ADC_CLOCK_ASYNC_DIV1) || \
- ((ADC_CLOCK) == ADC_CLOCK_SYNC_PCLK_DIV2) || \
- ((ADC_CLOCK) == ADC_CLOCK_SYNC_PCLK_DIV4) )
- #define IS_ADC_RESOLUTION(RESOLUTION) (((RESOLUTION) == ADC_RESOLUTION_12B) || \
- ((RESOLUTION) == ADC_RESOLUTION_10B) || \
- ((RESOLUTION) == ADC_RESOLUTION_8B) || \
- ((RESOLUTION) == ADC_RESOLUTION_6B) )
- #define IS_ADC_DATA_ALIGN(ALIGN) (((ALIGN) == ADC_DATAALIGN_RIGHT) || \
- ((ALIGN) == ADC_DATAALIGN_LEFT) )
- #define IS_ADC_SCAN_MODE(SCAN_MODE) (((SCAN_MODE) == ADC_SCAN_DIRECTION_FORWARD) || \
- ((SCAN_MODE) == ADC_SCAN_DIRECTION_BACKWARD) )
- #define IS_ADC_EXTTRIG_EDGE(EDGE) (((EDGE) == ADC_EXTERNALTRIGCONVEDGE_NONE) || \
- ((EDGE) == ADC_EXTERNALTRIGCONVEDGE_RISING) || \
- ((EDGE) == ADC_EXTERNALTRIGCONVEDGE_FALLING) || \
- ((EDGE) == ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING) )
- #define IS_ADC_EOC_SELECTION(EOC_SELECTION) (((EOC_SELECTION) == ADC_EOC_SINGLE_CONV) || \
- ((EOC_SELECTION) == ADC_EOC_SEQ_CONV) )
- #define IS_ADC_OVERRUN(OVR) (((OVR) == ADC_OVR_DATA_PRESERVED) || \
- ((OVR) == ADC_OVR_DATA_OVERWRITTEN) )
- #define IS_ADC_RANK(WATCHDOG) (((WATCHDOG) == ADC_RANK_CHANNEL_NUMBER) || \
- ((WATCHDOG) == ADC_RANK_NONE) )
- #define IS_ADC_SAMPLE_TIME(TIME) (((TIME) == ADC_SAMPLETIME_1CYCLE_5) || \
- ((TIME) == ADC_SAMPLETIME_7CYCLES_5) || \
- ((TIME) == ADC_SAMPLETIME_13CYCLES_5) || \
- ((TIME) == ADC_SAMPLETIME_28CYCLES_5) || \
- ((TIME) == ADC_SAMPLETIME_41CYCLES_5) || \
- ((TIME) == ADC_SAMPLETIME_55CYCLES_5) || \
- ((TIME) == ADC_SAMPLETIME_71CYCLES_5) || \
- ((TIME) == ADC_SAMPLETIME_239CYCLES_5) )
- #define IS_ADC_ANALOG_WATCHDOG_MODE(WATCHDOG) (((WATCHDOG) == ADC_ANALOGWATCHDOG_NONE) || \
- ((WATCHDOG) == ADC_ANALOGWATCHDOG_SINGLE_REG) || \
- ((WATCHDOG) == ADC_ANALOGWATCHDOG_ALL_REG) )
- #define IS_ADC_EVENT_TYPE(EVENT) (((EVENT) == ADC_AWD_EVENT) || \
- ((EVENT) == ADC_OVR_EVENT) )
- /** @defgroup ADC_range_verification ADC range verification
- * in function of ADC resolution selected (12, 10, 8 or 6 bits)
- * @{
- */
- #define IS_ADC_RANGE(RESOLUTION, ADC_VALUE) \
- ((((RESOLUTION) == ADC_RESOLUTION_12B) && ((ADC_VALUE) <= (0x0FFFU))) || \
- (((RESOLUTION) == ADC_RESOLUTION_10B) && ((ADC_VALUE) <= (0x03FFU))) || \
- (((RESOLUTION) == ADC_RESOLUTION_8B) && ((ADC_VALUE) <= (0x00FFU))) || \
- (((RESOLUTION) == ADC_RESOLUTION_6B) && ((ADC_VALUE) <= (0x003FU))) )
- /**
- * @}
- */
- /** @defgroup ADC_regular_rank_verification ADC regular rank verification
- * @{
- */
- #define IS_ADC_REGULAR_RANK(RANK) (((RANK) >= (1U)) && ((RANK) <= (16U)))
- /**
- * @}
- */
- /**
- * @}
- */
- /* Include ADC HAL Extension module */
- #include "stm32f0xx_hal_adc_ex.h"
- /* Exported functions --------------------------------------------------------*/
- /** @addtogroup ADC_Exported_Functions
- * @{
- */
- /** @addtogroup ADC_Exported_Functions_Group1
- * @{
- */
- /* Initialization and de-initialization functions **********************************/
- HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef* hadc);
- HAL_StatusTypeDef HAL_ADC_DeInit(ADC_HandleTypeDef *hadc);
- void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc);
- void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc);
- #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
- /* Callbacks Register/UnRegister functions ***********************************/
- HAL_StatusTypeDef HAL_ADC_RegisterCallback(ADC_HandleTypeDef *hadc, HAL_ADC_CallbackIDTypeDef CallbackID, pADC_CallbackTypeDef pCallback);
- HAL_StatusTypeDef HAL_ADC_UnRegisterCallback(ADC_HandleTypeDef *hadc, HAL_ADC_CallbackIDTypeDef CallbackID);
- #endif /* USE_HAL_ADC_REGISTER_CALLBACKS */
- /**
- * @}
- */
- /* IO operation functions *****************************************************/
- /** @addtogroup ADC_Exported_Functions_Group2
- * @{
- */
- /* Blocking mode: Polling */
- HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef* hadc);
- HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef* hadc);
- HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout);
- HAL_StatusTypeDef HAL_ADC_PollForEvent(ADC_HandleTypeDef* hadc, uint32_t EventType, uint32_t Timeout);
- /* Non-blocking mode: Interruption */
- HAL_StatusTypeDef HAL_ADC_Start_IT(ADC_HandleTypeDef* hadc);
- HAL_StatusTypeDef HAL_ADC_Stop_IT(ADC_HandleTypeDef* hadc);
- /* Non-blocking mode: DMA */
- HAL_StatusTypeDef HAL_ADC_Start_DMA(ADC_HandleTypeDef* hadc, uint32_t* pData, uint32_t Length);
- HAL_StatusTypeDef HAL_ADC_Stop_DMA(ADC_HandleTypeDef* hadc);
- /* ADC retrieve conversion value intended to be used with polling or interruption */
- uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef* hadc);
- /* ADC IRQHandler and Callbacks used in non-blocking modes (Interruption and DMA) */
- void HAL_ADC_IRQHandler(ADC_HandleTypeDef* hadc);
- void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc);
- void HAL_ADC_ConvHalfCpltCallback(ADC_HandleTypeDef* hadc);
- void HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef* hadc);
- void HAL_ADC_ErrorCallback(ADC_HandleTypeDef *hadc);
- /**
- * @}
- */
- /* Peripheral Control functions ***********************************************/
- /** @addtogroup ADC_Exported_Functions_Group3
- * @{
- */
- HAL_StatusTypeDef HAL_ADC_ConfigChannel(ADC_HandleTypeDef* hadc, ADC_ChannelConfTypeDef* sConfig);
- HAL_StatusTypeDef HAL_ADC_AnalogWDGConfig(ADC_HandleTypeDef* hadc, ADC_AnalogWDGConfTypeDef* AnalogWDGConfig);
- /**
- * @}
- */
- /* Peripheral State functions *************************************************/
- /** @addtogroup ADC_Exported_Functions_Group4
- * @{
- */
- uint32_t HAL_ADC_GetState(ADC_HandleTypeDef* hadc);
- uint32_t HAL_ADC_GetError(ADC_HandleTypeDef *hadc);
- /**
- * @}
- */
- /**
- * @}
- */
- /**
- * @}
- */
- /**
- * @}
- */
- #ifdef __cplusplus
- }
- #endif
- #endif /* STM32F0xx_HAL_ADC_H */
|