STM32 externer IRQ an PB11

Gast #3570734
Lesenswert?
• ▲
▼
Hoi Leute,

wie der Betreff sagt, ich versuche am STM32F107 mit CoIDE einen 
Interrupt am PB11 zu erzeugen.
Es sollen beide Flanken ermittelt werden und dann will ich das Signal 
Hi/LO ausgeben.

Das Ergebnis ist, das nicht einmal bei Flanke eine UART-Ausgabe kommt, 
sondern ununterbrochen. Die UART-Ausgabe selbst funktioniert. ALso 
scheint er immer wieder in den INT zu springen, aber warum?

Jemand eine Idee?
1
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE);
2

3
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;// | GPIO_Pin_9 |  GPIO_Pin_8;
4
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
5
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
6
    GPIO_Init( GPIOB , &GPIO_InitStructure);
7

8
    GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource11);
9

10
    EXTI_InitStructure.EXTI_Line = EXTI_Line0;
11
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
12
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
13
    EXTI_InitStructure.EXTI_LineCmd = ENABLE;
14
    EXTI_Init(&EXTI_InitStructure);
15

16
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
17

18
    NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
19
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
20
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;
21
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;
22
    NVIC_Init(&NVIC_InitStructure);
23

24
void EXTI0_IRQHandler(void)
25
{
26
    EXTI_ClearITPendingBit(EXTI_Line0);
27
    
28
    uint8_t u08EELoad =  GPIO_ReadInputDataBit( GPIOB, GPIO_Pin_11);
29

30
    { // DIAG
31
        uint8_t   au8E2Load[] = "esc eeprom = 0x00\r\n";
32
        u08toHex( &au8E2Load[15], u08EELoad );
33
        stm32_rs232_send( sizeof(au8E2Load)-1, &au8E2Load );
34
    }
35
}
#3570886
Lesenswert?
• ▲
▼
Hallo Matthias,

probiert mal den EXTI_Line11 Interrupt.

Siehe RM0008, Figure 21:

http://www.st.com/st-web-ui/static/active/en/resource/technical/document/reference_manual/CD00171190.pdf

Und den Takt für die AFIO musst du, glaube ich, auch noch einschalten:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

Sonst werden die Einstellungen von

GPIO_EXTILineConfig ( XXX )

nicht übernommen.

Gruß
Jörn
Gast #3570909
Lesenswert?
• ▲
▼
Demnach müsste es so sein:
1
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);
2

3
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;// | GPIO_Pin_9 |  GPIO_Pin_8;
4
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
5
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
6
    GPIO_Init( GPIOB , &GPIO_InitStructure);
7

8
    GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource11);
9

10
    EXTI_InitStructure.EXTI_Line = EXTI_Line11;
11
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
12
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
13
    EXTI_InitStructure.EXTI_LineCmd = ENABLE;
14
    EXTI_Init(&EXTI_InitStructure);
15

16
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
17

18
    NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
19
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
20
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;
21
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;
22
    NVIC_Init(&NVIC_InitStructure);
23

24

25
void EXTI15_10_IRQHandler(void)
26
{
27
    EXTI_ClearITPendingBit(EXTI_Line11);
28
    ...
29
}

Aber da passiert garnichts....

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.