Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 16.11.2012, 09:41  
sanstan
Прописка
 
Регистрация: 06.03.2007
Сообщений: 144
Сказал спасибо: 22
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
sanstan на пути к лучшему
По умолчанию Преобразование числа в строку STM32 Cocox

Добрый день, подскажите, как можно преобразовать число в строку на С++ для МК STM32?
работаю в среде Cocox
функция itoa() не определена.
sprintf() - пишет ошибку при компиляции

Чем можно воспользоваться?
Реклама:
sanstan вне форума  
Непрочитано 16.11.2012, 12:02  
makser1
Прописка
 
Регистрация: 14.04.2009
Сообщений: 103
Сказал спасибо: 17
Сказали Спасибо 11 раз(а) в 10 сообщении(ях)
makser1 на пути к лучшему
По умолчанию Re: Преобразование числа в строку STM32 Cocox

Код:
void itoa(int val, int base,  char *bufstr) // число в строку по основанию
{
	uint8_t buf[32] = {0};
	int i = 30;
	int j;
	for(; val && i ; --i, val /= base)
		buf[i] = "0123456789abcdef"[val % base];
	i++; j=0;
	while (buf[i]!=0){ bufstr[j]=buf[i]; i++; j++;}
}
makser1 вне форума  
Сказали "Спасибо" makser1
sanstan (16.11.2012)
Непрочитано 16.11.2012, 12:43  
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Преобразование числа в строку STM32 Cocox

Ужас!!!
Три строки и столько ошибок.
Эт где так учать программы писать ?
Boba_spb вне форума  
Непрочитано 16.11.2012, 13:12  
Hives
Гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: Преобразование числа в строку STM32 Cocox

sanstan какую ошибку sprintf выдает?
Hives вне форума  
Непрочитано 16.11.2012, 13:17  
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Преобразование числа в строку STM32 Cocox

Сообщение от Boba_spb Посмотреть сообщение
Ужас!!!
Три строки и столько ошибок.
Эт где так учать программы писать ?
Пожалуйста, укажите на ошибки. Постарюсь не повторять.
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 16.11.2012, 13:32  
sanstan
Прописка
 
Регистрация: 06.03.2007
Сообщений: 144
Сказал спасибо: 22
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
sanstan на пути к лучшему
По умолчанию Re: Преобразование числа в строку STM32 Cocox

Спасибо автору, Функция работает!!

По поводу ошибок сам не понимаю, что компилятор пишет:
с функцией sprintf(CS, "%d", r); :

[cc] Starting link
[cc] arm-none-eabi-gcc -O0 -nostartfiles -Wl,-Map=ind_ADC.map -mcpu=cortex-m3 -mthumb -LD:\projects\STM32\ind_ADC -Wl,--gc-sections -Wl,-TD:\projects\STM32\ind_ADC\link.ld -g -o ind_ADC.elf ..\obj\startup_stm32f10x_md_vl.o ..\obj\core_cm3.o ..\obj\system_stm32f10x.o ..\obj\hd44780_driver.o ..\obj\stm32f10x_gpio.o ..\obj\main.o ..\obj\stm32f10x_rcc.o
[cc] c:/coocox/coide/gcc/bin/../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-sbrkr.o): In function `_sbrk_r':
[cc] sbrkr.c.text+0x12): undefined reference to `_sbrk'
[cc] collect2: ld returned 1 exit status

BUILD FAILED
Total time: 2 seconds

----------------------------------------------
без этой функции:

[cc] Starting link
[cc] arm-none-eabi-gcc -O0 -nostartfiles -Wl,-Map=ind_ADC.map -mcpu=cortex-m3 -mthumb -LD:\projects\STM32\ind_ADC -Wl,--gc-sections -Wl,-TD:\projects\STM32\ind_ADC\link.ld -g -o ind_ADC.elf ..\obj\startup_stm32f10x_md_vl.o ..\obj\core_cm3.o ..\obj\system_stm32f10x.o ..\obj\hd44780_driver.o ..\obj\stm32f10x_gpio.o ..\obj\main.o ..\obj\stm32f10x_rcc.o
Program Size:
text data bss dec hex filename
4120 0 1032 5152 1420 ind_ADC.elf

BUILD SUCCESSFUL
sanstan вне форума  
Непрочитано 16.11.2012, 13:37  
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Преобразование числа в строку STM32 Cocox

1. Prototype
char *itoa(int value, char *string, int radix);
2. itoa должна заканчивать строку нулевым байтом;
3. itoa(0,10,str) - не работает
4. itoa(-1,2,str) - не работает






Вот результат сравнения

---- 0 ----
Типа itoa -› Привет Волку
itoa -› 0
---- 12345 ----
Типа itoa -› 12345т Волку
itoa -› 12345
---- -1 ----
Типа itoa -› 12345т Волку
itoa -› 11111111111111111111111111111111


void __fastcall TForm1::Button1Click(TObject *Sender)
{
char *st="Привет Волку ";
char *st1="Привет Волку ";
int n=0;
itoa_n(n,10,st);
itoa(n,st1,10);
Memo1-›Lines-›Add("---- "+IntToStr(n)+" ----");
Memo1-›Lines-›Add("Типа itoa -› "+AnsiString(st));
Memo1-›Lines-›Add("itoa -› "+AnsiString(st1));
n=12345;
itoa_n(n,10,st);
itoa(n,st1,10);

Memo1-›Lines-›Add("---- "+IntToStr(n)+" ----");
Memo1-›Lines-›Add("Типа itoa -› "+AnsiString(st));
Memo1-›Lines-›Add("itoa -› "+AnsiString(st1));
n=0xffffffff;
itoa_n(n,2,st);
itoa(n,st1,2);
Memo1-›Lines-›Add("---- "+IntToStr(n)+" ----");
Memo1-›Lines-›Add("Типа itoa -› "+AnsiString(st));
Memo1-›Lines-›Add("itoa -› "+AnsiString(st1));

}
Boba_spb вне форума  
Непрочитано 16.11.2012, 13:48  
Hives
Гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: Преобразование числа в строку STM32 Cocox

sanstan традиционный вопрос - гугл забанил? за минуту ищется эта непрописанная почему то в GCC библиотека для линковки "sprintf".
Hives вне форума  
Непрочитано 16.11.2012, 14:15  
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Преобразование числа в строку STM32 Cocox

Сообщение от Boba_spb Посмотреть сообщение
1. Prototype
char *itoa(int value, char *string, int radix);
2. itoa должна заканчивать строку нулевым байтом;
3. itoa(0,10,str) - не работает
4. itoa(-1,2,str) - не работает
Да, спасибо. Тоже проверил. Работает только для положительного инта, для нуля и отрицательного - нет. Т.е решение частичное, ограниченное, с проверкой на › 0 по входу? Так? Печально, все так хорошо начиналось..
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 19.11.2012, 11:02  
sanstan
Прописка
 
Регистрация: 06.03.2007
Сообщений: 144
Сказал спасибо: 22
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
sanstan на пути к лучшему
По умолчанию Re: Преобразование числа в строку STM32 Cocox

Hives sprintf не работает в COCOX. Либо я что-то замудрил.

Не знаете, почему функция strcat(str1,str2) выдает на индикаторе только первую часть полученой строки (str1) без (str2) ? ?
работает: strcat(str1,"primer");
не работает:
const char str2="primer";
strcat(str1,str2) ;

не работает:
char str2="primer";
strcat(str1,str2) ;

Последний раз редактировалось sanstan; 19.11.2012 в 11:19.
sanstan вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование числа vvkka Микроконтроллеры, АЦП, память и т.д 12 27.12.2011 01:44
Преобразование 2-х байтного числа в набор десятизначных цифр (Assembler,PIC) Opasif Микроконтроллеры, АЦП, память и т.д 6 29.04.2011 19:52
преобразование 16bit числа на Си (нужна помощь) Uz_Sleep_Walker Микроконтроллеры, АЦП, память и т.д 4 19.02.2010 15:49
как записать строку в массив? dimonbest Микроконтроллеры, АЦП, память и т.д 8 27.02.2008 12:18
преобразование числа для занесения его в регистр на PIC16F84 CERGEI1982 Микроконтроллеры, АЦП, память и т.д 9 11.01.2007 17:47


Часовой пояс GMT +4, время: 04:41.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot