Allerdings ist die LED PA10 immer an, es wurde also nicht korrekt
geschrieben! Was habe ich falsch gemacht? Die anddresse in die ich
versuche zu schreiben ist 0x08002400 .
Prutheus schrieb:> Die anddresse in die ich> versuche zu schreiben ist 0x08002400 .
Und du meinst weil es nur einen STM32 Controller gibt
brauchst du ihn nicht angeben?
Und du meinst die
"Wichtige Regeln - erst lesen, dann posten!"
gelten nicht für dich?
>>Formatierung (mehr Informationen...)>>>> [c]C-Code[ /c]
Dein sinnfreies Programm schreibt immer 0x11111111 an die Speicherstelle
FLASH_ADDR. Und das gleich zweimal. GPIOA->ODR &= ~_BV(10) wird daher
immer ausgeführt.
Ist die LED active low, würde dein Programm funktionieren.
Wenn nicht, dann schau dir nach dem Schreibvorgang doch mal die
Statusflags im FLASH_SR Register an und/oder prüfe im Memory-Fenster des
Debuggers die Speicheradresse auf Veränderung.
Prutheus schrieb:> Ich möchte in den Flash schreiben und anschließend prüfen, ob> erfolgreich geschrieben wurde indem ich es wieder auslese:
Also ich würde nach STM's Flash Programming Manual vorgehen.
Aber das wäre zu einfach ... da müsste man nur suchen ...
und downloaden ... ach so, lesen und verstehen müsste man es
auch noch ... und zuletzt auch noch umsetzen. Zuviel verlangt.
Ich kann jedenfals nach den hier angebotenen Code-Fragmenten
keine Parallelen zum Manual erkennen.
Sebastian, wenn ich dann prüfe ob dort 0x11111111 steht, dann leuchtet
sie, gut, active low, stimmt, aber wenn ich auf 0, 0x01010101 oder sonst
was prüfe, dann leuchtet sie auch!?
STM Apprentice schrieb:> Prutheus schrieb:>> Ich möchte in den Flash schreiben und anschließend prüfen, ob>> erfolgreich geschrieben wurde indem ich es wieder auslese:>> Also ich würde nach STM's Flash Programming Manual vorgehen.>> Aber das wäre zu einfach ... da müsste man nur suchen ...> und downloaden ... ach so, lesen und verstehen müsste man es> auch noch ... und zuletzt auch noch umsetzen. Zuviel verlangt.>> Ich kann jedenfals nach den hier angebotenen Code-Fragmenten> keine Parallelen zum Manual erkennen.
Dann sag mir was fehlt, ich habe mit vielen Beispielen abgeglichen, und
mich dann entschieden, die STDPeriph-Funktionen zu nutzen, ich sehe hier
nicht was fehlt.
Ich suche hier Hilfe und keine dummen Kommentare.
STM Apprentice schrieb:> Prutheus schrieb:>> Ich suche hier Hilfe und keine dummen Kommentare.>> Ich suche hier logische Vorgehensweise und keine dummen Ansätze.
Ich habe es eben nochmals gelesen, ich unlocke den flash, schreibe rein
und das wars. Wo habe ich was übersehen?
Wie es aussieht, löschst du vor dem Schreibvorgang nicht. Das geht beim
Flasch natürlich nicht. Du musst den Pageinhalt sichern, die page
löschen, Inhalt ändern und schreiben.
Schaue Mal auf meiner Webseite, da findest du ein funktionierendes
Beispiel:
http://engsta.com/stm32-flash-memory-eeprom-emulator/
Ich stehe gerade vor einem ähnlichen Problem.
Ich möchte bei meinem STM32F4 das Flash als EEPROM verwenden. Habe mir
dazu das Beispiel für die SPL heruntergeladen und eingebunden und auf
meine Bedürfnisse angebunden:
8KB Page Size (2x8 = 16KB)
Adresse: 512 - 16 = 496KB
Leider verstehe ich nicht ganz, wie ich nun ein Byte an Adresse XY
lesen/schreiben kann?
Im enthaltenen Beispielcode wird einfach ein Array mit 3 Words und den
Adressen 0x5555, 0x6666 und 0x7777 angelegt und dann jeweils ein paar
Hundert mal auf eine der Adressen geschrieben. Kann mir das jemand
erklären?
mfg