реклама на сайте
подробности

 
 
> Как заставить в GCC printf выдавать в UART
Alexey75
сообщение Dec 14 2007, 07:45
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 25
Регистрация: 10-04-06
Пользователь №: 15 981



Хочу сделать чтобы функции, выводящие в стандартный вывод, выдавали например в UART.
Но пока не могу найти какие функции в GCC нужно определить или переопределить.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
v_shamaev
сообщение Dec 14 2007, 07:58
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 304
Регистрация: 5-07-04
Из: г. Москва
Пользователь №: 259



Цитата(Alexey75 @ Dec 14 2007, 10:45) *
Хочу сделать чтобы функции, выводящие в стандартный вывод, выдавали например в UART.
Но пока не могу найти какие функции в GCC нужно определить или переопределить.

А причем здесь GCC? Printf выводит в стандартный поток вывода, а куда он назначен - зависит от системы, командной строки и т.д. Дистанция может быть большой.


--------------------
Водку пьянствовать и безобразия нарушать!!!
Go to the top of the page
 
+Quote Post
Alexey75
сообщение Dec 14 2007, 08:16
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 25
Регистрация: 10-04-06
Пользователь №: 15 981



Цитата(v_shamaev @ Dec 14 2007, 10:58) *
А причем здесь GCC? Printf выводит в стандартный поток вывода, а куда он назначен - зависит от системы, командной строки и т.д. Дистанция может быть большой.


Системы нет, программа пишется для контроллера, хочу для отладки через printf выводить сообщения в UART
Go to the top of the page
 
+Quote Post
v_shamaev
сообщение Dec 14 2007, 09:10
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 304
Регистрация: 5-07-04
Из: г. Москва
Пользователь №: 259



Цитата(Alexey75 @ Dec 14 2007, 11:16) *
Системы нет, программа пишется для контроллера, хочу для отладки через printf выводить сообщения в UART

Понятно. Тогда библиотеки и sturtup править надо - в т.ч. и сам printf - убрать избыточность. Насколько помню, выводом занимается putc().


--------------------
Водку пьянствовать и безобразия нарушать!!!
Go to the top of the page
 
+Quote Post
klen
сообщение Dec 14 2007, 09:57
Сообщение #5


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



ниче править не нада.
определи функцию

int putchar(int ch)
{
while (!(U1LSR & 0x20));
return (U1THR = ch) ;
}
//----------------------------------------------------------
int getchar(void)
{
while (!(U1LSR & 0x01));
return (U1RBR) ;
}

у меня все работает.
после вызовы scanf и printf будут сосать байты через UART1 и форматироваь ввод/вывод.
поскольку printf медленная в ней действительно можно выкинуть всякую хрень (например плавающую запятую )и сделать из нее "легкую" версию printf,
Как пример возмите исходники avr-libc, там она уже кастированая.
Go to the top of the page
 
+Quote Post
alexander55
сообщение Dec 14 2007, 10:06
Сообщение #6


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(klen @ Dec 14 2007, 12:57) *
int putchar(int ch)
{
while (!(U1LSR & 0x20));
return (U1THR = ch) ;
}
//----------------------------------------------------------
int getchar(void)
{
while (!(U1LSR & 0x01));
return (U1RBR) ;
}

У меня аналогичное определение. biggrin.gif
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st June 2025 - 12:12
Рейтинг@Mail.ru


Страница сгенерированна за 1.10931 секунд с 7
ELECTRONIX ©2004-2016