Пробовал так:
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 число, пустое место (не вставляются никакие символы).
Целые числа, строки и символы выводятся нормально.
Alechek
Jan 13 2017, 04:20
1. включена ли поддержка float в библиотеке?
2. выравнивание стека по 8?
Цитата(Alechek @ Jan 13 2017, 07:20)

1. включена ли поддержка float в библиотеке?
В настройках поставлена галочка Use float with nano printf для включения опции -u _printf_float.
Эта опция не помогает.
Цитата(Alechek @ Jan 13 2017, 07:20)

2. выравнивание стека по 8?
Не знаю как настроить такое выравнивание.
k000858
Jan 13 2017, 05:03
Цитата(mml @ Jan 13 2017, 07:32)

В настройках поставлена галочка Use float with nano printf для включения опции -u _printf_float.
Эта опция не помогает.
Не знаю как настроить такое выравнивание.
в настройках адреса начала стека
Цитата(k000858 @ Jan 13 2017, 08:03)

в настройках адреса начала стека
_estack = 0x20010000;
novikovfb
Jan 13 2017, 05:53
Цитата(mml @ Jan 13 2017, 08:32)

В настройках поставлена галочка Use float with nano printf для включения опции -u _printf_float.
nano printf - очень похоже на printf без поддержки плавающей запятой. Ищите опцию включения полнофункциональной printf
Цитата(novikovfb @ Jan 13 2017, 08:53)

Ищите опцию включения полнофункциональной printf
В этом и смысл моего обращения на форум. Я не знаю как ее включить.
Цитата(mml @ Jan 13 2017, 08:59)

В этом и смысл моего обращения на форум. Я не знаю как ее включить.
Этого тут никто не знает, так как не можем телепатировать какой у Вас компилятор.
_Pasha
Jan 13 2017, 07:07
не будем телепатировать. будем предполагать дефолтный GCC для арм
Код
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)
флаги из реально как печатающего так и ожидающего на вход плавучку проекта.
Цитата(jcxz @ Jan 13 2017, 09:24)

Этого тут никто не знает, так как не можем телепатировать какой у Вас компилятор.
gcc
Не работает, только при вызове из задачи FREE RTOS.
Вне FREE RTOS работает.
AHTOXA
Jan 13 2017, 10:28
Значит, у вас стек задачи не выровнен на границу 8 байт.
Сергей Борщ
Jan 13 2017, 10:31
QUOTE (mml @ Jan 13 2017, 12:05)

Не работает, только при вызове из задачи FREE RTOS.
Вне FREE RTOS работает.
QUOTE (Alechek @ Jan 13 2017, 06:20)

2. выравнивание стека по 8?
"Совпадение? Не думаю!"
Как его выровнять на 8?
Использую:
#define configMINIMAL_STACK_SIZE ( ( uint16_t ) 1 * 1024 )
Если речь о величине стека на задачу, то она у меня кратна восьми.
ohmjke
Jan 14 2017, 11:10
Цитата(mml @ Jan 13 2017, 14:12)

Как его выровнять на 8?
С FreeRTOS не работал, но, к примеру, в TNKernel стеки задач это просто массивы.
А массив можно выровнять так:
Код
uint32_t stack[STACK_SIZE] __attribute__ ((aligned (8)));