diff --git a/include/libopencm3/stm32/f7/rng.h b/include/libopencm3/stm32/f7/rng.h
new file mode 100644
index 00000000..09d014d1
--- /dev/null
+++ b/include/libopencm3/stm32/f7/rng.h
@@ -0,0 +1,23 @@
+/*
+ * 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 .
+ */
+
+#ifndef LIBOPENCM3_RNG_H
+#define LIBOPENCM3_RNG_H
+
+#include
+
+#endif
diff --git a/include/libopencm3/stm32/l0/rng.h b/include/libopencm3/stm32/l0/rng.h
new file mode 100644
index 00000000..09d014d1
--- /dev/null
+++ b/include/libopencm3/stm32/l0/rng.h
@@ -0,0 +1,23 @@
+/*
+ * 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 .
+ */
+
+#ifndef LIBOPENCM3_RNG_H
+#define LIBOPENCM3_RNG_H
+
+#include
+
+#endif
diff --git a/include/libopencm3/stm32/l4/rng.h b/include/libopencm3/stm32/l4/rng.h
new file mode 100644
index 00000000..09d014d1
--- /dev/null
+++ b/include/libopencm3/stm32/l4/rng.h
@@ -0,0 +1,23 @@
+/*
+ * 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 .
+ */
+
+#ifndef LIBOPENCM3_RNG_H
+#define LIBOPENCM3_RNG_H
+
+#include
+
+#endif
diff --git a/include/libopencm3/stm32/rng.h b/include/libopencm3/stm32/rng.h
index d29650a0..40687af2 100644
--- a/include/libopencm3/stm32/rng.h
+++ b/include/libopencm3/stm32/rng.h
@@ -24,6 +24,12 @@
# include
#elif defined(STM32F4)
# include
+#elif defined(STM32F7)
+# include
+#elif defined(STM32L0)
+# include
+#elif defined(STM32L4)
+# include
#else
# error "stm32 family not defined."
#endif
diff --git a/lib/stm32/f7/Makefile b/lib/stm32/f7/Makefile
index 3eafd2f7..3145575d 100644
--- a/lib/stm32/f7/Makefile
+++ b/lib/stm32/f7/Makefile
@@ -42,6 +42,8 @@ ARFLAGS = rcs
OBJS = gpio.o gpio_common_all.o gpio_common_f0234.o
+OBJS += rng_common_v1.o
+
VPATH += ../../usb:../:../../cm3:../common
VPATH += ../../ethernet
diff --git a/lib/stm32/l0/Makefile b/lib/stm32/l0/Makefile
index 0129a3f4..c43630af 100644
--- a/lib/stm32/l0/Makefile
+++ b/lib/stm32/l0/Makefile
@@ -43,6 +43,7 @@ OBJS += gpio_common_all.o gpio_common_f0234.o rcc_common_all.o
OBJS += adc_common_v2.o
OBJS += crs_common_all.o
OBJS += exti_common_all.o
+OBJS += rng_common_v1.o
OBJS += usb.o usb_control.o usb_standard.o
OBJS += st_usbfs_core.o st_usbfs_v2.o
diff --git a/lib/stm32/l0/rng.c b/lib/stm32/l0/rng.c
new file mode 100644
index 00000000..cae99c74
--- /dev/null
+++ b/lib/stm32/l0/rng.c
@@ -0,0 +1,31 @@
+/* This file is used for documentation purposes. It does not need
+to be compiled. All source code is in the common area.
+If there is any device specific code required it can be included here,
+in which case this file must be added to the compile list. */
+
+/** @defgroup rng_file RNG
+
+@ingroup STM32L0xx
+
+@brief libopencm3 STM32L0xx RNG
+
+*/
+
+/*
+ * 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
diff --git a/lib/stm32/l4/Makefile b/lib/stm32/l4/Makefile
index ad9e052e..daae491b 100644
--- a/lib/stm32/l4/Makefile
+++ b/lib/stm32/l4/Makefile
@@ -43,6 +43,7 @@ OBJS = adc.o flash.o pwr.o rcc.o
OBJS += rcc_common_all.o
OBJS += gpio_common_all.o gpio_common_f0234.o
OBJS += adc_common_v2.o adc_common_v2_multi.o
+OBJS += rng_common_v1.o
OBJS += timer_common_all.o
VPATH += ../../usb:../:../../cm3:../common