Hallo,
ich verwende den STM32L151 von STmicroelectronics (wobei ich nicht
glaube, dass es ein CPU-abhängiges Problem ist) und lese meine
GPIO-Eingänge bisher immer ganz normal so aus:
1 | // is Pin3 an PortC high?
|
2 | if ((GPIOC->IDR & GPIO_Pin_3) != 0)
|
3 | {
|
4 | ...}
|
Bisher hatte ich damit nie Probleme. Bei einem Pin ist mir jedoch
aufgefallen, dass er den richtigen Wert nur dann liest, wenn ich ihn so
auslese:
1 | // is Pin3 an PortC high?
|
2 | if ((volatile)(GPIOC->IDR & GPIO_Pin_3) != 0)
|
3 | {
|
4 | ...}
|
Meistens hatte ich bisher nur 8-Bit'er verwendet und noch nie war es
nötig ein CPU-Register per "volatile" auszulesen, wenn kein ISR im Spiel
war.
Habe ich das "fehlende volatile" bisher immer falsch gemacht? Könnte ich
bei meiner jetzigen CPU eine falsche Einstellung für den Compiler haben?