Dingo (16.03.2018 10:40 - 10:45, просмотров: 114) ответил AU08 на Прерывание должно срабатывать по фронту? Помехи есть, насколько длинная линия этого PD6?
По Falling edge. Сантиметров 5. Но это не обьясняет, почему оно вызвано с "0": в норме бы два раза с EXTI_Line6 в обработчик попали. Или я что-то неверно понимаю? Инициализация внутри. void EXTI6_IRQ_Init(void)
{
EXTI_InitTypeDef EXTI_InitStructure;
/* Enable SYSCFG clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
EXTI_DeInit();
/* Connect EXTI Line6 to PD6 pin */
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOD, EXTI_PinSource6);
/* Configure EXTI Line6 */
EXTI_InitStructure.EXTI_Line = EXTI_Line6;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
//EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
/* Enable and set EXTI6 Interrupt to the lowest priority */
NVIC_SetPriority(EXTI9_5_IRQn, 0x0); // 0 - high, 15 - low
NVIC_EnableIRQ(EXTI9_5_IRQn);
}