))) Смотря с какими ))) если EXTI то у меня так typedef struct
{
gpio_set_t pin;
uint8_t prio;
uint8_t sub;
EXTITrigger_TypeDef exti_mode;
FunctionalState start_mode;
uint8_t debounce;
exti_set_func_t exti_set_func;
}exti_set_t;
создаем массив с описанием
const exti_set_t exti_set[EXTI_SIZE] =
{
#ifdef BOOT
/* 0 */ { INT_NRF, DEF_PRIO, DEF_SUB, EXTI_Trigger_Falling, DISABLE, false, NULL },
/* 1 */ { INT_ACSEL, DEF_PRIO, DEF_SUB, EXTI_Trigger_Falling, DISABLE, false, NULL },
/* 2 */ { LIN_B_RX, DEF_PRIO, DEF_SUB, EXTI_Trigger_Falling, DISABLE, false, NULL },
/* 3 */ { TAG_STS, DEF_PRIO, DEF_SUB, EXTI_Trigger_Rising_Falling, DISABLE, false, NULL },
/* 4 */ { NO_EXTI, DEF_PRIO, DEF_SUB, EXTI_Trigger_Rising_Falling, DISABLE, false, NULL },
/* 5 */ { CAN_B_RX , DEF_PRIO, DEF_SUB, EXTI_Trigger_Falling, DISABLE, false, NULL },
/* 6 */ { IGN_IN, DEF_PRIO, DEF_SUB, EXTI_Trigger_Rising_Falling, DISABLE, false, NULL },
/* 7 */ { NO_EXTI, DEF_PRIO, DEF_SUB, EXTI_Trigger_Rising_Falling, DISABLE, false, NULL },
/* 8 */ { CAN_A_RX, DEF_PRIO, DEF_SUB, EXTI_Trigger_Falling, DISABLE, false, NULL },
/* 9 */ { USB_DETECT, DEF_PRIO, DEF_SUB, EXTI_Trigger_Rising_Falling, ENABLE, false, usb_detect_irq_handler },
/* 10 */ { IN_2, DEF_PRIO, DEF_SUB, EXTI_Trigger_Rising_Falling, DISABLE, false, NULL },
/* 11 */ { LIN_A_RX, DEF_PRIO, DEF_SUB, EXTI_Trigger_Falling, DISABLE, false, NULL },
/* 12 */ { NO_EXTI, DEF_PRIO, DEF_SUB, EXTI_Trigger_Rising_Falling, DISABLE, false, NULL },
/* 13 */ { NO_EXTI, DEF_PRIO, DEF_SUB, EXTI_Trigger_Rising_Falling, DISABLE, false, NULL },
/* 14 */ { IN_1, DEF_PRIO, DEF_SUB, EXTI_Trigger_Rising_Falling, DISABLE, false, NULL },
/* 15 */ { NO_EXTI, DEF_PRIO, DEF_SUB, EXTI_Trigger_Rising_Falling, DISABLE, false, NULL },
#else
}
На основании этой таблички происходит первоначальный инит вызов необходимых функций. Файл bsp_exti.c не изменяемся вообще, просто переносится из проекта в проект ))