STM32F207 GPIO Interrupt

OP (Firma: mumu) #2551178
Hey, ich mache gerade meine ersten Gehversuche mit meinem STM32.

Kann mir jemand mit Interrupts helfen?

Ich möchte gerne einen Interrupt auf den Pin PC13 legen. So das bei 
Tastendruck

NVIC-EnableIRQ(EXTI15_10_IRQn) {} //activate interrupt

und die Funktion:

void EXTI15_10_IRQHandler(void) {}

Kann mir jemand sagen was da noch fehlt???

Danke
Gast
NVIC-EnableIRQ(EXTI15_10_IRQn) {} //activate interrupt

Das wird wohl lustige Compilermeldungen geben.

Zieh dir die Firmware Library für deinen STM32
bei ST. Da sind haufenweise Beispiele dabei.
OP (Firma: mumu)
Durch die Eile passieren Fehler ;) Das sollte natürlich ganz anders 
lauten...


Ich würde mich bei der Programmierung gerne auf CMSIS beschränken. Gibt 
es hierfür auch Beispiele???


Könnte mir jemand ein GPIO Interrupt Beispiel, welches sich nur auf 
CMSIS beschränkt posten?
Gast
>Ich würde mich bei der Programmierung gerne auf CMSIS beschränken. Gibt
>es hierfür auch Beispiele???
>Könnte mir jemand ein GPIO Interrupt Beispiel, welches sich nur auf
>CMSIS beschränkt posten?

Das kann niemand.

CMSIS Cortex-M3 Core Peripheral Access Layer Source File

CMSIS bezieht sich nur auf den reinen CPU Core und dessen
Register. Sagen wir einfach mal CPU Register und Systick.

Die Peripherie ist für jeden Hersteller anders.
(Firma: matzetronics)
Hier mal was für GPIO C , Pin 3 . benutzt allerdings die FW library, 
ymmv . Vllt. hilfts ja trotzdem:
1
// aus 'setup.h'
2
/* Direction Command Pin */
3
#define DIRECTION_GPIO_CLK                    RCC_APB2Periph_GPIOC     
4
#define USER_GPIO_PORT            GPIOC
5
#define DIRECTION_COMMAND_PIN           GPIO_Pin_3
6
#define DIRECTION_EXTI_PORT_SOURCE      GPIO_PortSourceGPIOC
7

8
#define DIRECTION_EXTI_IRQn             EXTI3_IRQn
9
#define DIRECTION_EXTI_PIN_SOURCE       GPIO_PinSource3
10
#define DIRECTION_EXTI_LINE             EXTI_Line3
11
// aus 'main.c'
12
RCC_APB2PeriphClockCmd(DIRECTION_GPIO_CLK | RCC_APB2Periph_AFIO, ENABLE);
13

14
/* Configure Direction Switch EXTI line . Clocks laufen schon und der Port ist bereits input */
15
GPIO_EXTILineConfig(DIRECTION_EXTI_PORT_SOURCE, DIRECTION_EXTI_PIN_SOURCE);
16
EXTI_InitStructure.EXTI_Line = DIRECTION_EXTI_LINE;
17
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
18
// wähle die gewünschte Flanke
19
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
20
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
21
EXTI_Init(&EXTI_InitStructure);
22
// damit er nicht gleich losfeuert
23
EXTI_ClearITPendingBit(DIRECTION_EXTI_LINE);
24
NVIC_InitStructure.NVIC_IRQChannel = DIRECTION_EXTI_IRQn;
25
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01;
26
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01;
27
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
28
NVIC_Init(&NVIC_InitStructure);
Und dann:
1
/*
2
*  Direction Switch IRQ
3
*/
4
void EXTI3_IRQHandler(void)
5
{
6
  if(EXTI_GetITStatus(DIRECTION_EXTI_LINE) != RESET)
7
  {
8
    /* Clear the EXTI line pending bit */
9
    EXTI_ClearITPendingBit(DIRECTION_EXTI_LINE);
10
    // Mach was im Interrupt
11
   }
12
}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.