uVision KEIL / Fehlermeldung

OP #2232014
Lesenswert?

Hallo!

Ich programmiere mit dem uVision von Keil in c einen externer Interrupt 
an PortD13. Nun bin ich an der Initialisierung und es tritt folgende 
Meldung auf:

Init\Init.c(467): error:  #136: struct "<unnamed>" has no field 
"EXTICR4"
1
AFIO -> EXTICR4 = EXINTCONFIGREG4; //PortD Pin 13 is the EXT_Interrupt source
2
AFIO -> EVCR    = 0x0000;

mir ist bewusst, dass die Initialisierung noch lange nicht fertig ist, 
doch möchte ich zuerst diesen Error beheben!

Ausschnitt aus dem Reference Manuale:

External interrupt configuration register 4 (AFIO_EXTICR4)

Was mach ich falsch?

Danke und Gruess!

M.B.
Persönliche Seite #2233599
Lesenswert?

Hi,

der NVIC sowie der SysTick sind Cortex-Mx eigene Peripherals, diese sind 
nciht in den Manuals der Hersteller beschrieben, sondern im Manual von 
ARM.

Zum NVIc selbst gibt es in der core_cm3.h der CMSIS ein paar ganz 
nützliche Funktionen, die die Konfiguration recht einfach machen, z.B.
1
static __INLINE void NVIC_EnableIRQ(IRQn_Type IRQn)

http://www.onarm.com/cmsis/download/10/version-2-0-of-the-cortex-microcontroller-software-interface-standard-cmsis/

VG,
/th.
OP #2233745
Lesenswert?

Hallo!

Danke für den Tip, je mehr ich darüber lese, desto weniger verstehe ich. 
Der Umstieg von PIC zu ARM ist beträchtlich.

Ich möchte ja nur mit dem Eingang an PortD13 einen Externen Interrupt 
auslösen. Das mit der Einsprungstelle der Interrupts verstehe ich auch 
noch nicht:
1
#define     INTERMASKREG            0x00002000
2
#define     FALLTRIGSELECREG        0x00002000
3
#define     EXINTCONFIGREG4         0x00000030                   
4

5

6
// Interrupt
7
// EXT-Interrupt
8

9
    EXTI    ->  IMR       = INTERMASKREG;                   //
10
    //EXTI    ->  EMR       = 0x00002000;                     //
11
    EXTI    ->  FTSR      = FALLTRIGSELECREG;               //
12
    //EXTI    ->  RTSR      = 0x00002000;                     //
13
    //EXTI    ->  SWIER     = 0x00002000;                     //
14
    AFIO   ->  EXTICR[3] = EXINTCONFIGREG4; //PD13 the EXT_Interrupt source
15
    //AFIO    ->  EVCR      = EVENTCONTREG;                   //
16
    NVIC    ->  ISER[0]    = 0x0000000A;                    // 
17

18

19
void EXTIO_IRGHandler(void)
20
{
21

22
    if(EXTI -> PR & (1 << 13))
23
    {
24
    
25
        EXTI    ->  PR |= (1 << 13);
26

27
        GPIOD   ->  BSRR         =   (0 << 12);
28
        GPIOD   ->  BSRR         =   (0 << 11);   
29
    }
30

31
}

Was mach ich falsch, dass kein externer Interrupt ausgelöst wird??

Vielen Dank und Gruss

M.B.

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