Hallo,
ich möchte mit dem unten gezeigten code einen Teil des SRAMs meines
STM32F100RB über USART1 ausgeben. Allerdings kommen auf dem terminal nur
Null-Bytes an.
Ich habe die Routine mal debugged und es funktioniert auch (fast) alles,
bis zu dem Punkt, an dem der aktuelle Speicherwert in das Data Register
von USART1 geschrieben werden soll (USART1->DR liegt bei 0x40013804).
Ich hatte anfangs versucht, den Speicher an dieser Adresse zu
überwachen, um zu sehen, ob mein Wert tatsächlich dahingeschrieben wird.
Allerdings habe ich gelesen, dass dies für den Debugger gar nicht
sichtbar ist. Ich arbeite mit Keil und habe versucht die Register für
USART1 mittels View > System Viewer > USART1 einzusehen. Aber auch hier
bleibt DR immer auf 0x0000.
Was mache ich falsch? Im Code erkenne ich keine Fehler. Vllt. liegt es
and er Verkabelung? Ich habe mein FOCA break-out board an PA9 / PA10,
sowie GRND und 3.3V auf dem STM32 angeschlossen. FOCA und STM32 sind
jeweils per USB am PC angeschlossen.
Dank und Gruß
Debugger können mit solchen Registern wie dem UART Datenregister nicht
direkt umgehen. (1) Weil sie darauf genauso zugreifen wie der Prozessor,
und damit zerstörend arbeiten. (2) Weil das 2 Register an einer Adresse
sind, für jede Richtung eins.
Der Simulator im Keil kann die STM32F1xx-Familie mit fast der gesammten
Peripherie simulieren. Das ist in so einem Fall ein echter Vorteil im
Vergleich zum Debuggen auf der Hardware.