нет.
НО есть другие способы:
1. пристроить внешнюю ПЗУ/ОЗУ с векторами и переключаться на неё (отдельный вопрос корректного переключения "на ходу");
2. для каждого (используемого) прерывания сделать обработчик, который будет переходить по указателю на ф-цию, расположенному в ОЗУ (в виде таблицы или по произвольному адресу -- вопрос реализации).
Можно что-то в духе: всю таблицу векторов прерываний забить указателем на defaultHandler, а в нём переходить по указателям из таблицы в ОЗУ
void empty(void) {}
void (*handlers[64])() = {
empty,
Reset_Handler, ; Reset Handler
NMI_Handler, ; NMI Handler
HardFault_Handler, ; Hard Fault Handler
MemManage_Handler, ; MPU Fault Handler
BusFault_Handler, ; Bus Fault Handler
UsageFault_Handler, ; Usage Fault Handler
empty,
empty,
empty,
empty,
SVC_Handler, ; SVCall Handler
DebugMon_Handler, ; Debug Monitor Handler
empty,
PendSV_Handler, ; PendSV Handler
SysTick_Handler, ; SysTick Handler
MIL-STD-1553B2_Handler,
MIL-STD-1553B1_Handler,
....
}
void defaultHandler(void)
{
(*handlers[__get_IPSR()])();
}
придётся только обойти нюанс с Reset_Handler'ом... Например
if(__get_IPSR() == 1) {
(*Reset_Handler)();
} else {
(*handlers[__get_IPSR()])();
}
возможны и другие подводные камни - надо пробовать...