#include "boot_profile.h" /* Использует ту же карту памяти и magic, что общий загрузчик F103. */ #include "stm32f10x.h" /* Сохраняет совместимость KONOR с CMSIS/StdPeriph без зависимости от HAL. */ static void request_boot(uint16_t magic) /* Сохраняет одноразовый запрос через программный reset. */ { /* BKP DR1 существует в backup-домене STM32F103 и не требует резервирования основной SRAM. */ RCC->APB1ENR |= RCC_APB1ENR_PWREN | RCC_APB1ENR_BKPEN; /* Разрешает тактирование PWR и backup-регистров. */ PWR->CR |= PWR_CR_DBP; /* Разрешает запись в защищённый backup-домен. */ BKP->DR1 = magic; /* Записывает совместимый код назначения следующего запуска. */ __DSB(); /* Гарантирует завершение записи до запроса системного сброса. */ NVIC_SystemReset(); /* Следующий startup потребляет запрос и выбирает загрузчик. */ } /* Завершает общую аппаратную последовательность входа. */ void Boot_RequestFirmware(void) { request_boot(BOOT_REQUEST_FIRMWARE_MAGIC); } /* Сохраняет прежний API приложения KONOR для обновления CAN/UART. */ void Boot_RequestSystemMemory(void) { request_boot(BOOT_REQUEST_SYSTEM_MAGIC); } /* Сохраняет прежний API меню для заводского UART-загрузчика STM32. */