Hi,
ich möchte (illustriert auch durch andere Threads) CAN auf dem STM32 zum
Laufen bringen.
Aktuell nimmt mir der STM32F103RE aber jeden Zugriff auf die Register
des NVIC sehr übel, wenn der zugehörige Interrupt aktiviert werden soll.
Genauer: Es geht um die Anweisungen:
1 | NVIC->IPR[4] |= 0x10000000;
|
2 | NVIC->ISER[0] |= (1 << (USB_HP_CAN_TX_IRQChannel & 0x1F));
|
Beim Ausführen der ersten Zeile springt er in den Hard Fault. Wenn ich
die Zeile spaßeshalber auskommentierte, passiert das gleiche beim
nachfolgenden Statement (geprüft in Keil uvision).
Beim Assembler-Code kann auch sehen, daß erst der Lesezugriff auf das
NVIC-Register das Problem auslöst. Das Attachment zeigt die Situation
vor dem Auftreten des Hard Faults, d.h. der Zugriff
1 | 0x08001C72 F8D00310 LDR r0,[r0,#0x310]
|
löst den Fehler aus.
Was fehlt hier? Muß ich den NVIC (siehe 2. Attachment) vorher noch in
anderer Form "vorbereiten"?
Grüße
schnack