lloyd (05.03.2018 09:11, просмотров: 166) ответил misyachniy на По Cortex M0
Есть еще один вариант, с оверхедом. Оставляем вектор прерываний в бутлоадере, у приложения будет свой вектор.
Выделяем глобальную переменную где-нибудь в неиспользуемой приложением памяти.
void Bootloader_ISR(void) {
if (Bootloader_State == BOOTLOADER_APPLICATION) {
ISR_Handler isr_handler = Application_ISRVector[(SCB->ICSR & SCB_ICSR_VECTACTIVE_Msk) >> SCB_ICSR_VECTACTIVE_Pos];
isr_handler();
}
}