cancel
Showing results for 
Search instead for 
Did you mean: 

SysTick ISR not called under debugger

Lukasz Iwaszkiewicz
Associate II
Posted on December 14, 2016 at 13:39

Hi all.

I noticed that when debugging a STM32F091 MCU my systick ISR never gets called. I Use STMCube library, so HAL_GetTick and HAL_Delay ceases to work as well (because uwTick is not increased). But only when I flash the micro and let it run without the debugger supervision, everything is fine. I observed this on STM32F030, 072 and 091 thus I assume that every F0 works this way. Stm32f4 and F7 works normally under my debugger. I use Ubuntu linux, gcc-6.2.0 (my own build), and I flash and debug with the help of st-flash and st-util (

https://github.com/texane/stlink

). My target board is connected via stm32f0-discovery to the PC, and has no crystal. My code looks this way:

int main (void)
{
 HAL_Init ();
 SystemClock_Config ();
 // ...
}
void SystemClock_Config (void)
{
 RCC_OscInitTypeDef RCC_OscInitStruct;
 RCC_ClkInitTypeDef RCC_ClkInitStruct;
 
 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI14 | RCC_OSCILLATORTYPE_HSE;
 RCC_OscInitStruct.HSEState = RCC_HSE_ON;
 RCC_OscInitStruct.HSI14State = RCC_HSI14_ON;
 RCC_OscInitStruct.HSI14CalibrationValue = 16;
 RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
 RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
 RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL3;
 RCC_OscInitStruct.PLL.PREDIV = RCC_PREDIV_DIV1;
 HAL_RCC_OscConfig (&RCC_OscInitStruct);
 RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1;
 RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
 RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
 RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
 HAL_RCC_ClockConfig (&RCC_ClkInitStruct, FLASH_LATENCY_1);
 HAL_SYSTICK_Config (HAL_RCC_GetHCLKFreq () / 1000);
 HAL_SYSTICK_CLKSourceConfig (SYSTICK_CLKSOURCE_HCLK);
 __SYSCFG_CLK_ENABLE ();
 HAL_NVIC_SetPriority (SysTick_IRQn, 0, 0);
 HAL_NVIC_EnableIRQ (SysTick_IRQn);
}
�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?

PS. I tried to use HSE48 directly (without PLL) but still no luck.

Thanks. #systick
2 REPLIES 2
Posted on December 14, 2016 at 14:10

SYST_CVR changes?

Other interrupts do fire?

JW

Lukasz Iwaszkiewicz
Associate II
Posted on December 14, 2016 at 21:33

Thanks for the reply. I figured out how to solve this. When I start st-util like this:

st-util -n

Interrupts are working OK! '-n' means '--no-reset', and is described as : 'Do not reset board on connection'. I don't know how resetting my target board could turn off the interrupts (I verified, that USART ISR also ceased to work). So this was caused by my environment misconfiguration.