Hallo, ich hätte eine eher allgemeine Frage zu STM32-Interrupts bzw. Interrupts in ARM-Controllern. Bei AVR-Controllern ist es ja so: Wenn ich einen Interrupt disable und es tritt ein Interrupt auf, so wird gespeichert dass dieser da war. Sobald man den Interrupt wieder enabled, wird in die entsprechende ISR gesprungen. Ist das beim STM32, bzw. anderen ARM-Controllern genauso?
Hab gerade folgendes gefunden (S.809, Dokument RM0008 von ST) bei USART Interrupts: The USART interrupt events are connected to the same interrupt vector (see Figure 301). • During transmission: Transmission Complete, Clear to Send or Transmit Data Register empty interrupt. • While receiving: Idle Line detection, Overrun error, Receive Data register not empty, Parity error, LIN break detection, Noise Flag (only in multi buffer communication) and Framing Error (only in multi buffer communication). These events generate an interrupt if the corresponding Enable Control Bit is set. Soweit ich den letzten Satz versteh, generiert der nur einen Interrupt, wenn das entsprechende Control Bit gesetzt ist. Das heißt ja dann, dass wenn ich z.B. mit:
1 | USART_ITConfig(USART1, USART_IT_RXNE, DISABLE); |
disable, ein Interrupt verloren geht. Lieg ich richtig?
Sieh dir mal die Beschreibung zu ClearITPendingBit an.
Ok, also falls das PendingBit gelöscht wird, wird sozusagen die Interruptanfrage gelöscht (wohl auch falls dieser disabled ist). So wie ich das versteh, ist das PendingBit für den IRQ verantwortlich. Also falls das gesetzt ist, wird dieser ausgeführt, sobald dieser wieder enabled wird. Findet man das irgendwo so in der Form geschrieben?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.