hi, ich benutze das rtx rtos von keil auf dem stm32f100 prozessor mit cortex-m3 kern. für meine applikation ist es nötig, in den stop-mode zu gehen. ich verwende die konfigs aus dem beispiel für den stop mode aus der st-bib. den aufruf habe ich ebenfalls aus dem beispiel in meinen task übernommen. PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI); als ergebnis des aufrufs lande ich allerdings immer im hard fault handler. ich habe den fehler verfolgt und offenbar stimmt etwas mit dem zugriff aufs system control register nicht. die adresse sollte aber eigentlich stimmen: #define SCB_SysCtrl ((uint32_t)0xE000ED10) der aufruf sieht in der source der standard lib so aus (nicht für rtx, darauf habe ich keinen zugriff, müsste aber gleich sein): *(__IO uint32_t *) SCB_SysCtrl |= SysCtrl_SLEEPDEEP_Set; mit der maske #define SysCtrl_SLEEPDEEP_Set ((uint32_t)0x00000004) hat jemand dazu eine idee? den scheduler vorher mit tsk_lock(); anzuhalten hat auch nicht geholfen.
übrigens: wenn ich exakt das selbe (copy paste) nicht im os-task sondern in main durchführe ohne das rtx os zu aktivieren funktioniert es einwandfrei.
Vergleich doch mal die CPU Modi im vor und nach OS initialisierung, bzw im main und im task kontext.
ah ja! ist tatsächlich nach der os init im unprivileged mode. hab auch gefunden, wie man das für die einzelnen tasks oder für alle tasks einstellt. wieder einen schritt weiter in der lernkurve ;) Danke! Gruß!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.