stm32: adc: Add functions to get and clear flags
This includes adding documentation to the status flags. Originally tracked at: https://github.com/libopencm3/libopencm3/pull/833 Modified to drop whitespace changes, and simply boolean return.
This commit is contained in:
parent
743513a4b1
commit
889b7de0d7
@ -185,12 +185,27 @@ specific memorymap.h header before including this header file.*/
|
|||||||
|
|
||||||
|
|
||||||
/* --- ADC_SR values ------------------------------------------------------- */
|
/* --- ADC_SR values ------------------------------------------------------- */
|
||||||
|
/****************************************************************************/
|
||||||
|
/** @defgroup adc_sr_values ADC Status Register Flags
|
||||||
|
@ingroup STM32xx_adc_defines
|
||||||
|
|
||||||
|
@{*/
|
||||||
|
|
||||||
|
/* STRT:*//** Regular channel Start flag */
|
||||||
#define ADC_SR_STRT (1 << 4)
|
#define ADC_SR_STRT (1 << 4)
|
||||||
|
|
||||||
|
/* JSTRT:*//** Injected channel Start flag */
|
||||||
#define ADC_SR_JSTRT (1 << 3)
|
#define ADC_SR_JSTRT (1 << 3)
|
||||||
|
|
||||||
|
/* JEOC:*//** Injected channel end of conversion */
|
||||||
#define ADC_SR_JEOC (1 << 2)
|
#define ADC_SR_JEOC (1 << 2)
|
||||||
|
|
||||||
|
/* EOC:*//** End of conversion */
|
||||||
#define ADC_SR_EOC (1 << 1)
|
#define ADC_SR_EOC (1 << 1)
|
||||||
|
|
||||||
|
/* AWD:*//** Analog watchdog flag */
|
||||||
#define ADC_SR_AWD (1 << 0)
|
#define ADC_SR_AWD (1 << 0)
|
||||||
|
/**@}*/
|
||||||
|
|
||||||
/* --- ADC_CR1 values ------------------------------------------------------ */
|
/* --- ADC_CR1 values ------------------------------------------------------ */
|
||||||
|
|
||||||
@ -396,6 +411,8 @@ void adc_start_conversion_regular(uint32_t adc);
|
|||||||
void adc_start_conversion_injected(uint32_t adc);
|
void adc_start_conversion_injected(uint32_t adc);
|
||||||
void adc_enable_dma(uint32_t adc);
|
void adc_enable_dma(uint32_t adc);
|
||||||
void adc_disable_dma(uint32_t adc);
|
void adc_disable_dma(uint32_t adc);
|
||||||
|
bool adc_get_flag(uint32_t adc, uint32_t flag);
|
||||||
|
void adc_clear_flag(uint32_t adc, uint32_t flag);
|
||||||
|
|
||||||
/* common methods that have slight differences */
|
/* common methods that have slight differences */
|
||||||
void adc_set_sample_time(uint32_t adc, uint8_t channel, uint8_t time);
|
void adc_set_sample_time(uint32_t adc, uint8_t channel, uint8_t time);
|
||||||
|
@ -96,7 +96,13 @@ LGPL License Terms @ref lgpl_license
|
|||||||
|
|
||||||
/* --- ADC_SR values ------------------------------------------------------- */
|
/* --- ADC_SR values ------------------------------------------------------- */
|
||||||
|
|
||||||
|
/** @defgroup adc_sr_values ADC Status Register Flags
|
||||||
|
* @ingroup adc_defines
|
||||||
|
*@{*/
|
||||||
|
|
||||||
|
/* OVR:*//** Overrun */
|
||||||
#define ADC_SR_OVR (1 << 5)
|
#define ADC_SR_OVR (1 << 5)
|
||||||
|
/**@}*/
|
||||||
|
|
||||||
/* --- ADC_CR1 values specific to STM32F2,4--------------------------------- */
|
/* --- ADC_CR1 values specific to STM32F2,4--------------------------------- */
|
||||||
|
|
||||||
|
@ -100,10 +100,24 @@ LGPL License Terms @ref lgpl_license
|
|||||||
/**@}*/
|
/**@}*/
|
||||||
|
|
||||||
/* --- ADC_SR values ------------------------------------------------------- */
|
/* --- ADC_SR values ------------------------------------------------------- */
|
||||||
|
/****************************************************************************/
|
||||||
|
/** @defgroup adc_sr_values ADC Status Register Flags
|
||||||
|
* @ingroup adc_defines
|
||||||
|
*
|
||||||
|
*@{*/
|
||||||
|
|
||||||
|
/* JCNR:*//** Injected channel not ready */
|
||||||
#define ADC_SR_JCNR (1 << 9)
|
#define ADC_SR_JCNR (1 << 9)
|
||||||
|
|
||||||
|
/* RCNR:*//** Regular channel not ready */
|
||||||
#define ADC_SR_RCNR (1 << 8)
|
#define ADC_SR_RCNR (1 << 8)
|
||||||
|
|
||||||
|
/* ADONS:*//** ADC ON status */
|
||||||
#define ADC_SR_ADONS (1 << 6)
|
#define ADC_SR_ADONS (1 << 6)
|
||||||
|
|
||||||
|
/* OVR:*//** Overrun */
|
||||||
#define ADC_SR_OVR (1 << 5)
|
#define ADC_SR_OVR (1 << 5)
|
||||||
|
/**@}*/
|
||||||
|
|
||||||
/* --- ADC_CR1 values ------------------------------------------------------- */
|
/* --- ADC_CR1 values ------------------------------------------------------- */
|
||||||
#define ADC_CR1_OVRIE (1 << 28)
|
#define ADC_CR1_OVRIE (1 << 28)
|
||||||
|
@ -748,6 +748,32 @@ void adc_disable_dma(uint32_t adc)
|
|||||||
ADC_CR2(adc) &= ~ADC_CR2_DMA;
|
ADC_CR2(adc) &= ~ADC_CR2_DMA;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
/** @brief Read a Status Flag.
|
||||||
|
|
||||||
|
@param[in] adc Unsigned int32. ADC register address base @ref adc_reg_base
|
||||||
|
@param[in] flag Unsigned int32. Status register flag @ref adc_sr_values.
|
||||||
|
@returns boolean: flag set.
|
||||||
|
*/
|
||||||
|
|
||||||
|
bool adc_get_flag(uint32_t adc, uint32_t flag)
|
||||||
|
{
|
||||||
|
return ADC_SR(adc) & flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
/** @brief Clear a Status Flag.
|
||||||
|
|
||||||
|
@param[in] adc Unsigned int32. ADC register address base @ref adc_reg_base
|
||||||
|
@param[in] flag Unsigned int32. Status register flag @ref adc_sr_values.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void adc_clear_flag(uint32_t adc, uint32_t flag)
|
||||||
|
{
|
||||||
|
/* All defined bits are 'r' or 'rc_w0' */
|
||||||
|
ADC_SR(adc) = ~flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
/**@}*/
|
/**@}*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user