STM32F4 konfiguration von EXTI

OP #2823488
Lesenswert?
• ▲
▼
Hallo Zusammen,

ich habe eine grundsätzliche frage ich versuche ein paar Zeilen Code von 
STM32F100 auf STM32F4 zu portieren.

Im einzelnem kriege ich die Buttons nicht konfiguriert so konfiguriert, 
dass ich über eine IRQ Routine behandelt werden.



bei STM32F100 Habe ich wie folgt die Pins konfiguriert und  über 
exti15_10_irqhandler behandelt. Bei STM32F4 kriege ich einfach nicht 
hin.

vielleicht kann mir jemand einen Tipp geben.

1
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
2
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13;
3
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
4
  GPIO_Init(GPIOC, &GPIO_InitStructure);
5

6

7
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); 
8

9
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource11);  GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource10);  GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource12);  GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource13);
10

11
  EXTI_InitStructure.EXTI_Line = EXTI_Line10;
12
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
13
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;  
14
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
15
  EXTI_Init(&EXTI_InitStructure);
16

17
  EXTI_InitStructure.EXTI_Line = EXTI_Line11;
18
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
19
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;  
20
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
21
  EXTI_Init(&EXTI_InitStructure);
22

23
  EXTI_InitStructure.EXTI_Line = EXTI_Line12;
24
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
25
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
26
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
27
  EXTI_Init(&EXTI_InitStructure);
28

29
  EXTI_InitStructure.EXTI_Line = EXTI_Line13;
30
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
31
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
32
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
33
  EXTI_Init(&EXTI_InitStructure);
34
 
35
  NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;
36
 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;
37
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
38
NVIC_Init(&NVIC_InitStructure);


Bei STM32F4 Kriege Ich die die ganze geschichte nicht über 
EXTI15_10_IRQn konfiguriert.
das einzige was bis jetzt funktioniert ist


1
      GPIO_InitTypeDef GPIO_InitStructure;
2
      EXTI_InitTypeDef EXTI_InitStructure;
3
      NVIC_InitTypeDef NVIC_InitStructure;
4

5
      /// Enable the BUTTON Clock
6

7
      RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOC, ENABLE);
8
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
9

10
      /// Configure Button pin as input
11
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
12
      GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
13
      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
14
      GPIO_Init(GPIOC, &GPIO_InitStructure);
15

16
     //Anbindung mit Interruptgenerator
17

18
        /// Connect Button EXTI Line to Button GPIO Pin
19
        SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOC, EXTI_PinSource4);
20

21
        /// Connect Button EXTI Line to Button GPIO Pin
22
        SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOC, EXTI_PinSource3);
23

24

25
        // Configure Button EXTI line
26
        EXTI_InitStructure.EXTI_Line =  EXTI_Line4;
27
        EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
28
        EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
29
        EXTI_InitStructure.EXTI_LineCmd = ENABLE;
30
        EXTI_Init(&EXTI_InitStructure);
31

32
        // Configure Button EXTI line
33
        EXTI_InitStructure.EXTI_Line =  EXTI_Line3;
34
        EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
35
        EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
36
        EXTI_InitStructure.EXTI_LineCmd = ENABLE;
37
        EXTI_Init(&EXTI_InitStructure);
38

39

40
        // Enable and set Button EXTI Interrupt to the lowest priority
41
        NVIC_InitStructure.NVIC_IRQChannel =  EXTI4_IRQn;
42
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;
43
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;
44
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
45
        NVIC_Init(&NVIC_InitStructure);
46

47
        // Enable and set Button EXTI Interrupt to the lowest priority
48
        NVIC_InitStructure.NVIC_IRQChannel =  EXTI3_IRQn;
49
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;
50
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;
51
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
52
        NVIC_Init(&NVIC_InitStructure);
OP #2824743
Lesenswert?
• ▲
▼
Erledigt!

war wirklich ein ganz dummer Fehler. ich habe die Konfiguration in einer 
C++ Datei geschrieben. Määäp!

Jetzt ist das ganze über extern "C" aus einer .c Datei angebunden und es 
funktioniert.


Nicht desto trotz bleibt die Frage, wo der unterschied zwischen den EXTI 
lines liegen

Danke!
Gast #2837051
Lesenswert?
• ▲
▼
Naja. Einen Unterschied gibt es da eigentlich nicht. Die ersten 
EXTI-Lines sind nur einzeln rausgeführt, damit man die Möglichkeit hat 
auf einzelne Interrupts direkt zu reagieren, ohne auswerten zu müssen, 
welches Ereignis den Interrupt verursacht hat. Bei den Sammel EXTI-Lines 
weiß man ja nie, welcher den Interrupt ausgelöst hat. Da muss man dann 
die Flags auswerten.

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.