Mir ist aufgefallen, dass einige ARM-Programmierer einige CPU-Register mit Werten setzen, die die gleichen Standardwerte des Registers beim Zurücksetzen des Mikrocontrollers sind.
Beispiel: Der Standardwert von IOCON_PIO2_9
, Parameter MODE
auf LCP1114 ist 0x02 (Pull-up-Widerstand aktiviert). Im Beispielcode von Olimex wird dieser Wert 0x02
bei der Softwareinitialisierung gesetzt, aber dies ist bereits der Standardwert.
Dieses Verhalten tritt bei vielen anderen Registern auf.
Warum sollte jemand das tun? Meiner Meinung nach verschmutzt dieser zusätzliche Code einfach alles und verschlechtert die Lesbarkeit des Codes. Ist das eine gute Programmierpraxis?
FOO->CTL
, wenn der Standardwert 0x12345678 ist und man sich nur darum kümmert, die unteren Bits auf 8 zu setzen, es einen Kompromiss zwischen Klarheit/Coderaum/Leistung zwischen dem Schreiben des gesamten Registers auf 0x12345678 und der Verwendung von etwas gibt wie maskedwrite32(&(FOO->CTL), BLAH_MASK, BLAH_MODE8);
. Wenn die maskierte Schreibroutine Code enthält, um sie im Fall von Interrupts atomar zu machen, kann dies sie langsamer machen als sie sein muss, aber die Allgemeingültigkeit des Codes verbessern.
Scott Seidman
John u