|
Вывод float в arm-none-eabi-gcc для stmf4 |
|
|
|
Oct 20 2016, 15:09
|
Участник

Группа: Участник
Сообщений: 69
Регистрация: 10-06-08
Пользователь №: 38 190

|
Добрый день. Я меня возникли некоторые проблемы с выводом в терминал значений с плавающей точкой. Самый обычный sprintf прекрасно работает с целыми числами и отказывается работать с float. Например CODE float flttest = 123.45678;
sprintf(TestArray, "-= %lf =-", flttest); Terminal("Test1: STR %s", TestArray);
uint16_t integer= 12345; sprintf(TestArray, "*- %d -*", integer); Terminal("Test2: STR %s", TestArray);
При этот вывод: 003 INFO: Test1: STR -= 403099659660755.687500 =- 004 INFO: Test2: STR *- 12345 -* Основные ключи компилятора: arm-none-eabi-gcc -c -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mlittle-endian -mthumb-interwork -ffunction-sections -fdata-sections -Wl,--gc-sections Основные ключи линкера: arm-none-eabi-gcc -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -Xlinker -Map="project.map" -L/opt/gcc-arm-none-eabi-5_4/arm-none-eabi/lib/armv7e-m/fpu/ --specs=rdimon.specs -T/Core/STM32F4XX_FLASH.ld Кто-либо сталкивался с подобным?
|
|
|
|
|
 |
Ответов
|
Oct 24 2016, 11:26
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (scifi @ Oct 24 2016, 14:15)  если функция имеет переменное число аргументов (как sprintf), аргументы типа float приводятся к типу double перед вызовом функции. А все, что меньше int - к int. При том зачем-то в последних стандартах в inttypes.h добавили префиксы спецификаторов форматной строки h и hh "для принудительного приведения к short и char" QUOTE (demiurg_spb @ Oct 24 2016, 14:23)  Это всем известно, но не понятно - зачем))) Видимо неявное приведение позволяет написать вывод только одного типа (double) и в программах разумного размера суммарный размер всех кодов приведения типа будет меньше, чем размер дополнительной отдельной ветки кода для вывода float.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
Сообщений в этой теме
zemlemer Вывод float в arm-none-eabi-gcc для stmf4 Oct 20 2016, 15:09 scifi В командную строку линкера нужно добавить "-u... Oct 20 2016, 15:26 zemlemer Цитата(scifi @ Oct 20 2016, 18:26) В кома... Oct 20 2016, 17:02  scifi Я невнимательно посмотрел. Если линкуется целочисл... Oct 20 2016, 17:22   zemlemer Цитата(scifi @ Oct 20 2016, 20:22) Я невн... Oct 21 2016, 19:00    scifi Цитата(zemlemer @ Oct 21 2016, 22:00) Вро... Oct 21 2016, 19:26 Lagman может поможет http://www.openstm32.org/tiki-view_f... Oct 20 2016, 20:10 dxp Ещё вариант: https://github.com/emb-lib/io
библио... Oct 21 2016, 05:29   zemlemer Цитата(demiurg_spb @ Oct 23 2016, 00:21) ... Oct 24 2016, 10:53    demiurg_spb Цитата(zemlemer @ Oct 24 2016, 13:53) Смы... Oct 24 2016, 11:23      Сергей Борщ QUOTE (demiurg_spb @ Oct 24 2016, 14:29) ... Oct 24 2016, 12:48 zemlemer Цитата(iiv @ Oct 21 2016, 22:03) если у в... Oct 21 2016, 19:25 Genadi Zawidowski Цитатаперед передачей я преобразовывал в double а ... Oct 21 2016, 20:05 scifi Цитата(Сергей Борщ @ Oct 24 2016, 14:26) ... Oct 24 2016, 11:38
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|