Default_Handler // stm32

Gast #2926401
Lesenswert?
• ▲
▼
Bei mir tritt ein seltsamer fehler auf immer wenn ich diese funktion,
1
Postion_t get_robots_postion(void)
2
{
3
  return Robot.postion;
4
}
aufrufe, und Sie ihren den Wert zurückgeben möchte, springt der 
Prozessor zum Default_Handler().

Die Funktion macht nichts anderes als eine Private Globale Variable, 
auszulesen und ein Element daraus zurück zu schreiben. Der Fehler tritt 
jedes mal reproduzierbar an dieser stelle auf.

Ich nutze bisher keine Interrupts! misc.h und  exti.h sind nirgends 
eingebunden und befinden sich noch nicht mal im Projektverzeichnis.
Gast #2926530
Lesenswert?
• ▲
▼
>aufrufe, und Sie ihren den Wert zurückgeben möchte, springt der
>Prozessor zum Default_Handler().
>
>Die Funktion macht nichts anderes als eine Private Globale Variable,
>auszulesen
>
>Ich nutze bisher keine Interrupts! misc.h und  exti.h sind nirgends
>eingebunden

Nicht nur Interrupts können im Default Handler landen.
Auch Bus Faults können da hin springen wenn kein Handler
dafür angegeben ist.

Also tippe ich auf Bus Fault. Sprich Zugriff auf Adresse
die nicht existiert. Pointer auf Null z.B.
Gast #2926709
Lesenswert?
• ▲
▼
ich hatte es hier wirklich dreimal falsch eingetippt ...

Grad noch weiter getestet. Offenbar gibt es ein Problem mit der 
Struktur.
1
typedef struct
2
{
3
  Position_t pos;
4
  Position_t oldpos;
5
  Speed_t speed;
6
  float left_path;
7
  float right_path;
8
  float length;
9
  uint32_t t;
10
} Od_data_t;

Wenn ich das ganze als Pointer auf die Struktur initialisiere kann ich 
nicht mehr schreibend drauf zugreifen:
1
Od_data_t od_data;
2
od_data.t = 123;
geht
1
Od_data_t *od_data;
2
od_data->t = 123;
geht nicht (daten aus der Initialisierung werden nicht überschrieben) 
und führt bei obigen Funktionsaufruf zu dem Sprung in den 
default_handler(beim return)

Grundsätzlich spricht doch nichts gegen derartige Zuweisungen?
Gast #2926793
Lesenswert?
• ▲
▼
>Od_data_t *od_data;
>od_data->t = 123;
>
>geht nicht

Das ist ein Pointer auf eine Struktur.
Wenn du dem nicht die Adresse einer Struktur übergibst
zeigt er auf Null, peng Bus Fault -> Default Handler.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.