Добрый день. Организовать прерывание от лапы PA0 получилось. Решил попробовать от PE13 и столкнулся с непонятными явлениями. При отладке в регистрах отчётливо водно что при появлении 1 на лапе PE13 флаг в регистре прерываний устанавливается, через некоторое время сам сбрасывается, но перехода к функции обработчику прерывания не происходит. Тактирование настроено точно, лапы настроены точно. вот куски программы, в которых я сомневаюсь: /* PE13 configuration interrupt set */ SYSCFG->EXTICR[3] |= (0x4<<4); // PE ports input set EXTI->IMR |= (1<<13); // MR13 interrupt request from line 13 is not masked EXTI->RTSR |= (1<<13); // TR13 rising trigger enabled for input line NVIC_EnableIRQ(EXTI3_IRQn); // EXTI3 interrupt enable А вот сама функция: /* Function for PE13 interrupt event */ void EXTI3_IRQHandler(void) { GPIOE->ODR |= (1<<4); // PE4 set 1 return; // return in main programm } Писал EXTI3_IRQn, а не EXTI4_IRQn, потому что их как оказалось 5 штук начиная с 0: EXTI0_IRQn = 6, /*!< EXTI Line0 Interrupt */ EXTI1_IRQn = 7, /*!< EXTI Line1 Interrupt */ EXTI2_IRQn = 8, /*!< EXTI Line2 Interrupt */ EXTI3_IRQn = 9, /*!< EXTI Line3 Interrupt */ EXTI4_IRQn = 10, /*!< EXTI Line4 Interrupt В общем не понимаю, что происходит, может кто-нибудь попробует сформировать прерывание на этой ноге...
|