STM32 - Float Konvertierung - Führt nicht zum Compilerfehler, aber zum Abbruch zur Laufzeit

Gast #1352781
Hallo Zusammen,

es scheint, ich kann nicht mir Float Zahlen arbeiten.

Diese Beispiel versuche ich gerade auszuführen.

So funktioniert es noch (kein Compilerfehler wird angezeigt)
1
      s32 TestLong = 0;
2
      float TestD;
3

4
      TestD = 123 / 100.0;

So funktioniert es nicht mehr (kein Compilerfehler wird angezeigt)
STM32 bleibt einfach an der betreffende Stelle stehen
1
      s32 TestLong = 0;
2
      float TestD;
3

4
      TestD = 123 / 100.0;
5
      TestLong = TestD * 100.0;

Auch das hier funktionierte nicht
1
TestLong = (long)(TestD * 100.0);
2
TestLong = (s32)(TestD * 1000);

Ich nutze Codesourcery C++ lite, Compiler wird so gestartet
1
C:\Dokumente und Einstellungen\BB\Desktop\Projekt33>cs-make
2
arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -Wall -Wextra -g -Os -ffunction-sectio
3
ns -std=gnu99 -I . -I libstm32/inc -I include -DMCK_STM32_32MHZ    -c -o source/
4
main.o source/main.c
5
arm-none-eabi-gcc libstm32/src/stm32f10x_vector.o stm32f10x_it.o source/main.o s
6
ource/stm32_init.o source/adc.o source/gpio_config.o source/timer.o source/i2c.o
7
 source/uart.o source/rprintf.o libstm32/libstm32.a --output projekt33.elf
8
 -nostartfiles -Wl,--gc-sections,-Map=projekt33.elf.map,-cref -I . -I
9
 libstm32/inc -I include -L libstm32 -lc -lm -lgcc -lc -T stm32.ld
10
arm-none-eabi-objcopy -O binary projekt33.elf projekt33.bin
11
arm-none-eabi-objcopy -O ihex projekt33.elf projekt33.hex
12
arm-none-eabi-objdump -h -S -C -D projekt33.elf > projekt33.lss

Über Hilfe würde ich mich sehr freuen.

Vielen Dank & Viele Grüße
Bernd
Gast
Keiner eine Idee ? Kann doch nicht sein, das man mit dem STM32 keine
Floats in Interger bekommt.

Hier nochmal das Problem in aller Kürze
1
   s32 zahl= 0;
2
   float kommazahl = 0.0;
3
   zahl = 2070;
4
   kommazahl = ((float)zahl) / 2500.0;

gibt einen Programmabbruch zur Laufzeit. Compiler sagt nichts dazu.

Hatte schon irgendjemand mal das Problem?

Danke & Viele Grüße
Bernd
Gast
Hallo,

nein STM32 hat wohl keine FPU (Herstellerinfo hab ich nicht gefunden,
aber in einem anderen Thread stand etwas diesbezüglich).
(Ich hoffe mal das ist kein K.O. Argument)

Hat irgendjemand eine Idee?
(brauch ich dringend....)

Danke & Viele Grüße
Bernd
Gast
> nein STM32 hat wohl keine FPU

Dann solltest du dem Compiler das sagen. Der versucht vermutlich, die 
FPU zu benutzen.  Probiere mal -msoft-float als zusätzliche 
Compiler-Option.
Gast
Hallo Zusammen,

vielen Dank.
1
C:\Dokumente und Einstellungen\BB\Desktop\Projekt33>cs-make
2
arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -Wall -Wextra -g -Os
-msoft-float
1
 -ffunction-sectio
2
ns -std=gnu99 -I . -I libstm32/inc -I include -DMCK_STM32_32MHZ    -c -o source/
3
main.o source/main.c
4
arm-none-eabi-gcc libstm32/src/stm32f10x_vector.o stm32f10x_it.o source/main.o s
5
ource/stm32_init.o source/adc.o source/gpio_config.o source/timer.o source/i2c.o
6
 source/uart.o source/rprintf.o libstm32/libstm32.a --output projekt33.elf
7
 -nostartfiles -Wl,--gc-sections,-Map=projekt33.elf.map,-cref -I . -I
8
 libstm32/inc -I include -L libstm32 -lc -lm -lgcc -lc -T stm32.ld
9
arm-none-eabi-objcopy -O binary projekt33.elf projekt33.bin
10
arm-none-eabi-objcopy -O ihex projekt33.elf projekt33.hex
11
arm-none-eabi-objdump -h -S -C -D projekt33.elf > projekt33.lss

Hat leider auch keinen Erfolg gebracht, (inkl. -msoft-float hatte ich
auch mal bei den Linker Flag gesetzt gehabt).

Akutell hab ich diese im Projekt
1
#include <stdio.h>
2
#include <string.h>
3
#include <math.h>

Wenn die Libarys nicht stimmen, kann ich irgendwo nachschauen,
welche Libarys für die Floatumrechnung eingebunden werden?

Danke & Viele Grüße
Bernd

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.