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.