Sprintf как настраивается для работы с разными usart ? Также интересно как при этом сможет работать с DMA usart ?
Составляю для себя библиотеку по usart с оптимальной работой в будущем,нацелен на модуль SIM900 или аналог его,было дело находил на али.
sprintf переопределение вывода
Сообщений 1 страница 7 из 7
Поделиться12017-10-29 05:14:28
Поделиться22017-10-29 12:01:53
CERGEI sprintf выводит в буфер. Там нечего настраивать. int sprintf(char *buf, const char *format, arg-list). Выводишь в нужную часть буфера через sprintf, потом как обычно посылаешь данные через ПДП. И еще функция вернет количество записанных байт в буфер.
Отредактировано MasterElectric (2017-10-29 12:08:09)
Поделиться32017-10-29 12:29:58
А точно,думал как то можно настроить напрямую вывод на нужный usart. А вот аргументы arg-list где можно про них почитать?
#pragma __printf_args
extern _ARMABI int sprintf(char * __restrict /*s*/, const char * __restrict /*format*/, ...) __attribute__((__nonnull__(1,2)));
/*
* is equivalent to fprintf, except that the argument s specifies an array
* into which the generated output is to be written, rather than to a
* stream. A null character is written at the end of the characters written;
* it is not counted as part of the returned sum.
* Returns: the number of characters written to the array, not counting the
* terminating null character.
*/Поделиться42017-10-29 12:32:41
А простите сообразил,пример из кода dosikus
temp = ( ((buf[1]&0x07)<<4)|(buf[0]>>4));
temp1=(buf[0]&0x0F);
temp1=((temp1<<1)+(temp1<<3));
temp1=(temp1>>4);
sprintf(txt,"%d.%d",temp,temp1);
//USART1_str( txt);
//USART1_str( "\r\n");Поделиться52017-11-20 22:37:58
а еще sprintf кушает 2кб памяти. Я стараюсь ее не использовать без необходимости.
Поделиться62017-11-21 01:18:36
Atomic-dm Ну если флеша минимум 16к, то это не так важно.
Поделиться72017-12-06 16:30:51
Ну в stm32f103c8t6 флэша 64 кб , так что это пыль.