


Я бы сказал, что это не подпрограмма, а маленькая полноценная отдельная программа со своими прерываниями и полностью независимая от основной программы.Jack-Sidr писал(а):Сам бутлоадер это под программа
И да и нет: то что в контроллере специально для этого предусмотрено место и возможность стартовать с него то это как стандартное решение(так разработчиком заложено), а то что пользователь туда положит это не стандартное(индивидуальное).но если пользователь пишет собственный загрузчик для конкретного интерфейса, то стандартным способом это называть нельзя, я так думаю.
В точку, как-то и забыл про это. Делается это так, сначала программы добавляется след учаток кодаПо этим ссылкам не рассмотрен вопрос таблицы адресов прерываний (для STM32). Если и бутлоадер и основная прошивка используют, например, прерывания одного и того же таймера (или любой другой периферии), то возникает коллизия обработчиков этого прерывания. У бутлоадера он один, у основной прошивки другой. А адрес обработчика прерывания указан в таблице адресов прерываний, находящейся по фиксированному адресу (0x08000004). А значит возникает необходимость ремапить таблицу прерываний в конце работы бутлоадера или в начале основной прошивки.
Код: Выделить всё
__set_PRIMASK(1);
SCB->VTOR = Application_address;
__set_PRIMASK(0);
Код: Выделить всё
__disable_interrupt();
NVIC->ICER[0] = 0xFFFFFFFF;
/* Jump to user application */
JumpAddress = *(__IO uint32_t*) (APPLICATION_ADDRESS + 4);
Jump_To_Application = (pFunction) JumpAddress;
/* Initialize user application's Stack Pointer */
__set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS);
/* Jump to application */
Jump_To_Application();
Код: Выделить всё
const Int32U *flash = (Int32U*)APPLICATION_ADDRESS;
Int32U *svt = (Int32U*)0x20000000;
// copying vector table from ROM to RAM
NVIC->ICER[0] = 0xFFFFFFFF;
for (int i = 0; i < 48; i++)
{
svt[i] = flash[i];
}
// remap SRAM to 0x00000000
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
SYSCFG->CFGR1 |= 0x00000003;


Выв.13 оставить в воздухе (он уже внутри подтянут), а выв.11 на любую шину питания, или соединить с выв.12.Dentorol писал(а):И у меня соответственно вопрос: подскажите, пожалуйста, куда и как подсоединять неиспользуемые входа микросхемы MAX3232?