57 #define IS_VECTORS_ALIGNED(VECTORS) (((uint32_t)VECTORS & 0x7f) == 0)
67 #if defined (__ICCARM__)
68 #pragma data_alignment=128
69 static __no_init void (*Vectors[IRQ_TOTAL])(void) @
"VTABLE";
70 #elif defined (__GNUC__)
71 static __attribute__((section(
"vtable")))
72 void (*Vectors[IRQ_TOTAL])(
void) __attribute__((aligned(128)));
73 #elif defined (__CC_ARM)
74 static __attribute__((section(
"vtable")))
75 void (*Vectors[IRQ_TOTAL])(
void) __attribute__((aligned(128)));
77 #error "Нет реализации под данный компилятор"
86 static void IntDefaultHandler(
void)
112 if (SCB->VTOR != (uint32_t)Vectors)
114 uint32_t *src = (uint32_t *)SCB->VTOR;
115 uint32_t *dst = (uint32_t *)Vectors;
116 uint32_t n = IRQ_TOTAL;
128 SCB->VTOR = (uint32_t)Vectors;
134 Vectors[
IRQ_NUM(IRQn)] = pfnHandler;
152 Vectors[
IRQ_NUM(IRQn)] = IntDefaultHandler;
#define IRQ_NUM(IRQ)
Получение системного порядкового номера прерывания, с учетом исключений
#define IS_VECTORS_ALIGNED(VECTORS)
Проверка выравнивания RAM таблицы векторов
void IRQ_HandlerInit(IRQn_Type IRQn, void(*pfnHandler)(void))
Назначает функцию для обработки прерывания.
Файл содержит все прототипы функций для назначения обработчиков прерываний во время выполнения програ...
#define IS_IRQ_NUM(IRQn)
Проверка значения номера прерывания в допустимый диапазон.
void IRQ_HandlerDeInit(IRQn_Type IRQn)
Назначает функцию-заглушку (бесконечный цикл) для обработки прерывания.