emIDE, STM32, STStdLib: Externer Interrupt (PortPin)?

Gast #3323273
Lesenswert?

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);
  }
}
Gast #3323887
Lesenswert?

> in der stm32f10x_it.h auch nicht vergessen?

Ist eingetragen. Der Compiler läuft durch, ohne Warnings und Errors. Der 
SysTick Interrupt ist auch Okay.

Habe wirklich alles 3fach kontrolliert.

> Funktioniert das EXTI-Beispiel aus der Std.Per.Lib?
Der obige Code ist im Prinzip das Beispiel aus der Lib.

Finde absolut kein Fehler, ich vermute es hängt mit der emIDE Umgebung 
zusammen, eventuell Startupcode, Grundinitilisierung Vector Tabelle ???

Hat noch einer eine Idee?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren