Hallo, ich benutze das Board STM32F407VG Discovery und arbeite mit EmBlitz 1.1. Leider funktioniert das Plugin SVD-Repository bei mir nicht, womit man sich ja die gesetzten Bits bzw. die Registerinhalte anschauen kann. Beim Starten des Plugins stürzt EmBlitz ab. Nun würde ich aber gerne überprüfen, ob das Setzen von Bits in den verschiedenen Registern die ich benutzen möchte klappt. Fällt dazu jemanden eine Möglichkeit ein? Kann man evtl. den Registerinhalt einer Variable zuweisen oder so? MfG thelightener
Torch M. schrieb: > Kann man evtl. den Registerinhalt einer Variable zuweisen oder so? Klar, warum nicht?
1 | uint32_t reg = I2C1->CR; |
fertig
Torch M. schrieb: > Leider funktioniert das Plugin SVD-Repository bei mir nicht, womit man > sich ja die gesetzten Bits bzw. die Registerinhalte anschauen kann. Kann man übrigens mit jedem gdb oder jlink gdp oder oder oder... Da sollte man sich mal bisserl über embedded debugging beschäftigen. Du kannst auch via SWO Tracenachrichten (printf...) raushauen.
Leider stehe ich noch ganz am Anfang und muss mich mit 1000 Dingen beschäftigen, was mich z.Z. etwas überfordert. gdb oder SWO sagt mir daher gerade nichts. Kannst du mir deinen Befehl noch genauer erläutern? uint32_t reg = I2C1->CR; Was ist in diesem Fall I2C1 und CR? MfG thelightener
CR ist das Kontrollregister vom I2C1. War ja nur ein Beispiel. Mach irgendein einfaches Beispiel, hier sowas z.B. http://www.diller-technologies.de/stm32_wide.html Und wenns mit der aktuellen Entwicklungsumgebung nicht geht, dann nimm irgendwas für DAUs. Atollic Truestudio, CooCox oder Eclipse mit manueller Konfiguration.
Mit folgendem Code möchte ich zunächst ein Bit des entsprechenden Registers setzen und im Anschluss prüfen, ob es gesetzt wurde. static const uint32_t TIM3_BASE_OWN = 0x40000400; //Basisadresse für Timer3-Register volatile uint32_t *TIM3_BASE_MOD = (uint32_t*)(TIM3_BASE_OWN); *TIM3_BASE_MOD |= 0x00000001; Wie würde das mit deinem Code-Beispiel funktionieren?
Torch M. schrieb: > Mit folgendem Code möchte ich zunächst ein Bit des entsprechenden > Registers setzen und im Anschluss prüfen, ob es gesetzt wurde. > > static const uint32_t TIM3_BASE_OWN = 0x40000400; //Basisadresse für > Timer3-Register > volatile uint32_t *TIM3_BASE_MOD = (uint32_t*)(TIM3_BASE_OWN); > *TIM3_BASE_MOD |= 0x00000001; > > Wie würde das mit deinem Code-Beispiel funktionieren? Uh? Das Setzen hast Du Dir ja schon selbst beantwortet, und das Lesen... Genau umgekehrt? if (*TIM3_BASE_MOD & 0x00000001) ... else ... ... natürlich durchgehend mit symbolischen Identifiern. Die ST CMSIS Library hat für jedes Bit einzelne symbolische Konstanten. Übrigens könntest Du Dir beim Cortex mal Bit Banding ansehen, da ist jedes Bit im Systemadressbereich auf ein Long gemappt. Ganz praktisch. Solltest Du WinIdea benutzen, hast Du im SFR Fenster jedes einzelne Bit schön lesbar decodiert, da brauchst Du programmatisch gar nichts zu tun.
:
Bearbeitet durch User
Torch M. schrieb: > Leider funktioniert das Plugin SVD-Repository bei mir nicht, womit man > sich ja die gesetzten Bits bzw. die Registerinhalte anschauen kann. Bei EmBlitz werden manche Optionen nur noch bei Entrichtung eines jaehrlichen Beitrags von 49 EUR freigeschaltet. Bin mir nicht ganz sicher, meinte aber irgendwo gelesen zu haben, dass die Registeransicht in diese Sparte faellt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.