Estoy escribiendo un programa en C para el microcontrolador de la corteza del brazo SAM3N-M3. Cuando intento imprimir números flotantes, solo imprime 'f'. Ejemplo: printf("%f",43.12);
imprime f
solamente, no el 43.12
.arm-none-eabi-gcc: Impresión del número de flotación usando printf
Pero la impresión con enteros funciona bien.
¿Cómo habilitar la impresión completa de flotadores? Sé que el compilador, de forma predeterminada, deshabilitó la impresión flotante para reducir el tamaño del código (es decir, que vincularon la versión reducida). También tenga en cuenta que no hay CFLAGS=-Dprintf=iprintf
utilizado en el archivo MAKE.
Herramientas detalles:
- ARM/GNU C Compiler: (crosstool-NG 1.13.1 - Atmel construcción: 13) 4.6.1
- Por encima de la herramienta vienen con Atmel Studio 6.0.
AFAIK este microcontrolador no tiene FPU. Por lo tanto, debe consultar la documentación del compilador para saber cómo habilitar la capacidad de impresión completa. Por ejemplo, en AVR era "-Wl, -u, vfprintf -lprintf_flt -lm". Otra forma, debe ponerse en contacto con su proveedor de herramientas, tal vez es un problema conocido. –
Desafortunadamente, este -lprintf funciona solo para AVR-GCC, pero NO para ARM. – Prabhu