diff --git a/os/hal/ports/STM32/LLD/TIMv1/hal_pwm_lld.c b/os/hal/ports/STM32/LLD/TIMv1/hal_pwm_lld.c
index ec36b3dd0..25107fde0 100644
--- a/os/hal/ports/STM32/LLD/TIMv1/hal_pwm_lld.c
+++ b/os/hal/ports/STM32/LLD/TIMv1/hal_pwm_lld.c
@@ -90,6 +90,14 @@ PWMDriver PWMD8;
 PWMDriver PWMD9;
 #endif
 
+/**
+ * @brief   PWMD13 driver identifier.
+ * @note    The driver PWMD13 allocates the timer TIM13 when enabled.
+ */
+#if STM32_PWM_USE_TIM13 || defined(__DOXYGEN__)
+PWMDriver PWMD13;
+#endif
+
 /**
  * @brief   PWMD15 driver identifier.
  * @note    The driver PWMD15 allocates the timer TIM15 when enabled.
@@ -397,6 +405,13 @@ void pwm_lld_init(void) {
   PWMD9.tim = STM32_TIM9;
 #endif
 
+#if STM32_PWM_USE_TIM13
+  /* Driver initialization.*/
+  pwmObjectInit(&PWMD13);
+  PWMD13.channels = STM32_TIM13_CHANNELS;
+  PWMD13.tim = STM32_TIM13;
+#endif
+
 #if STM32_PWM_USE_TIM15
   /* Driver initialization.*/
   pwmObjectInit(&PWMD15);
@@ -541,6 +556,21 @@ void pwm_lld_start(PWMDriver *pwmp) {
     }
 #endif
 
+#if STM32_PWM_USE_TIM13
+    if (&PWMD13 == pwmp) {
+      rccEnableTIM13(true);
+      rccResetTIM13();
+#if !defined(STM32_TIM13_SUPPRESS_ISR)
+      nvicEnableVector(STM32_TIM13_NUMBER, STM32_PWM_TIM13_IRQ_PRIORITY);
+#endif
+#if defined(STM32_TIM13CLK)
+      pwmp->clock = STM32_TIM13CLK;
+#else
+      pwmp->clock = STM32_TIMCLK2;
+#endif
+    }
+#endif
+
 #if STM32_PWM_USE_TIM15
     if (&PWMD15 == pwmp) {
       rccEnableTIM15(true);
@@ -798,6 +828,15 @@ void pwm_lld_stop(PWMDriver *pwmp) {
     }
 #endif
 
+#if STM32_PWM_USE_TIM13
+    if (&PWMD13 == pwmp) {
+#if !defined(STM32_TIM13_SUPPRESS_ISR)
+      nvicDisableVector(STM32_TIM13_NUMBER);
+#endif
+      rccDisableTIM13();
+    }
+#endif
+
 #if STM32_PWM_USE_TIM15
     if (&PWMD15 == pwmp) {
       rccDisableTIM15();
diff --git a/os/hal/ports/STM32/LLD/TIMv1/hal_pwm_lld.h b/os/hal/ports/STM32/LLD/TIMv1/hal_pwm_lld.h
index 63f884ab2..6c719d25f 100644
--- a/os/hal/ports/STM32/LLD/TIMv1/hal_pwm_lld.h
+++ b/os/hal/ports/STM32/LLD/TIMv1/hal_pwm_lld.h
@@ -154,6 +154,15 @@
 #define STM32_PWM_USE_TIM9                  FALSE
 #endif
 
+/**
+ * @brief   PWMD13 driver enable switch.
+ * @details If set to @p TRUE the support for PWMD13 is included.
+ * @note    The default is @p FALSE.
+ */
+#if !defined(STM32_PWM_USE_TIM13) || defined(__DOXYGEN__)
+#define STM32_PWM_USE_TIM13                  FALSE
+#endif
+
 /**
  * @brief   PWMD15 driver enable switch.
  * @details If set to @p TRUE the support for PWMD15 is included.
@@ -230,6 +239,13 @@
 #define STM32_PWM_TIM9_IRQ_PRIORITY         7
 #endif
 
+/**
+ * @brief   PWMD13 interrupt priority level setting.
+ */
+#if !defined(STM32_PWM_TIM13_IRQ_PRIORITY) || defined(__DOXYGEN__)
+#define STM32_PWM_TIM13_IRQ_PRIORITY         7
+#endif
+
 /**
  * @brief   PWMD15 interrupt priority level setting.
  */
@@ -284,6 +300,10 @@
 #define STM32_HAS_TIM9                      FALSE
 #endif
 
+#if !defined(STM32_HAS_TIM13)
+#define STM32_HAS_TIM13                     FALSE
+#endif
+
 #if !defined(STM32_HAS_TIM15)
 #define STM32_HAS_TIM15                     FALSE
 #endif
@@ -324,6 +344,10 @@
 #error "TIM9 not present in the selected device"
 #endif
 
+#if STM32_PWM_USE_TIM13 && !STM32_HAS_TIM13
+#error "TIM13 not present in the selected device"
+#endif
+
 #if STM32_PWM_USE_TIM15 && !STM32_HAS_TIM15
 #error "TIM15 not present in the selected device"
 #endif
@@ -339,8 +363,9 @@
 #if !STM32_PWM_USE_TIM1  && !STM32_PWM_USE_TIM2  &&                         \
     !STM32_PWM_USE_TIM3  && !STM32_PWM_USE_TIM4  &&                         \
     !STM32_PWM_USE_TIM5  && !STM32_PWM_USE_TIM8  &&                         \
-    !STM32_PWM_USE_TIM9  && !STM32_PWM_USE_TIM15 &&                         \
-    !STM32_PWM_USE_TIM16 && !STM32_PWM_USE_TIM17
+    !STM32_PWM_USE_TIM9  && !STM32_PWM_USE_TIM13 &&                         \
+    !STM32_PWM_USE_TIM15 && !STM32_PWM_USE_TIM16 &&                         \
+    !STM32_PWM_USE_TIM17
 #error "PWM driver activated but no TIM peripheral assigned"
 #endif
 
@@ -405,6 +430,14 @@
 #endif
 #endif
 
+#if STM32_PWM_USE_TIM13
+#if defined(STM32_TIM13_IS_USED)
+#error "PWMD13 requires TIM13 but the timer is already used"
+#else
+#define STM32_TIM13_IS_USED
+#endif
+#endif
+
 #if STM32_PWM_USE_TIM15
 #if defined(STM32_TIM15_IS_USED)
 #error "PWMD15 requires TIM15 but the timer is already used"
@@ -465,6 +498,11 @@
 #error "Invalid IRQ priority assigned to TIM9"
 #endif
 
+#if STM32_PWM_USE_TIM13 && !defined(STM32_TIM13_SUPPRESS_ISR) &&              \
+    !OSAL_IRQ_IS_VALID_PRIORITY(STM32_PWM_TIM13_IRQ_PRIORITY)
+#error "Invalid IRQ priority assigned to TIM13"
+#endif
+
 #if STM32_PWM_USE_TIM15 && !defined(STM32_TIM15_SUPPRESS_ISR) &&            \
     !OSAL_IRQ_IS_VALID_PRIORITY(STM32_PWM_TIM15_IRQ_PRIORITY)
 #error "Invalid IRQ priority assigned to TIM15"
@@ -661,6 +699,10 @@ extern PWMDriver PWMD8;
 extern PWMDriver PWMD9;
 #endif
 
+#if STM32_PWM_USE_TIM13 && !defined(__DOXYGEN__)
+extern PWMDriver PWMD13;
+#endif
+
 #if STM32_PWM_USE_TIM15 && !defined(__DOXYGEN__)
 extern PWMDriver PWMD15;
 #endif
