STM32F100 verzweifelung bei EXTI und Einem Taster-Schalter

OP #2362179
Lesenswert?
• ▲
▼
Hallo Zusammen,

ich bastele an einem Projekt. Teil davon ist eine Uhr mit LCD Ausgabe, 
die Uhr wird mit SysTick betrieben, soweit  ist alles ok und 
funktioniert.
Jetzt wollte ich zu dem ganzem paar Taster als Bedienfeld einfügen. Als 
Basis habe ich Keil Beispiel für stm32_exti genommen. Unten ist 
Ausschnitt aus meinem Quellcode.

Ein Folgendes Problem habe ich:
Wenn ich die Taster drucke, dann kann es sein dass ein Interrupt 
Ordnungsgemäß verarbeitet wird. Oder das komplette Board hängt sich auf. 
Die Ausgabe wird nicht mehr aktualisiert. Es sieht so aus als ob irgend 
ein Interrupt hängen bleibt und nicht verarbeitet wird.  Wenn man beim 
hängen die Taster wild druckt, kann das Board wieder erwachen oder auch 
nicht.
Die Taster habe ich mit einem Pull down Widerstand 9,2K an 3.3V 
angeschlossen. Die Ports C10-C13 sind als -Floating Input konfiguriert.
Ich bin mir auch mit dem Anschluss der Taster nicht sicher.


1
void EXTI15_10_IRQHandler(void)
2
{
3

4
 static unsigned int zt = 0;
5

6
//Manü Links / Wert--
7
  if (EXTI->PR & (1<<10)) {                        // EXTI13 interrupt pending?
8
        EXTI->PR |= (1<<10);                          // clear pending interrupt
9

10
      //  if(menu1)menu1--;
11
        menu2=77;
12
         menu1=99;
13
       
14
     }
15

16
//Manü Links / Wert++
17
    if (EXTI->PR & (1<<11)) {                        // EXTI13 interrupt pending?
18
        EXTI->PR |= (1<<11);                          // clear pending interrupt
19
      if(mus - zt > 1000)
20
      {
21
        menu1++;
22
        menu2=0;
23
       }
24
     }
25
//Menü IN
26

27
     if (EXTI->PR & (1<<12)) {                        // EXTI13 interrupt pending?
28
        EXTI->PR |= (1<<12);                          // clear pending interrupt
29
      if(mus - zt > 1000)
30
      {
31
        menu2=10;    
32
       }
33
     }
34
//Menüout
35
     if (EXTI->PR & (1<<13)) {                        // EXTI13 interrupt pending?
36
        EXTI->PR |= (1<<13);                          // clear pending interrupt
37
    if(mus - zt > 1000)
38
      {
39
          menu2=20;      
40
      }
41
     }
42
    
43
  }


Vielen Dank

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.