 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
alessio Član

Pridružen-a: Pon 04 Dec 2006 8:39 Prispevkov: 363 Aktiv.: 1.61 Kraj: Ljubljana
|
Objavljeno: Tor Feb 19, 2008 8:50 am Naslov sporočila: Kazalec na funkcijo - vprašanje za C guruje |
|
|
Spodaj napisana koda s kazalcem na funkcijo se mi z GCC prevajalnikom prevede brez težav in dela OK:
Koda: |
typedef void (*IntVector)(void);
IntVector vect = VICVectAddr;
(*vect)(); /* call the IRQ handler via the pointer to function */
|
Pri tem je:
Koda: |
#define VICVectAddr (*((volatile unsigned long *) 0xFFFFF030))
|
ARM-ov prevajalnik (KEIL in uVision) pa mi javi ne samo warning, ampak celo error in sicer:
Citiram: |
isr.c(12): error: #144: a value of type "unsigned long" cannot be used to initialize an entity of type "IntVector"
|
Namen kode je dobiti naslov prekinitvene funkcije iz registra VICVectAddr in to funkcijo poklicati.
A bi moral še kaj explicitno cast-at ali kaj takega?
Hvala,
Aleš |
|
Nazaj na vrh |
|
 |
alessio Član

Pridružen-a: Pon 04 Dec 2006 8:39 Prispevkov: 363 Aktiv.: 1.61 Kraj: Ljubljana
|
Objavljeno: Tor Feb 19, 2008 9:37 am Naslov sporočila: |
|
|
Seveda po tem, ko sem tukaj spraševal, sem našel delujočo varianto tudi z ARM-ovim prevajalnikom.
Predelana koda je:
Koda: |
typedef void (*IntVector)(void);
int vect;
vect = VICVectAddr;
(*(IntVector)vect)(); /* call the IRQ handler via the pointer to function */
|
|
|
Nazaj na vrh |
|
 |
gregoral Član

Pridružen-a: Pet 24 Nov 2006 9:42 Prispevkov: 688 Aktiv.: 3.04 Kraj: Ljubljana
|
Objavljeno: Tor Jul 28, 2009 12:45 pm Naslov sporočila: |
|
|
šlo bi verjetno tudi tako:
typedef void (*IntVector)(void);
IntVector vect = (IntVector)VICVectAddr;
(*vect)(); /* call the IRQ handler via the pointer to function */ |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 493 dni
Powered by phpBB © 2001, 2005 phpBB Group
|