Всё остальное что есть в проге - уарт , ацп и прочие - работает хорошо.
Ножка прерывания определена как плавающих вход, снаружи подтянут к еденице.
Посмотрите уважаемые - может где косяк в коде?
CODE
void init_RCC (void)
{
// Cогласно документации необходимо разрешить тактирование
// AFIO (альтернативные функции линий ввода-вывода), так как регистры
// управления мультиплексорами находится в данном модуле:
/* Initialize Enable the Clock*/
RCC_APB2PeriphClockCmd(
RCC_APB2Periph_GPIOA |RCC_APB2Periph_GPIOB
|RCC_APB2Periph_GPIOC |RCC_APB2Periph_GPIOD |RCC_APB2Periph_GPIOE
|RCC_APB2Periph_USART1|RCC_APB2Periph_TIM1 |RCC_APB2ENR_AFIOEN |RCC_APB1ENR_SPI2EN, ENABLE);//|RCC_APB2Periph_AFIO
RCC_APB1PeriphClockCmd(
RCC_APB1Periph_USART2
|RCC_APB1Periph_USART3, ENABLE);
SysTick_Config(SystemCoreClock /1000);//1ms
}
void init_EXT(void)
{
EXTI_InitTypeDef EXTI_InitStructure; //объявляем структуру для внешних прерываний
GPIO_EXTILineConfig(GPIO_PortSourceGPIOD, GPIO_PinSource11); //прерывание с порта D ножки 11
EXTI_InitStructure.EXTI_Line = EXTI_Line11;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; //EXTI_Trigger_Falling
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
NVIC_SetPriority(EXTI15_10_IRQn, 4);
NVIC_EnableIRQ(EXTI15_10_IRQn);
}
int state_INT11=0;
void EXTI15_10_IRQnHandler(void)
{
if (EXTI_GetITStatus(EXTI_Line11))
{
EXTI_ClearFlag(EXTI_Line11);
EXTI_ClearITPendingBit(EXTI_Line11);
state_INT11=1;
}
}
{
// Cогласно документации необходимо разрешить тактирование
// AFIO (альтернативные функции линий ввода-вывода), так как регистры
// управления мультиплексорами находится в данном модуле:
/* Initialize Enable the Clock*/
RCC_APB2PeriphClockCmd(
RCC_APB2Periph_GPIOA |RCC_APB2Periph_GPIOB
|RCC_APB2Periph_GPIOC |RCC_APB2Periph_GPIOD |RCC_APB2Periph_GPIOE
|RCC_APB2Periph_USART1|RCC_APB2Periph_TIM1 |RCC_APB2ENR_AFIOEN |RCC_APB1ENR_SPI2EN, ENABLE);//|RCC_APB2Periph_AFIO
RCC_APB1PeriphClockCmd(
RCC_APB1Periph_USART2
|RCC_APB1Periph_USART3, ENABLE);
SysTick_Config(SystemCoreClock /1000);//1ms
}
void init_EXT(void)
{
EXTI_InitTypeDef EXTI_InitStructure; //объявляем структуру для внешних прерываний
GPIO_EXTILineConfig(GPIO_PortSourceGPIOD, GPIO_PinSource11); //прерывание с порта D ножки 11
EXTI_InitStructure.EXTI_Line = EXTI_Line11;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; //EXTI_Trigger_Falling
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
NVIC_SetPriority(EXTI15_10_IRQn, 4);
NVIC_EnableIRQ(EXTI15_10_IRQn);
}
int state_INT11=0;
void EXTI15_10_IRQnHandler(void)
{
if (EXTI_GetITStatus(EXTI_Line11))
{
EXTI_ClearFlag(EXTI_Line11);
EXTI_ClearITPendingBit(EXTI_Line11);
state_INT11=1;
}
}
спасибо.