stm32_progger schrieb:
> ich habe das Problem, dass beim Zuweisen eines Wertes kleiner 0xFF nur
> die letzten 8bit der uint16_t gesetzt werden.
Woran erkennst du das?
> Ursächlich scheint der ASM befehl MOVS anstatt MOVW.
Nö.
Der von dir hervorgehobene Befehl lädt eine 0 ins Register R0, in
der nächsten Zeile wird der Inhalt dieses Registers in die lokale
Variable (auf dem Stack) geschrieben.
Zwei Zeilen darunter dasselbe nochmal mit 0xFFFF (65536), zuerst
als Wortladebefehl ins R0, danach wieder in die Stackvariable.
Das H in STRH bedeutet dabei, dass das Speichern als vorzeichenloses
Halbwort, also eben uint16_t erfolgt.
> Hat jemand eine Idee warum das schief geht?
Es geht nichts schief. :)
p.s.: Das „S“ in „MOVS“ bedeutet “update condition flags”.