Библиотеку стандартную не использую, хотя только под нее примиеры и находил.
вот так включаю прерывание (использованы парa функций СМ4)
Код
// Enable SYSCFG clock
RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN;
// External interrupt from pin PD6
SYSCFG->EXTICR[1] = SYSCFG_EXTICR2_EXTI6_PD; //
EXTI->IMR = 0x01; // Mask MR0
EXTI->RTSR = 0x01; // Rising Edge detection
EXTI->FTSR = 0x00; // Falling edge detect OFF
NVIC_SetPriority(EXTI9_5_IRQn, 0x0000000f);
NVIC_EnableIRQ(EXTI9_5_IRQn);
RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN;
// External interrupt from pin PD6
SYSCFG->EXTICR[1] = SYSCFG_EXTICR2_EXTI6_PD; //
EXTI->IMR = 0x01; // Mask MR0
EXTI->RTSR = 0x01; // Rising Edge detection
EXTI->FTSR = 0x00; // Falling edge detect OFF
NVIC_SetPriority(EXTI9_5_IRQn, 0x0000000f);
NVIC_EnableIRQ(EXTI9_5_IRQn);
Порт настроен как вход, с подтяжкой к земле.
обработчик пока пустой, пока просто хочу проверить перейдет ли он вообще в прерывание
Код
void EXTI9_5_IRQHandler()
{
for(;;)
{
}
}
{
for(;;)
{
}
}
вроде настроено все как надо, а две функции СМ4 ставят приоритет и включают прерывание, Пин 6 между Пин9 и Пин5, так что думаю верно все выбрано.
что я упустил?
попробовал добавить после всей инициализации это:
EXTI->SWIER = 0x01;
т.е. программно включить прерывание, тоже не помогает пока