From d60fd7ca94250774fc9c304a303ac7d1009b0169 Mon Sep 17 00:00:00 2001 From: benjaminlevine Date: Sun, 13 Mar 2016 00:00:36 +0000 Subject: [PATCH] stm32l4: pwr: basic core functionality Only support for voltage range setting. Signed-off-by: Karl Palsson --- include/libopencm3/stm32/l4/pwr.h | 2 +- lib/stm32/l4/Makefile | 2 +- lib/stm32/l4/pwr.c | 55 +++++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 lib/stm32/l4/pwr.c diff --git a/include/libopencm3/stm32/l4/pwr.h b/include/libopencm3/stm32/l4/pwr.h index a3219988..f4d2b911 100644 --- a/include/libopencm3/stm32/l4/pwr.h +++ b/include/libopencm3/stm32/l4/pwr.h @@ -169,7 +169,7 @@ enum pwr_vos_scale { BEGIN_DECLS -/* TODO */ +void pwr_set_vos_scale(enum pwr_vos_scale scale); END_DECLS diff --git a/lib/stm32/l4/Makefile b/lib/stm32/l4/Makefile index f67c6db1..041b335d 100644 --- a/lib/stm32/l4/Makefile +++ b/lib/stm32/l4/Makefile @@ -37,7 +37,7 @@ TGT_CFLAGS += $(DEBUG_FLAGS) ARFLAGS = rcs # Specific objs -OBJS = adc.o +OBJS = adc.o pwr.o # common/shared objs OBJS += rcc_common_all.o diff --git a/lib/stm32/l4/pwr.c b/lib/stm32/l4/pwr.c new file mode 100644 index 00000000..7bfc8361 --- /dev/null +++ b/lib/stm32/l4/pwr.c @@ -0,0 +1,55 @@ +/** @defgroup pwr_file PWR + * + * @ingroup STM32L4xx + * + * @brief libopencm3 STM32L4xx Power Control + * + * @version 1.0.0 + * + * @author @htmlonly © @endhtmlonly 2016 Benjamin Levine + * + * @date 4 March 2013 + * + * This library supports the power control system for the + * STM32L4 series of ARM Cortex Microcontrollers by ST Microelectronics. + * + * LGPL License Terms @ref lgpl_license + */ +/* + * This file is part of the libopencm3 project. + * + * Copyright (C) 2016 Benjamin Levine + * + * This library is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library. If not, see . + */ +/**@{*/ +#include + +void pwr_set_vos_scale(enum pwr_vos_scale scale) +{ + uint32_t reg32; + + reg32 = PWR_CR1; + reg32 &= ~(PWR_CR1_VOS_MASK << PWR_CR1_VOS_SHIFT); + switch (scale) { + case PWR_SCALE1: + reg32 |= (PWR_CR1_VOS_RANGE_1 << PWR_CR1_VOS_SHIFT); + break; + case PWR_SCALE2: + reg32 |= (PWR_CR1_VOS_RANGE_2 << PWR_CR1_VOS_SHIFT); + break; + } + PWR_CR1 = reg32; +} +/**@}*/