|
|
  |
sprintf не выводит float |
|
|
|
Jan 13 2017, 04:15
|
Участник

Группа: Участник
Сообщений: 43
Регистрация: 10-11-10
Из: Екатеринбург
Пользователь №: 60 777

|
Пробовал так:
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 число, пустое место (не вставляются никакие символы). Целые числа, строки и символы выводятся нормально.
|
|
|
|
|
Jan 13 2017, 04:32
|
Участник

Группа: Участник
Сообщений: 43
Регистрация: 10-11-10
Из: Екатеринбург
Пользователь №: 60 777

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

Группа: Участник
Сообщений: 43
Регистрация: 10-11-10
Из: Екатеринбург
Пользователь №: 60 777

|
Цитата(k000858 @ Jan 13 2017, 08:03)  в настройках адреса начала стека _estack = 0x20010000;
|
|
|
|
|
Jan 13 2017, 05:59
|
Участник

Группа: Участник
Сообщений: 43
Регистрация: 10-11-10
Из: Екатеринбург
Пользователь №: 60 777

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

Группа: Участник
Сообщений: 43
Регистрация: 10-11-10
Из: Екатеринбург
Пользователь №: 60 777

|
Цитата(jcxz @ Jan 13 2017, 09:24)  Этого тут никто не знает, так как не можем телепатировать какой у Вас компилятор. gcc
|
|
|
|
|
Jan 13 2017, 10:05
|
Участник

Группа: Участник
Сообщений: 43
Регистрация: 10-11-10
Из: Екатеринбург
Пользователь №: 60 777

|
Не работает, только при вызове из задачи FREE RTOS. Вне FREE RTOS работает.
Сообщение отредактировал mml - Jan 13 2017, 10:07
|
|
|
|
|
Jan 13 2017, 10:31
|

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

|
QUOTE (mml @ Jan 13 2017, 12:05)  Не работает, только при вызове из задачи FREE RTOS. Вне FREE RTOS работает. QUOTE (Alechek @ Jan 13 2017, 06:20)  2. выравнивание стека по 8? "Совпадение? Не думаю!"
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jan 13 2017, 11:12
|
Участник

Группа: Участник
Сообщений: 43
Регистрация: 10-11-10
Из: Екатеринбург
Пользователь №: 60 777

|
Как его выровнять на 8?
Использую: #define configMINIMAL_STACK_SIZE ( ( uint16_t ) 1 * 1024 ) Если речь о величине стека на задачу, то она у меня кратна восьми.
Сообщение отредактировал mml - Jan 13 2017, 11:15
|
|
|
|
|
Jan 14 2017, 11:10
|

Частый гость
 
Группа: Участник
Сообщений: 116
Регистрация: 27-01-10
Из: СПб
Пользователь №: 55 094

|
Цитата(mml @ Jan 13 2017, 14:12)  Как его выровнять на 8? С FreeRTOS не работал, но, к примеру, в TNKernel стеки задач это просто массивы. А массив можно выровнять так: Код uint32_t stack[STACK_SIZE] __attribute__ ((aligned (8)));
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|