24.11.2010, 18:19
|
|
Частый гость
Регистрация: 24.03.2010
Сообщений: 25
Сказал спасибо: 6
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Сообщение от kison
|
А сам Си файл uart.c в проект подключен?
|
Подключены заголовки Uart.h
Подключение Uart.c не дает эффекта
Приложил файлы проекта
Последний раз редактировалось nekolex; 24.11.2010 в 18:27.
|
|
|
|
24.11.2010, 18:26
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Сообщение от ut1wpr
|
В обеих случаях компилятор породит одинаковый код, и не будет ворнинга. Не путайте с ошибками - это всего лишь предупреждение.
|
Вообще то это явная ошибка.
Рассмотрим прототипы:
Код:
|
void UARTSend(char *c);
char UARTGet(); |
Для UARTSend требуется указатель, а имеется char. Это тоже целое и компилятор делает из него указатель. И именно о этом выдает предупреждение. Например приняв символ '0' мы отправим указатель типа такого ((char*)0x00000030) в функцию UARTSend. Она возьмет с этого АДРЕСА значение и отправит его по UART. Что там сложно предугадать. Но не думаю что совпадет с '0'
|
|
|
|
24.11.2010, 18:32
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Сообщение от kison
|
Вообще то это явная ошибка.
Рассмотрим прототипы:
Код:
|
void UARTSend(char *c);
char UARTGet(); |
Для UARTSend требуется указатель, а имеется char. Это тоже целое и компилятор делает из него указатель. И именно о этом выдает предупреждение. Например приняв символ '0' мы отправим указатель типа такого ((char*)0x00000030) в функцию UARTSend. Она возьмет с этого АДРЕСА значение и отправит его по UART. Что там сложно предугадать. Но не думаю что совпадет с '0'
|
Спасибо. Вы правы. Надо было в моем примере подставлять адрес переменной, а не лезть с кастингами... Извините за ошибку.
|
|
|
|
24.11.2010, 18:47
|
|
Частый гость
Регистрация: 24.03.2010
Сообщений: 25
Сказал спасибо: 6
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Сообщение от nekolex
|
при вызове UART_Init выдает: undefined reference to `UART_Init'
|
- остался открытым. Надеюсь на помощь.
|
|
|
|
24.11.2010, 19:00
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Сообщение от nekolex
|
остался открытым.
|
Вроде просто уже должно быть. Измените функцию отправки
Код:
|
void UARTSend(char c)
{
LPC_UART-›THR = c;
while(!(LPC_UART-›LSR & TEMT)){}
} |
И вот Вам эхо
Код:
|
while(1)
{
UARTSend(UARTGet());
} |
Способ этот для "поиграться", в реальных программах поллинг использовать не принято. Загрузка процессора = 100%, а все что он способен при этом делать - в пинг-понг играть
|
|
|
|
24.11.2010, 19:07
|
|
Частый гость
Регистрация: 24.03.2010
Сообщений: 25
Сказал спасибо: 6
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Сообщение от kison
|
Вроде просто уже должно быть. Измените функцию отправки
|
Изменено, если вам не трудно, посмотрите приложение поста #681
Перестала работать инициализация UARTInit =(
|
|
|
|
24.11.2010, 19:32
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Сообщение от nekolex
|
Перестала работать инициализация UARTInit =(
|
Что значит - перестала работать?
|
|
|
|
24.11.2010, 20:10
|
|
Частый гость
Регистрация: 24.03.2010
Сообщений: 25
Сказал спасибо: 6
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
То есть я взял стандартный пример для работы c UART. В этом примере все работало, после того как я добавил инклуд stdio.h и реализовал следующие функции:
// ***********************
void UART_Sendchar(char c);
// ***********************
char UART_Getchar();
// ***********************
void UART_PrintString(char *pcString);
сделал перенаправление вызовов( для работы с printf()) в файле retarget.c
int __write (int iFileHandle, char *pcBuffer, int iLength)
int __readc (void)
После этого перестали работать UARTInit и пара функций из retarget.c c такой же ошибкой как в UARTInit:
undefined reference to ‹название функции›
Последний раз редактировалось nekolex; 24.11.2010 в 20:15.
|
|
|
|
24.11.2010, 20:51
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Разбирайтесь со своей IDE. undefined reference - значит в файлах включенных в проект такой функции нет. Добавьте файл с этими функциями снова. Если он и так есть - удалите, затем добавьте. Почему это происходит я не знаю.
|
|
|
|
25.11.2010, 11:07
|
|
Частый гость
Регистрация: 24.03.2010
Сообщений: 25
Сказал спасибо: 6
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Сообщение от kison
|
Добавьте файл с этими функциями снова. Если он и так есть - удалите, затем добавьте.
|
Ничего из этого не помогает=(
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:39.
|
|