From cfac198fc8b4d82d6ff434fdd1e1cb574cebb6f7 Mon Sep 17 00:00:00 2001 From: Hauke Petersen Date: Sat, 13 Feb 2016 13:05:21 +0100 Subject: [PATCH] cpu/stm32f0: added gpio_init_analog() --- cpu/stm32f0/include/periph_cpu.h | 7 +++++++ cpu/stm32f0/periph/gpio.c | 9 +++++++++ 2 files changed, 16 insertions(+) diff --git a/cpu/stm32f0/include/periph_cpu.h b/cpu/stm32f0/include/periph_cpu.h index 3b9d9a8bf2..50e82c637f 100644 --- a/cpu/stm32f0/include/periph_cpu.h +++ b/cpu/stm32f0/include/periph_cpu.h @@ -87,6 +87,13 @@ typedef enum { */ void gpio_init_af(gpio_t pin, gpio_af_t af); +/** + * @brief Configure the given pin to be used as ADC input + * + * @param[in] pin pin to configure + */ +void gpio_init_analog(gpio_t pin); + #ifdef __cplusplus } #endif diff --git a/cpu/stm32f0/periph/gpio.c b/cpu/stm32f0/periph/gpio.c index 61b63ba21b..d3b9e7b9bc 100644 --- a/cpu/stm32f0/periph/gpio.c +++ b/cpu/stm32f0/periph/gpio.c @@ -140,6 +140,15 @@ void gpio_init_af(gpio_t pin, gpio_af_t af) port->AFR[(pin_num > 7) ? 1 : 0] |= (af << ((pin_num & 0x07) * 4)); } +void gpio_init_analog(gpio_t pin) +{ + /* enable clock, needed as this function can be used without calling + * gpio_init first */ + RCC->AHBENR |= (RCC_AHBENR_GPIOAEN << _port_num(pin)); + /* set to analog mode */ + _port(pin)->MODER |= (0x3 << (2 * _pin_num(pin))); +} + void gpio_irq_enable(gpio_t pin) { EXTI->IMR |= (1 << _pin_num(pin));