From 0f49396a0a9dc07a5a733bf1fdee48850cd065a4 Mon Sep 17 00:00:00 2001 From: Laurent MEUNIER Date: Mon, 6 Jun 2016 10:37:54 +0200 Subject: [PATCH] [STM32F4] Add ADC2 support to F4 family Introducing ADC2 support for NUCLEO_F446ZE implies to have the support in the core part for all F4 chipsets that possibly support it (even if not supported on all boards). --- .../TARGET_STM32F4/TARGET_ARCH_MAX/PeripheralNames.h | 1 + .../TARGET_B96B_F446VE/PeripheralNames.h | 1 + .../TARGET_DISCO_F407VG/PeripheralNames.h | 1 + .../TARGET_DISCO_F429ZI/PeripheralNames.h | 1 + .../TARGET_NUCLEO_F446RE/PeripheralNames.h | 1 + .../hal/TARGET_STM/TARGET_STM32F4/analogin_api.c | 10 ++++++++++ 6 files changed, 15 insertions(+) diff --git a/hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_ARCH_MAX/PeripheralNames.h b/hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_ARCH_MAX/PeripheralNames.h index a0073a0f8d..5d22cf38cb 100644 --- a/hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_ARCH_MAX/PeripheralNames.h +++ b/hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_ARCH_MAX/PeripheralNames.h @@ -38,6 +38,7 @@ extern "C" { typedef enum { ADC_1 = (int)ADC1_BASE, + ADC_2 = (int)ADC2_BASE, ADC_3 = (int)ADC3_BASE } ADCName; diff --git a/hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_B96B_F446VE/PeripheralNames.h b/hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_B96B_F446VE/PeripheralNames.h index d0c091eb51..d018a67cea 100644 --- a/hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_B96B_F446VE/PeripheralNames.h +++ b/hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_B96B_F446VE/PeripheralNames.h @@ -38,6 +38,7 @@ extern "C" { typedef enum { ADC_1 = (int)ADC1_BASE, + ADC_2 = (int)ADC2_BASE, ADC_3 = (int)ADC3_BASE } ADCName; diff --git a/hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_DISCO_F407VG/PeripheralNames.h b/hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_DISCO_F407VG/PeripheralNames.h index 6f32141ff9..e25c70514f 100644 --- a/hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_DISCO_F407VG/PeripheralNames.h +++ b/hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_DISCO_F407VG/PeripheralNames.h @@ -38,6 +38,7 @@ extern "C" { typedef enum { ADC_1 = (int)ADC1_BASE, + ADC_2 = (int)ADC2_BASE, ADC_3 = (int)ADC3_BASE } ADCName; diff --git a/hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_DISCO_F429ZI/PeripheralNames.h b/hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_DISCO_F429ZI/PeripheralNames.h index 71ab8eee1f..fb1cdab06b 100644 --- a/hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_DISCO_F429ZI/PeripheralNames.h +++ b/hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_DISCO_F429ZI/PeripheralNames.h @@ -38,6 +38,7 @@ extern "C" { typedef enum { ADC_1 = (int)ADC1_BASE, + ADC_2 = (int)ADC2_BASE, ADC_3 = (int)ADC3_BASE } ADCName; diff --git a/hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_NUCLEO_F446RE/PeripheralNames.h b/hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_NUCLEO_F446RE/PeripheralNames.h index 003fe178aa..46e9b94e28 100644 --- a/hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_NUCLEO_F446RE/PeripheralNames.h +++ b/hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_NUCLEO_F446RE/PeripheralNames.h @@ -38,6 +38,7 @@ extern "C" { typedef enum { ADC_1 = (int)ADC1_BASE, + ADC_2 = (int)ADC2_BASE, ADC_3 = (int)ADC3_BASE } ADCName; diff --git a/hal/targets/hal/TARGET_STM/TARGET_STM32F4/analogin_api.c b/hal/targets/hal/TARGET_STM/TARGET_STM32F4/analogin_api.c index ec2ce6dd7e..8353da8bf2 100644 --- a/hal/targets/hal/TARGET_STM/TARGET_STM32F4/analogin_api.c +++ b/hal/targets/hal/TARGET_STM/TARGET_STM32F4/analogin_api.c @@ -43,6 +43,9 @@ void analogin_init(analogin_t *obj, PinName pin) #if defined(ADC1) static int adc1_inited = 0; #endif +#if defined(ADC2) + static int adc2_inited = 0; +#endif #if defined(ADC3) static int adc3_inited = 0; #endif @@ -70,6 +73,13 @@ void analogin_init(analogin_t *obj, PinName pin) adc1_inited = 1; } #endif +#if defined(ADC2) + if ((obj->adc == ADC_2) && adc2_inited) return; + if (obj->adc == ADC_2) { + __ADC2_CLK_ENABLE(); + adc2_inited = 1; + } +#endif #if defined(ADC3) if ((obj->adc == ADC_3) && adc3_inited) return; if (obj->adc == ADC_3) {