ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
24 апреля
907655 Топик полностью
Vit (01.03.2019 09:41 - 10:29, просмотров: 160) ответил SciFi на Дык самый верный способ приблизиться к ресету - прыгать туда сразу после ресета. Ставим флаг, сбрасываем, и в самом начале прыгаем куда надо.
В первой строчке SystemInit вызываю функцию с ремапом и прочая. Через пару секунд после перехода прилетает на вектор ресет. Что с отладчиком, что без. Удалил дениты и пошло. Солянка вышла такой: //gcc #ifndef __NO_RETURN #define __NO_RETURN __attribute__((noreturn)) #endif static __NO_RETURN void Factory_Bootloader(void){ __HAL_RCC_SYSCFG_CLK_ENABLE(); __HAL_RCC_PWR_CLK_ENABLE(); __disable_irq();__ISB(); __HAL_REMAPMEMORY_SYSTEMFLASH(); __DSB(); __ISB(); //HAL_RCC_DeInit(); //HAL_DeInit(); typedef void (*pFunction)(void); pFunction JumpToApplication; JumpToApplication = (void (*)(void)) (*((uint32_t *) ((0x00000000 + 4)))); __set_MSP(*((uint32_t*) 0x1FFF0000)); JumpToApplication(); while(1); } Барьеры не вырезал, мешать не должны:)