Top.Mail.Ru
Уведомления
Очистить все

Как программно перейти в системный бутлодер (System Bootloader)?

(@wiseman75)
Level 1

В продолжение темы - ссылка.

Цитата
Создатель темы Размещено : 21.10.2024 12:48
Метки темы
Aveal
(@aveal)
Top level Admin

Вот из одного из проектов выдернул, вариант точно рабочий (STM32F103RB):

#define SYSTEM_MEMORY_ADDRESS                                   0x1FFFF000

static void JumpToSystemBootloader()
{
  HAL_DeInit();
  __disable_irq();
  
  SysTick->CTRL = 0;
  SysTick->LOAD = 0;
  SysTick->VAL = 0;
    
  const uint32_t ptr = (*((uint32_t *)SYSTEM_MEMORY_ADDRESS));
  void (*JumpToSystemMemory)(void);
  
  JumpToSystemMemory = (void (*)(void)) (*((uint32_t *) (SYSTEM_MEMORY_ADDRESS + 4)));
  __set_MSP(ptr);
  JumpToSystemMemory();
  
  while(1);
}
ОтветитьЦитата
Размещено : 21.10.2024 13:27
(@wiseman75)
Level 1

@aveal еще раз пребольшое спасибо, вроде все понял.

ОтветитьЦитата
Создатель темы Размещено : 21.10.2024 16:18
Поделиться: