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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.