STM32F10x, Gemeinsame Interrupt EXTI15_10

Gast #3076928
Lesenswert?
• ▲
▼
Hallo zusammen,

Ich habe eine Frage bezüglich des Interrupt Handlings des o.g. 
Controllers.

Die o.g. IRQ EXTI15_10_IRQHandler händelt ja alle Interrupts auf den 
Line 10-15, sprich auf den Pins 10-15 der Ports.

Jetzt wollte ich den Pin 13 von Port D als Interrupt (Falling edge) 
konfigurieren.

Allerdings springt der Controller nun IMMER (Pin-Status unabhängig) in 
diese ISR rein. Wenn ich dort den Port abfrage welcher den Ir auslöst 
funktioniert diese Abfrage so wie sie soll, was ein Hardwarefehler 
ausschließen sollte.

Hier der Code

•
1
main.h
2

3
#define EXTI_LINE_OVC_LID     EXTI_Line13
4

5
#define LID_OVC_PIN             GPIO_Pin_13           
6
#define LID_OVC_SPEED           GPIO_Speed_50MHz
7
#define LID_OVC_MODE            GPIO_Mode_IN_FLOATING;
8
#define LID_OVC_PORT            GPIOD
9

10

11

12

13

14

15
main.c
16

17
GPIO_InitStructure.GPIO_Pin   = LID_OVC_PIN;
18
GPIO_InitStructure.GPIO_Mode   = LID_OVC_MODE;
19
GPIO_InitStructure.GPIO_Speed       = LID_OVC_SPEED;
20
GPIO_Init(LID_OVC_PORT, &GPIO_InitStructure);
21
GPIO_EXTILineConfig(GPIO_PortSourceGPIOD, GPIO_PinSource13);
22

23

24
EXTI_InitStructure.EXTI_Line = EXTI_LINE_OVC_LID;
25
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
26
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
27
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
28
EXTI_Init(&EXTI_InitStructure);
29

30

31
  /* Enable the EXTI15_10 Interrupt */
32
NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;
33
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 7;
34
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
35
NVIC_Init(&NVIC_InitStructure);
36

37

38

39

40

41
stm32f10x_it.c
42
void EXTI15_10_IRQHandler(void)
43
{
44
 if(EXTI_GetITStatus(EXTI_LINE_OVC_LID) != RESET)
45
  {
46
    if(GPIO_ReadInputDataBit(LID_OVC_PORT, LID_OVC_PIN) == 0x00)
47
      test=1;
48
    else
49
                           test=2;     
50

51
    // Clear the power fail EXTI line pending bit
52
    EXTI_ClearFlag(EXTI_LINE_OVC_LID);
53
    EXTI_ClearITPendingBit(EXTI_LINE_OVC_LID);
54
  }
55
}

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.