stm32f3: adc: Add support for sequence completion flags
The f3 adc has separate bits for end of conversion and end of sequence. Support those fully, with the regular enable/disable irq methods, and the flag checking methods. Discovered in github bug: #493
This commit is contained in:
parent
e65140d0d3
commit
b1e495f51a
@ -888,10 +888,14 @@ void adc_enable_analog_watchdog_on_selected_channel(uint32_t adc,
|
||||
/*void adc_disable_scan_mode(uint32_t adc);*/
|
||||
void adc_enable_eoc_interrupt_injected(uint32_t adc);
|
||||
void adc_disable_eoc_interrupt_injected(uint32_t adc);
|
||||
void adc_enable_eos_interrupt_injected(uint32_t adc);
|
||||
void adc_disable_eos_interrupt_injected(uint32_t adc);
|
||||
void adc_enable_all_awd_interrupt(uint32_t adc);
|
||||
void adc_disable_all_awd_interrupt(uint32_t adc);
|
||||
void adc_enable_eoc_interrupt(uint32_t adc);
|
||||
void adc_disable_eoc_interrupt(uint32_t adc);
|
||||
void adc_enable_eos_interrupt(uint32_t adc);
|
||||
void adc_disable_eos_interrupt(uint32_t adc);
|
||||
void adc_start_conversion_regular(uint32_t adc);
|
||||
void adc_start_conversion_injected(uint32_t adc);
|
||||
void adc_disable_external_trigger_regular(uint32_t adc);
|
||||
@ -910,6 +914,8 @@ void adc_set_regular_sequence(uint32_t adc, uint8_t length, uint8_t channel[]);
|
||||
void adc_set_injected_sequence(uint32_t adc, uint8_t length, uint8_t channel[]);
|
||||
bool adc_eoc(uint32_t adc);
|
||||
bool adc_eoc_injected(uint32_t adc);
|
||||
bool adc_eos(uint32_t adc);
|
||||
bool adc_eos_injected(uint32_t adc);
|
||||
uint32_t adc_read_regular(uint32_t adc);
|
||||
uint32_t adc_read_injected(uint32_t adc, uint8_t reg);
|
||||
void adc_set_injected_offset(uint32_t adc, uint8_t reg, uint32_t offset);
|
||||
|
@ -366,6 +366,31 @@ void adc_disable_eoc_interrupt_injected(uint32_t adc)
|
||||
ADC_IER(adc) &= ~ADC_IER_JEOCIE;
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/** @brief ADC Enable Injected End-Of-Sequence Interrupt
|
||||
*
|
||||
* @param[in] adc Unsigned int32. ADC block register address base @ref
|
||||
* adc_reg_base
|
||||
*/
|
||||
|
||||
void adc_enable_eos_interrupt_injected(uint32_t adc)
|
||||
{
|
||||
ADC_IER(adc) |= ADC_IER_JEOSIE;
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/** @brief ADC Disable Injected End-Of-Sequence Interrupt
|
||||
*
|
||||
* @param[in] adc Unsigned int32. ADC block register address base @ref
|
||||
* adc_reg_base
|
||||
*/
|
||||
|
||||
void adc_disable_eos_interrupt_injected(uint32_t adc)
|
||||
{
|
||||
ADC_IER(adc) &= ~ADC_IER_JEOSIE;
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/** @brief ADC Enable Analog Watchdog Interrupt
|
||||
*
|
||||
@ -418,6 +443,31 @@ void adc_disable_eoc_interrupt(uint32_t adc)
|
||||
ADC_IER(adc) &= ~ADC_IER_EOCIE;
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/** @brief ADC Enable Regular End-Of-Sequence Interrupt
|
||||
*
|
||||
* @param[in] adc Unsigned int32. ADC block register address base @ref
|
||||
* adc_reg_base
|
||||
*/
|
||||
|
||||
void adc_enable_eos_interrupt(uint32_t adc)
|
||||
{
|
||||
ADC_IER(adc) |= ADC_IER_EOSIE;
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/** @brief ADC Disable Regular End-Of-Sequence Interrupt
|
||||
*
|
||||
* @param[in] adc Unsigned int32. ADC block register address base @ref
|
||||
* adc_reg_base
|
||||
*/
|
||||
|
||||
void adc_disable_eos_interrupt(uint32_t adc)
|
||||
{
|
||||
ADC_IER(adc) &= ~ADC_IER_EOSIE;
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/** @brief ADC Software Triggered Conversion on Regular Channels
|
||||
*
|
||||
@ -743,6 +793,37 @@ bool adc_eoc_injected(uint32_t adc)
|
||||
return ADC_ISR(adc) & ADC_ISR_JEOC;
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/** @brief ADC Read the End-of-Sequence Flag for Regular Conversions
|
||||
*
|
||||
* This flag is set after all channels of an regular group have been
|
||||
* converted.
|
||||
*
|
||||
* @param[in] adc Unsigned int32. ADC block register address base
|
||||
* @ref adc_reg_base
|
||||
* @returns bool. End of conversion flag.
|
||||
*/
|
||||
bool adc_eos(uint32_t adc)
|
||||
{
|
||||
return ADC_ISR(adc) & ADC_ISR_EOS;
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/** @brief ADC Read the End-of-Sequence Flag for Injected Conversions
|
||||
*
|
||||
* This flag is set after all channels of an injected group have been
|
||||
* converted.
|
||||
*
|
||||
* @param[in] adc Unsigned int32. ADC block register address base
|
||||
* @ref adc_reg_base
|
||||
* @returns bool. End of conversion flag.
|
||||
*/
|
||||
bool adc_eos_injected(uint32_t adc)
|
||||
{
|
||||
return ADC_ISR(adc) & ADC_ISR_JEOS;
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/** @brief ADC Read from the Regular Conversion Result Register
|
||||
*
|
||||
|
Loading…
x
Reference in New Issue
Block a user