VAI (04.11.2012 12:44, просмотров: 104) ответил Юра на Опять запутался :( Плата Дискавери с stm32f100rbt6. Настроил внешнее прерывание EXTI 11. Проваливаюсь в обработчик EXTI15_10_IRQHandler хорошо (LED показывает). Хачу убедиться что именно EXTI 11: if(( (EXTI->PR)&EXTI_Line11)!=(uint32_t)0) { Хер!
У меня обработчик прерывания по 6 ноге в STM32F205 выглядит так:
void EXTI9_5_IRQHandler( void )
{
if (( EXTI->PR & EXTI->IMR & EXTI_Line6 ) != RESET ) // if ( EXTI_GetITStatus( EXTI_Line6 ) != RESET )
{
...... код обработчика
EXTI->PR = EXTI_Line6; // EXTI_ClearITPendingBit( EXTI_Line6 );
}
}
/// Инициализация
void init( void )
{
.......
//* + PC6 - строб
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init( STROB_PORT, &GPIO_InitStructure );
// EXTI Строб
SYSCFG_EXTILineConfig( EXTI_PortSourceGPIOC, EXTI_PinSource6 ); // Строб ок EXTI Line6
EXTI_InitStructure.EXTI_Line = EXTI_Line6;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; // по обоим фронтам
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init( &EXTI_InitStructure ); // Configure EXTI Line6
//* - PC6 - строб
......
NVIC_PriorityGroupConfig( NVIC_PriorityGroup_4 ); // Выделяем 4 бита для PreemptionPriority (0..15) и 0 бит для SubPriority
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
......
NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn; // Прерывание от PC6 - строб
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3;
NVIC_Init( &NVIC_InitStructure );
......
}
У Вас должно выглядеть подобным образом.
Вам правильно посоветовали, зарегистрируйтесь, и тогда можно будет нормально код выложить, а разбираться в том, что Вы выкладываете сейчас - слижком напряжно.