Problem mit dem Präprozessor - wo liegt der Unterschied

Gast #2331422
Lesenswert?

Hallo,
Kann mir jemand sagen, wo bei folgenden Präprozessor direktiven der 
Unterschied liegt?

funktioniert:
1
#define PERIPH_BASE                 ((unsigned long)0x40000000) 
2
#define APB2PERIPH_BASE       (PERIPH_BASE + 0x10000)
3
#define USART1_BASE                (APB2PERIPH_BASE + 0x3800)
4

5
(*((volatile unsigned long*)((USART1_BASE)+(0x04)))) = cString[i];

funktioniert nicht:
1
#define USART1_BASE       ((unsigned long)0x40018300)
2
#define USART1_DR           (*((volatile unsigned long*)((USART1_BASE)+(0x04))))
3

4
USART1_DR = cString[i];

Ich bin echt am verzweifeln.
Ich kann mir einfach nicht erklären, warum das Obere funktioniert und 
das Untere nicht.
Gast #2331431
Lesenswert?

oh man ey... ich sollte wohl mal eine pause machen... selbst nach dem 
hinweiß hab ich noch ne ewig gebraucht um ihn zu finden ^_^'

Vielen Dank... Ich saß jetzt schon an die 3 Stunden vor diesem sau 
dämlichen Fehler.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren