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

Gast #1352781
Lesenswert?

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 #1353164
Lesenswert?

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 #1353190
Lesenswert?

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 #1353376
Lesenswert?

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

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