diff --git a/include/libopencm3/stm32/common/rng_common_f24.h b/include/libopencm3/stm32/common/rng_common_f24.h
index fc029af6..dd7efa89 100644
--- a/include/libopencm3/stm32/common/rng_common_f24.h
+++ b/include/libopencm3/stm32/common/rng_common_f24.h
@@ -1,3 +1,5 @@
+/** @addtogroup rng_file
+ */
/*
* This file is part of the libopencm3 project.
*
@@ -26,6 +28,8 @@ specific memorymap.h header before including this header file.*/
#ifndef LIBOPENCM3_RNG_COMMON_F24_H
#define LIBOPENCM3_RNG_COMMON_F24_H
+/**@{*/
+
/* --- Random number generator registers ----------------------------------- */
/* Control register */
@@ -62,6 +66,17 @@ specific memorymap.h header before including this header file.*/
/* Seed error interrupt status */
#define RNG_SR_SEIS (1 << 6)
+/* --- Function prototypes ------------------------------------------------- */
+
+BEGIN_DECLS
+
+void rng_enable(void);
+void rng_disable(void);
+
+END_DECLS
+
+/**@}*/
+
#endif
/** @cond */
#else
diff --git a/include/libopencm3/stm32/rng.h b/include/libopencm3/stm32/rng.h
new file mode 100644
index 00000000..5821062c
--- /dev/null
+++ b/include/libopencm3/stm32/rng.h
@@ -0,0 +1,27 @@
+/* This provides unification of code over STM32 subfamilies */
+
+/*
+ * This file is part of the libopencm3 project.
+ *
+ * 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
+#include
+
+#if defined(STM32F4)
+# include
+#else
+# error "stm32 family not defined."
+#endif
diff --git a/lib/stm32/f4/Makefile b/lib/stm32/f4/Makefile
index 5e4c4438..a99413e6 100644
--- a/lib/stm32/f4/Makefile
+++ b/lib/stm32/f4/Makefile
@@ -39,7 +39,7 @@ TGT_CFLAGS += $(DEBUG_FLAGS)
ARFLAGS = rcs
OBJS = adc.o adc_common_v1.o can.o desig.o gpio.o pwr.o rcc.o \
- rtc.o crypto.o
+ rtc.o crypto.o rng.o
OBJS += crc_common_all.o dac_common_all.o dma_common_f24.o \
gpio_common_all.o gpio_common_f0234.o i2c_common_all.o \
diff --git a/lib/stm32/f4/rng.c b/lib/stm32/f4/rng.c
new file mode 100644
index 00000000..2f781760
--- /dev/null
+++ b/lib/stm32/f4/rng.c
@@ -0,0 +1,52 @@
+/** @defgroup rng_file RNG
+ *
+ * @ingroup STM32F4xx
+ *
+ * @brief libopencm3 STM32F4xx RNG
+ *
+ * @version 1.0.0
+ *
+ * @date 25 March 2015
+ *
+ * This library supports the random number generator peripheral (RNG) in the
+ * STM32F4 series of ARM Cortex Microcontrollers by ST Microelectronics.
+ *
+ *LGPL License Terms @ref lgpl_license
+ */
+
+/*
+ * This file is part of the libopencm3 project.
+ *
+ * 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
+
+/**@{*/
+
+/** Disable the Random Number Generator peripheral.
+*/
+void rng_disable(void)
+{
+ RNG_CR &= ~RNG_CR_RNGEN;
+}
+
+/** Enable the Random Number Generator peripheral.
+*/
+void rng_enable(void)
+{
+ RNG_CR |= RNG_CR_RNGEN;
+}
+
+/**@}*/