stm32 Pin im laufenden Programm aktivieren/deaktivieren

Gast #2538426
Lesenswert?

Hallo, ich möchte im laufenden Programm einen Pin 
deaktivieren/akitivieren um mir für bestimmte Zustände keine Interrupts 
einzufangen. Die Deaktivierung des Interrupts ist so nicht möglich, da 
ich nur im Hauptprogramm das IT-Flag abfrage und das ja immer gesetzt 
wird. Gibt es also eine Möglichkeit dein Eingang tot zu schalten oder 
muss man den als Ausgang mit PU oder PD schalten? Das Locken scheint ja 
nur zu nützen wenn man ihn als Ausgang nutzt.
(Firma: EleLa - www.elela.de) #2538516
Lesenswert?

Alle Interrupts können auch so einzeln deaktiviert werden:
1
  NVIC->ICER[0] = 0xFFFFFFFF;
2
  NVIC->ICER[1] = 0xFFFFFFFF;
3
  NVIC->ICER[2] = 0xFFFFFFFF;
4
  NVIC->ICER[3] = 0xFFFFFFFF;
5
  NVIC->ICER[4] = 0xFFFFFFFF;
6
  NVIC->ICER[5] = 0xFFFFFFFF;
7
  NVIC->ICER[6] = 0xFFFFFFFF;
8
  NVIC->ICER[7] = 0xFFFFFFFF;

Jedes einzelne Bit ist ein Interrupt, der Cortex-M3 hat bis zu 256 
Interrupts, daher sind es 8*32 Bit.

Wie Du den vorigen Zustand sicherst und den Interrupt wieder aktivierst 
bekommst Du sicher raus. Auch welches Bit welcher Interrupt ist.
Steht irgendwo in der Doku.

PS: Diese 8 Zeile deaktivieren natürlich alle Interrupts.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren