Skip to content

Commit 7550c29

Browse files
authored
Update HALConfig.cpp
Added enable_dual_mode and disable_dual_mode to support Dual Mode ADC
1 parent 44f57bd commit 7550c29

File tree

1 file changed

+20
-8
lines changed

1 file changed

+20
-8
lines changed

src/HALConfig.cpp

+20-8
Original file line numberDiff line numberDiff line change
@@ -46,18 +46,18 @@ int hal_tim_config(TIM_HandleTypeDef *tim, uint32_t t_freq) {
4646
sConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_ENABLE;
4747

4848
if (tim->Instance == TIM1) {
49-
__HAL_RCC_TIM1_CLK_ENABLE();
49+
__HAL_RCC_TIM1_CLK_ENABLE();
5050
} else if (tim->Instance == TIM2) {
5151
__HAL_RCC_TIM2_CLK_ENABLE();
52-
} else if (tim->Instance == TIM3) {
52+
} else if (tim->Instance == TIM3) {
5353
__HAL_RCC_TIM3_CLK_ENABLE();
54-
} else if (tim->Instance == TIM4) {
54+
} else if (tim->Instance == TIM4) {
5555
__HAL_RCC_TIM4_CLK_ENABLE();
56-
} else if (tim->Instance == TIM5) {
56+
} else if (tim->Instance == TIM5) {
5757
__HAL_RCC_TIM5_CLK_ENABLE();
58-
} else if (tim->Instance == TIM6) {
58+
} else if (tim->Instance == TIM6) {
5959
__HAL_RCC_TIM6_CLK_ENABLE();
60-
}
60+
}
6161

6262
// Init and config the timer.
6363
__HAL_TIM_CLEAR_FLAG(tim, TIM_FLAG_UPDATE);
@@ -167,10 +167,22 @@ static uint32_t ADC_RANK_LUT[] = {
167167
ADC_REGULAR_RANK_1, ADC_REGULAR_RANK_2, ADC_REGULAR_RANK_3, ADC_REGULAR_RANK_4, ADC_REGULAR_RANK_5
168168
};
169169

170+
int hal_enable_dual_mode()
171+
{
172+
LL_ADC_SetMultimode(__LL_ADC_COMMON_INSTANCE(ADC1), LL_ADC_MULTI_DUAL_REG_SIMULT);
173+
return(1);
174+
}
175+
176+
int hal_disable_dual_mode()
177+
{
178+
LL_ADC_SetMultimode(__LL_ADC_COMMON_INSTANCE(ADC1), LL_ADC_MULTI_INDEPENDENT);
179+
return(1);
180+
}
181+
170182
int hal_adc_config(ADC_HandleTypeDef *adc, uint32_t resolution, uint32_t trigger, PinName *adc_pins, uint32_t n_channels) {
171183
// Set ADC clock source.
172184
__HAL_RCC_ADC_CONFIG(RCC_ADCCLKSOURCE_CLKP);
173-
185+
174186
// Enable ADC clock
175187
if (adc->Instance == ADC1) {
176188
__HAL_RCC_ADC12_CLK_ENABLE();
@@ -206,7 +218,7 @@ int hal_adc_config(ADC_HandleTypeDef *adc, uint32_t resolution, uint32_t trigger
206218
sConfig.OffsetNumber = ADC_OFFSET_NONE;
207219
sConfig.SingleDiff = ADC_SINGLE_ENDED;
208220
sConfig.SamplingTime = ADC_SAMPLETIME_8CYCLES_5;
209-
221+
210222
for (size_t rank=0; rank<n_channels; rank++) {
211223
uint32_t function = pinmap_function(adc_pins[rank], PinMap_ADC);
212224
uint32_t channel = STM_PIN_CHANNEL(function);

0 commit comments

Comments
 (0)