STM32 Bootloader Interrupts in Anwendung funktionieren nicht mehr

OP #3161048
Lesenswert?

Hallo,
ich habe einen Bootloader für CAN für den STM32 geschrieben und alles 
funktioniert soweit. Mein Bootloader benutzt außer Systick keine 
Interrupts.

Bevor ich aus dem Bootloader zur Application springe, setze ich brav den 
Systick zurück.
1
        RCC_DeInit();
2
        SysTick->CTRL=0;
3
        SysTick->LOAD=0;
4
        SysTick->VAL=0;

in meiner Application benutze ich den Systick wieder um eine LDE blinken 
zu lassen.

Das war meine Testumgebung und alles hat funktioniert. Froh über meinen 
Triumpf habe ich mal eine andere Anwendung aufgespielt. Diese benutzte 
auch lediglich den Systick und funktionierte auch. Sobald ich jetzt eine 
Anwendung mit Interrupt Aufspiele funktionieren die Interrupts nicht. 
Das Programm verhält sich wie als würde ich vergessen haben die ISR 
einzufügen.

Natürtlich habe ich in der system_stm32f4.c den vectortabellenoffset 
deklariert. Sollte auch funktioniert haben, denn der resethandler wird 
ordnungsgemäß aufgerufen. Den benutze ich, um aus dem Programm wieder in 
den Bootloader zu kommen.

Die Funktion __disableirq() im bootloader hilft leider auch nicht.


Danke schonmal!!!

PS: Wenn der Bootloader einwandfrei funktioniert, werde ich ihn hier 
gerne zu Verfügung stellen. Er ist kompatibel mit dem CAN Bootloader von 
de Robotergruppe Aachen, sodass mit der selben PC Seite sowohl AVR als 
auch STMs programmiert werden können.
OP #3161714
Lesenswert?

Nein das mache ich erst in der Anwendung, indem ich in der 
stm32_system.c den Vectortableoffset setze.
Ich habe jetzt etwas herumgespielt und den teil meiner software, der von 
der isr abhängt nocheinmal neu eingefügt( war aus einem beispiel ) und 
jetzt läuft es... Ich habe mir sofort die alte version aus dem svn 
wieder angeschaut und sehe einfach keinen unterschied....
Total seltsam!!

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