Gast
#4874079
Hallo zusammen, ich betreibe einen STM32F446 bei 180 MHz und hab die Flash-Latency auf 5 laut Reference-Manual gestellt. Ich hatte folgendes Problem: Ich hatte eine Code-Sektion in der ein IRQ deaktiviert sein musste um Anomalien zu vermeiden. Während dieser Code ausgeführt wurde, ist ein IRQ-Event aufgetreten, also nach enable des entsprechenden IRQs ist dieser sofort nach Aktivierung in die entsprechende IRQ gesprungen (siehe Pseudo-Code). In der IRQ wurde das IRQ-enable-Bit deaktiviert (wird durch eine Variablen-Abfrage nur einmal ausgeführt und kann danach nicht mehr wiederholt deaktiviert werden). Falls ich nun im normalen Programmablauf direkt nach der IRQ-Aktivierung-Befehlszeile eine Zeile eingefügt habe, in welcher auf dasselbe Register zugegriffen wird, wurde der IRQ einfach wieder aktiviert (scheinbar wurde einfach der alte Registerwert vorher vom Prefetch-Controller gesichert und hergenommen) und der IRQ in einer Dauerschleife ausgeführt:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
Fehlt die zweite Zeile mit enable-IRQ funktioniert alles ohne Probleme. Hattet ihr schonmal ähnliche Probleme?