eigene controller lib in KEIL

Gast #1139778
Lesenswert?
• ▲
▼
Hallo!

ich würde gerne eine eigene lib mit register definitionen usw schreiben.
also ähnlich den at91sam7xxxx.h files.

ich kenn das von anderen compilern (CVAVR)in etwa so:

.equ PORTA 0x55
.equ TIMSK 0x10

ich hab jetz das selbe einfach mit keil versucht, bekomm abe immer die 
fehlermeldung "unexpected identifier" in jeder zeile.

Hat jemand erfahrung mit dem erstellen solcher bibliotheken oder eine 
ahnung was hier falsch sein könnte?
Persönliche Seite #1139849
Lesenswert?
• ▲
▼
Du willst eine Headerdatei schreiben, keine Library.

Und in eine Headerdatei, die für einen C-Compiler gedacht ist, kommen 
C-Anweisungen bzw. Definitionen.

Was Du da zitierst, sind Assembleranweisungen, und mit denen kann der 
C-Compiler nichts anfangen.


Sieh Dir als Beispiel doch einfach mal eine der mit Deinem Compiler 
mitgelieferten Headerdateien an - das sind Textdateien, die kann man mit 
einem Texteditor bearbeiten.
Gast #1140010
Lesenswert?
• ▲
▼
Danke für deine Antwort.
ich will eine headerdatei erstellen - stimmt. Ich hab mir die 
at91sam7x256.h natürlich angesehen, aber ich würde gerne ohne structs 
und pointer arbeiten.
mir würde es gefallen, wenn ich auf "altmodische" art weiterarbeiten 
könnte - d.h.: die registeraddressen per #define zuweisen - also etwa 
so:
#define PIOA_PER 0x0000FFFF

funktoiniert nur so nicht - da ich das ganze im sourcecode wie folgt 
verwenden möchte:
PIOA_PER = 0xFFFFFFFF;
also dem register PIOA_PER den wert 0xFFFFFFFF zuweisen.
Gast #1140017
Lesenswert?
• ▲
▼
Also eben doch mit "pointer".

>#define PIOA_PER 0x0000FFFF

soll ja eine Speicheradresse sein, auf die du zugreifen möchtest.
Also ein Zeiger auf einen 32bit Wert:

(unsigned long *)0x0000FFFF

Um auf den Inhalt zuzugreifen, dereferenzierst du den noch:

*(unsigned long *)0x0000FFFF

und erhälst:
1
#define PIOA_PER (*(unsigned long*)0x0000FFFF)

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