Ключевые слова - "без всякой на то необходимости". В данном случае
я действительно не вижу необходимости. С другой стороны, я вообще
не вижу нужды в SPL/HAL/LL. Мне кажется, писать напрямую в регистры
короче и понятнее. Вот код из реального проекта: #define EXTI_LINE 14
#define EXTI_PORT EXTI_GPIOB
void EXTI_init()
{
  AFIO->EXTICR[(EXTI_LINE>>2)&3] =
    EXTI_PORT << ((EXTI_LINE&3)<<2);     // select port 
  EXTI->RTSR = 0;                        // rising
  EXTI->FTSR = 1 << EXTI_LINE;           // falling
  EXTI->IMR = 1 << EXTI_LINE;            // interrupt enable
  NVIC_SetPriority( EXTI15_10_IRQn, 1 ); // same as USART
  NVIC_EnableIRQ( EXTI15_10_IRQn );
}
extern "C" void EXTI15_10_IRQHandler( void )
{
  EXTI->PR = 0x3F << 10;  // clear pending bits
// That's all, folks!
}