MarYuriy
May 7 2012, 13:10
Здравствуйте!
Использую Keil и stm32f103.
Как преобразовать переменную в строку? В хидерах нет функции itoa().
Хотел, как альтернативу для передачи по USART использовать функцию printf() - контроллер зависает напрочь.
Вячик13
May 7 2012, 13:58
Цитата(MarYuriy @ May 7 2012, 16:10)

Здравствуйте!
Использую Keil и stm32f103.
Как преобразовать переменную в строку? В хидерах нет функции itoa().
Хотел, как альтернативу для передачи по USART использовать функцию printf() - контроллер зависает напрочь.
А причём тут printf? Нужно использовать sprintf. С этим же набором он у меня прекрасно работает.
andron86
May 7 2012, 14:26
Наверное так.
Код
void Integer2Str(char *s, int bin, unsigned char cnt)
{
s += cnt;
while (cnt--)
{
*--s = (bin % 10) + '0';
bin /= 10;
}
}
MarYuriy
May 8 2012, 06:21
Спасибо, andron86, всё работает!
Вячик13, sprintf() я тоже пробовал, не работает, может не так пробовал?
Пробую так:
char bf[50];
int sp, a = 12, b = 112;
sp = sprintf(bf, "%d minus %d = %d",a,b,a-B );
print("\n\r");
toweroff
May 8 2012, 09:31
Цитата(MarYuriy @ May 8 2012, 10:21)

Пробую так:
char bf[50];
int sp, a = 12, b = 112;
sp = sprintf(bf, "%d minus %d = %d",a,b,a-B );
print("\n\r");
1. Почему a-
B2. И что в конце? ну получили bf, а дальше-то что?
MarYuriy
May 8 2012, 10:01
Цитата(toweroff @ May 8 2012, 12:31)

1. Почему a-B
2. И что в конце? ну получили bf, а дальше-то что?
1.Потому что B - это часть преобразованного смайлика - я упустил это, когда отправил сообщение ->

. B )
2. Я и не понимаю, как им пользоваться.
toweroff
May 8 2012, 10:37
мда...
Код
sprintf(bf,"%d",a);
print(bf);
print("\n\r");
в Вашем случае в bf получите
Код
12 minus 112 = -100
Для того, чтобы prntf заработал следует во первых определить функцию вывода символа
int putchar (int);
Кроме того, для нормально работы printf (чтобы не зависал) следует увеличить стек на 200-300 слов.
карабас
May 9 2012, 16:59
и еще полезно почитать реализацию Chana, ссылка
http://elm-chan.org/fsw/strf/xprintf.html