You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
/** * \brief Configure conversion trigger and free run mode. * * \param p_adc Pointer to an ADC instance. * \param trigger Conversion trigger. * \param uc_freerun ADC_MR_FREERUN_ON enables freerun mode, * ADC_MR_FREERUN_OFF disables freerun mode. * */voidadc_configure_trigger(Adc*p_adc, constenumadc_trigger_ttrigger,
uint8_tuc_freerun)
{
//Warning ADC_MR_TRGSEL_Msk does not include ADC_MR_TRGEN.p_adc->ADC_MR &= ~(ADC_MR_TRGEN | ADC_MR_TRGSEL_Msk | ADC_MR_FREERUN); //Clear all bits related to triggers and freerun//Configure FreeRunif(uc_freerun&ADC_MR_FREERUN==ADC_MR_FREERUN_ON) { //FreeRun is enabledp_adc->ADC_MR |= ADC_MR_FREERUN_ON;
//Free Run Mode: Never wait for any trigger//No need to continue and enable hardware triggersreturn;
}
//Configure hardware triggersif(trigger&ADC_MR_TRGEN==ADC_MR_TRGEN_EN) { //Hardware trigger is enabledp_adc->ADC_MR |= (trigger&ADC_MR_TRGSEL_Msk) | ADC_MR_TRGEN_EN; //Set trigger selection bits and enable hardware trigger
}
}
...will not enable frerrun if passed ADC_ML_FREERUN_ON (0x1u<<7). Because == has higher precedence than & The function will enable freerun only when passed 1. It will not enable freerun when passed ADC_MR_FREERUN_ON .
The corrected line can simply be
if(uc_freerun==ADC_MR_FREERUN_ON) ...
Which is probably the desired behavior according to the documentation, but may break existing usage. Alternatively
if(uc_freerun != ADC_MR_FREERUN_OFF) ...
will enable freerun when passing anything other than ADC_FREERUN_OFF.
The text was updated successfully, but these errors were encountered:
in
adc.c
the library code:
...will not enable frerrun if passed
ADC_ML_FREERUN_ON
(0x1u<<7
). Because==
has higher precedence than&
The function will enable freerun only when passed 1. It will not enable freerun when passedADC_MR_FREERUN_ON
.The corrected line can simply be
Which is probably the desired behavior according to the documentation, but may break existing usage. Alternatively
will enable freerun when passing anything other than ADC_FREERUN_OFF.
The text was updated successfully, but these errors were encountered: