Skip to main content
Javier1
Principal
February 16, 2021
Solved

NVIC_SystemReset() is in reality NVIC_CoreReset()? STM32F105rbT6

  • February 16, 2021
  • 5 replies
  • 5625 views

Hi , i couldnt find any clear solution to this issue:

I need to trigger a software System Reset to enter into stm32´s bootloader.

0693W000008GIrMQAW.png 

  • So far NVIC_SystemReset() only resets the core and i cant use it to enter stm32 bootloader, am i missing something?
NVIC_SystemReset();

  • Reloading the IWDG with the wrong value also triggers a core reset?
WRITE_REG((_hiwg)->Instance->KR, (IWDG_KEY_RELOAD+1));

The only way i´ve been able to generate a System reset has been letting the IWDG counter reach 0 :\

This topic has been closed for replies.
Best answer by Javier1

okay i found it, i was trying to do a HAL_Delay(); inside one interruptionjust before the NVIC_SystemReset();

that was jamming my core because inside interruptions there is no systick going on.

NVIC_SystemReset(); does trigger a system reset now and it always had .

5 replies

KnarfB
Super User
February 16, 2021

Please tell us what your MCU / series is.

Javier1
Javier1Author
Principal
February 16, 2021

of course : STM32F105rbT6

hit me up in https://www.linkedin.com/in/javiermuñoz/
KnarfB
Super User
February 17, 2021

Don't have a F1 device on my bench. But

> NVIC_SystemReset() only resets the core

How did you find out?

If you can check that a low pulse on NRST is generated --> system reset. In addition, start a timer PWM which should stop after system reset. Tested on a STM32L432KC.

You can set the IWDG timeout as small as 100µs @40 kHz LSI clock. Shouldn't be a problem.

After reset you can inspect IWDGRSTF flag in RCC_CSR register to differenciate an IWDG reset from a normal reset. With some code in the Reset_Handler you may safely jump to system memory in that case without needing external circuitry.

hth

KnarfB

Javier1
Javier1Author
Principal
February 17, 2021

> > NVIC_SystemReset() only resets the core

> How did you find out?

My f105 is driving some leds with pwm and gpios, so when a system reset happens all LED go off (quite visual)

If just a core reset happens the LEDs remain lit.

> If you can check that a low pulse on NRST is generated

ill check this , thanks

> After reset you can inspect IWDGRSTF flag in RCC_CSR register to differenciate an IWDG reset from a normal reset. With some code in the Reset_Handler

> you may safely jump to system memory in that case without needing external circuitry.

I am exploring this option now, my plan is to jumpAddress to the factory stm bootloader after deactivating interruptions, timers and watchdogs.

hit me up in https://www.linkedin.com/in/javiermuñoz/