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

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