Wieso wird nicht in die Funktion gesprungen?

Gast #2743220
Lesenswert?

Hallo Zusammen

Alsooooo ich habe eine Funktion in der main:
1
void EnterSleepMode( uint8_t ucType )
2
{
3
    PMC->PMC_FSMR &= (uint32_t)~PMC_FSMR_LPM ;
4
    SCB->SCR &= (uint32_t)~SCB_SCR_SLEEPDEEP_Msk ;
5

6
    if ( ucType == 0 )
7
    {
8
        __WFI() ;
9
    }
10
    else
11
    {
12
        __WFE() ;
13
    }
14
}
Und hier drin die __WFI() die ist in core_cm3.h so definiert:
static __INLINE  void __WFI( void )               { __ASM ("wfi"); }
static __INLINE  void __WFE( void )               { __ASM ("wfe"); }

Wenn ich jetzt im DebugModus bei der Funktion bin und reinspringen 
möchte springt es nicht rein. In einer DemoApplikation sprint der 
Debugger aber rein. Was mache ich hier falsch? core_cm3.h wird nicht 
direkt in main included sondern indirekt über andere includes. Könnte 
das der Grund sein obwohl ich es auch direkt includen probiert habe.
Gast #2743552
Lesenswert?

Stefan++ schrieb:
> Hallo,
>
> wie soll das
>> reinspringen
> bei einer inline-Funktion die genau aus einer Assembleranweisung besteht
> aussehen ???
>
> Was erwartest Du ???

Das es diese inline Funktion ausführt... also sich schlafen legt.
Dies funktioniert in der DemoApplikation, bei mir jedoch nicht...
#2743556
Lesenswert?

ibo schrieb:
> Stefan++ schrieb:
>> Hallo,
>>
>> wie soll das
>>> reinspringen
>> bei einer inline-Funktion die genau aus einer Assembleranweisung besteht
>> aussehen ???
>>
>> Was erwartest Du ???
>
> Das es diese inline Funktion ausführt... also sich schlafen legt.
> Dies funktioniert in der DemoApplikation, bei mir jedoch nicht...

Dissassembler aktivieren...dann siehst du was er macht.
Gast #2743580
Lesenswert?

Ich habe den Grund glaube ich: Undzwar bin ich im DebugModus mit 
GoToDefinition in einem von IAR bereitgestellten intrinsics.h datei 
gelandet.
GoToDefinition sprngt zu:
__ATTRIBUTES void __WFE( void );
__ATTRIBUTES void __WFI( void );

Obwohl __WFE und __WFI in core_cm3.h wie weiter oben schon gepostet ist 
deklariert ist. Wie löse ich das jetzt?

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