From f8114f2295530ffd49cb1fb22e8588f75c6c9f82 Mon Sep 17 00:00:00 2001 From: Wolfgang Betz Date: Wed, 9 Aug 2017 14:23:44 +0200 Subject: [PATCH] [STM32F401xE] Freeze master timer on stop/breakpoint --- .../TARGET_STM32F4/TARGET_STM32F401xE/device/hal_tick.h | 1 + targets/TARGET_STM/hal_tick_16b.c | 7 +++++++ targets/TARGET_STM/hal_tick_32b.c | 7 +++++++ 3 files changed, 15 insertions(+) diff --git a/targets/TARGET_STM/TARGET_STM32F4/TARGET_STM32F401xE/device/hal_tick.h b/targets/TARGET_STM/TARGET_STM32F4/TARGET_STM32F401xE/device/hal_tick.h index 19d9584eee3..cedecee5453 100644 --- a/targets/TARGET_STM/TARGET_STM32F4/TARGET_STM32F401xE/device/hal_tick.h +++ b/targets/TARGET_STM/TARGET_STM32F4/TARGET_STM32F401xE/device/hal_tick.h @@ -46,6 +46,7 @@ #define TIM_MST TIM5 #define TIM_MST_IRQ TIM5_IRQn #define TIM_MST_RCC __HAL_RCC_TIM5_CLK_ENABLE() +#define TIM_MST_DBGMCU_FREEZE __HAL_DBGMCU_FREEZE_TIM5() #define TIM_MST_RESET_ON __HAL_RCC_TIM5_FORCE_RESET() #define TIM_MST_RESET_OFF __HAL_RCC_TIM5_RELEASE_RESET() diff --git a/targets/TARGET_STM/hal_tick_16b.c b/targets/TARGET_STM/hal_tick_16b.c index 8a2e43f17b1..fadd4e55880 100644 --- a/targets/TARGET_STM/hal_tick_16b.c +++ b/targets/TARGET_STM/hal_tick_16b.c @@ -148,6 +148,13 @@ HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) // Enable timer HAL_TIM_Base_Start(&TimMasterHandle); +#ifndef NDEBUG +#ifdef TIM_MST_DBGMCU_FREEZE + // Freeze timer on stop/breakpoint + TIM_MST_DBGMCU_FREEZE; +#endif +#endif + #if DEBUG_TICK > 0 __HAL_RCC_GPIOB_CLK_ENABLE(); GPIO_InitTypeDef GPIO_InitStruct; diff --git a/targets/TARGET_STM/hal_tick_32b.c b/targets/TARGET_STM/hal_tick_32b.c index 2bcd0b7f3ae..6f1b715473c 100644 --- a/targets/TARGET_STM/hal_tick_32b.c +++ b/targets/TARGET_STM/hal_tick_32b.c @@ -118,6 +118,13 @@ HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) __HAL_TIM_SET_COMPARE(&TimMasterHandle, TIM_CHANNEL_2, PreviousVal + HAL_TICK_DELAY); __HAL_TIM_ENABLE_IT(&TimMasterHandle, TIM_IT_CC2); +#ifndef NDEBUG +#ifdef TIM_MST_DBGMCU_FREEZE + // Freeze timer on stop/breakpoint + TIM_MST_DBGMCU_FREEZE; +#endif +#endif + #if DEBUG_TICK > 0 __HAL_RCC_GPIOB_CLK_ENABLE(); GPIO_InitTypeDef GPIO_InitStruct;