STM32F2: Priorität von Interrupt

Gast #3843143
Lesenswert?
• ▲
▼
Hi, ich habe folgendes Verständnisproblem bezüglich Priorität von 
Interrupt auf dem STM32F2 Mikrocontroller. In der Initialisierung wird 
der Interrupt zum Beispiel für den CAN wie in Block 1 initialisiert. 
Hier wird auch die Priorität vergeben. Nun gibt es noch zwei weitere 
Funktionen, mit denen lässt sich ebenfalls die Priorität von dem 
Interrupt vergeben (siehe Block 2). Wenn ich mit der Funktion 
NVIC_SetPriority die Priorität 2 vergebe, ist dann 
NVIC_IRQChannelPreemptionPriority ebenfalls auf 2?


Block 1:
1
NVIC_InitStructure.NVIC_IRQChannel                   = CAN1_RX0_IRQn;
2
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
3
NVIC_InitStructure.NVIC_IRQChannelSubPriority        = 0;
4
NVIC_InitStructure.NVIC_IRQChannelCmd                = ENABLE;

Block 2:
1
NVIC_SetPriority(CAN1_RX0_IRQn,2);
2
NVIC_SetPriorityGrouping(0);
Gast #3843698
Lesenswert?
• ▲
▼
Hab da auch schon nachgeschaut. Leider habe ich bisher keine 
Gemeinsamkeiten finden können.

Wenn NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority auf den Wert 2 
gesetzt wird, dann ist dies das gleiche, als würde ich der Funktion 
NVIC_SetPriority den zweiten Wert 2 übergeben?
#3843726
Lesenswert?
• ▲
▼
jeder interrupt hat nur ein register, das seine priorität bestimmt. 
NVIC_SetPriority schreibt in dieses register.

jetzt kann man dieses register unterteilen, wenn man möchte. ein paar 
der oberen bits kann man einer groupprio zuordnen und die restlichen 
bits einer subprio. an welcher bit-stelle dieser schnitt stattfindet 
wird mit NVIC_SetPriorityGrouping eingestellt. nur die interrupts mit 
hoeherer groupprio sind preemptionfähig.


ich hab mich jetzt nicht mit der stm lib auseinandergesetzt... aber den 
namen nach in der init struktur zu urteilen, kannst du jedem interrupt 
nun eine groupprio (=preemption prio) und eine subprio zuordenen.  beim 
setzen der werte wird dann die lib funktion nachgucken welches grouping 
eingestellt ist und automatisch die prio auf die richtigen bits im 
register verteilen

lg

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.