Hallo, eine kurze Frage, ich möchte gerne Global ALLE Interrupts bzw. den NVIC abschalten, bin ich mit diesem Befhel richtig dran? In der ASF gibt des den cpu_irq_enable(); cpu_irq_disable(); das steckt hinter dem dis. # define cpu_irq_disable() \ do { \ __disable_irq(); \ __DMB(); \ g_interrupt_enabled = false; \ } while (0) Deaktiviert dies nun alle IRQ oder nur die der CPU also ohne Peripherie
Hängt davon ab was __disable_irq() macht. Um alle Interrupts zu sperren würde ich Primask auf 1 setzen: __asm("cpsid I");
Hallo, danke für die Antwort, dies wird anscheinend so gemacht siehe Code:
1 | /** \brief Enable IRQ Interrupts
|
2 | |
3 | This function enables IRQ interrupts by clearing the I-bit in the CPSR.
|
4 | Can only be executed in Privileged modes.
|
5 | */
|
6 | __attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_irq(void) |
7 | {
|
8 | __ASM volatile ("cpsie i" : : : "memory"); |
9 | }
|
10 | |
11 | |
12 | /** \brief Disable IRQ Interrupts
|
13 | |
14 | This function disables IRQ interrupts by setting the I-bit in the CPSR.
|
15 | Can only be executed in Privileged modes.
|
16 | */
|
17 | __attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_irq(void) |
18 | {
|
19 | __ASM volatile ("cpsid i" : : : "memory"); |
20 | }
|
Kannst du mir evtl noch sagen was der Privileged mode ist? dies konnte ich noch nicht herausfinden... Trotzdessen mal Vielen Vielen Dank für die Hilfe
Priviligiert und nicht priviligiert ist zum Beispiel für MPU interessant. Dein Betriebssystem läuft dann z.B. priviligiert und deine Anwender Tasks nicht priviligiert. Ansonsten: The Definitive Guide to the ARM ® Cortex-M3 by Joseph Yiu Das Buch kann ich sehr empfehlen.
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.