Перейти к содержанию
    

sprintf не выводит float

Пробовал так:

 

char s[256];

sprintf(&s,"APL: %f", 12.345);

sprintf(&s,"APL: %F", 12.345);

sprintf(&s,"APL: %e", 12.345);

sprintf(&s,"APL: %E", 12.345);

 

Там где должно появиться float число, пустое место (не вставляются никакие символы).

Целые числа, строки и символы выводятся нормально.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. включена ли поддержка float в библиотеке?

2. выравнивание стека по 8?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. включена ли поддержка float в библиотеке?

В настройках поставлена галочка Use float with nano printf для включения опции -u _printf_float.

Эта опция не помогает.

 

 

 

2. выравнивание стека по 8?

Не знаю как настроить такое выравнивание.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В настройках поставлена галочка Use float with nano printf для включения опции -u _printf_float.

Эта опция не помогает.

 

 

 

 

Не знаю как настроить такое выравнивание.

в настройках адреса начала стека

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В настройках поставлена галочка Use float with nano printf для включения опции -u _printf_float.

nano printf - очень похоже на printf без поддержки плавающей запятой. Ищите опцию включения полнофункциональной printf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ищите опцию включения полнофункциональной printf

В этом и смысл моего обращения на форум. Я не знаю как ее включить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В этом и смысл моего обращения на форум. Я не знаю как ее включить.

Этого тут никто не знает, так как не можем телепатировать какой у Вас компилятор.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не будем телепатировать. будем предполагать дефолтный GCC для арм :biggrin:

        LD_FLAGS        += -nostartfiles
        LD_FLAGS        += --specs=nano.specs

        LD_FLAGS        += -fno-exceptions -fno-rtti
        LD_FLAGS        += -Wl,--gc-sections
        LD_FLAGS        += -lc -lnosys
        LD_FLAGS        += -lm
        LD_FLAGS        += -u _scanf_float
        LD_FLAGS        += -u _printf_float
        LD_FLAGS        += -T$(LD_SCRIPT)

флаги из реально как печатающего так и ожидающего на вход плавучку проекта.

Изменено пользователем _Pasha

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Этого тут никто не знает, так как не можем телепатировать какой у Вас компилятор.

gcc

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не работает, только при вызове из задачи FREE RTOS.

Вне FREE RTOS работает.

Изменено пользователем mml

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не работает, только при вызове из задачи FREE RTOS.

Вне FREE RTOS работает.

 

2. выравнивание стека по 8?

"Совпадение? Не думаю!"

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как его выровнять на 8?

 

Использую:

#define configMINIMAL_STACK_SIZE ( ( uint16_t ) 1 * 1024 )

Если речь о величине стека на задачу, то она у меня кратна восьми.

Изменено пользователем mml

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как его выровнять на 8?

 

С FreeRTOS не работал, но, к примеру, в TNKernel стеки задач это просто массивы.

А массив можно выровнять так:

uint32_t stack[STACK_SIZE] __attribute__ ((aligned (8)));

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...