Gast
#3323273
Hallo Leute, versuche nun schon seit 2 Tagen bei einem STM32F107 (IDE: emIDE) in eine externe Interrupt-Routine zu springen (EXTI_Line0). Ich benütze die ST-StandardLib. Der Interrupt an PA.0 wird auch ausgelöst, doch es wird nicht die Service-Routine "void EXTI0_IRQHandler(void)" gesprungen, sondern der Interrupt landet bei "void HardFault_Handler(void)". stm32f10x_it.h und "stm32f10x_it.c sind entsprechend angepasst worden. Ich denke die NVIC (Interrupt Vector Tabelle) wird nicht richtig initialisiert. Hat jemand eine Idee, an was es liegen kann? Muss Startup.S ergänzt werden? /*** Hier die Initalisierung ***/ void vExt_IRQTest(void) { GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE); GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); EXTI_InitStructure.EXTI_Line = EXTI_Line0; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01; NVIC_Init(&NVIC_InitStructure); } /* IRQ-Routine */ void EXTI0_IRQHandler(void) { EXTI_ClearITPendingBit(EXTI_Line0); if(GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_3)) { GPIO_WriteBit(GPIOD, GPIO_Pin_7, SET); }else { GPIO_WriteBit(GPIOD, GPIO_Pin_7, RESET); } }