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

 
 
> Купил книгу ARM7 вводный курс Тревор Мартин, Установил c прилаг. диска Keil mVision3v3.10b
ZanozM
сообщение Oct 31 2006, 16:30
Сообщение #1





Группа: Участник
Сообщений: 7
Регистрация: 9-05-06
Пользователь №: 16 918



Давно собирался купить, и сбылось.
Стал обладателем книги Миикроконтроллеры ARM7 Семейство LPC2000 Тревор Мартин.
Так же преобретена плата LPC2106 от OLIMEX c UART0 на борту.
Сразу скажу что на Си писать не приходилось.
Начал маленько разбираться с примерами из книги, поморгал лампочкой , а вот на Hello World застрял.
Вернее Hello World получился printf работает, а вот на scanf пишет вот такое.
MODULE: C:\KEIL\ARM\LIB\CAL.LIB (getchar)
DEFINED: serial.obj (serial)
*** WARNING L23: UNRESOLVED EXTERNAL SYMBOLS
Я так понял что библиотеки нужной нет?
Нажал About вылетело C Compiler CA.exe V2.00f , а в хелпе про какой то CARM говорится где его взять
ежели это и есть он, то куда библиотека CARM.lib затерялась, либо где ее родную взять.
Обьясните люди добрые, если можно то как в школе для Дибилоидов.
Спасибо за ответы.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Sarez
сообщение Nov 3 2006, 13:31
Сообщение #2


Частый гость
**

Группа: Новичок
Сообщений: 75
Регистрация: 17-08-06
Из: Минск
Пользователь №: 19 630



to zltigo

Спасибо Вам большое за ответ. Но к сожалению , опять не вышло....

"....Включать не надо, просто напишите свои и все....."
Уточните пожалуйста , что имеется в виду ?

Если имеется в виду отредактировать и сохранить в папке LIB файл Serial.s , содержащий putchar и getchar в том виде , которые мне необходимы , то это ни к чему не привело - на printf и scanf компилятор не ругается , но ничего и не выводится , т.е вероятно данные функции не работают..( ? )

Если описывать putchar и getchar непосредственно в коде основного файла :

#include <LPC21xx.H>
#include <stdio.h>

#define CR 0x0D

void UART0 (void); // Прототип функции инициализации
int putchar (int ch);
int getchar (void);

char my;

int main(void)
{

UART0 (); //Инициализация UART

printf("\n Введите значение \n" );
while(1)
{

scanf (" %d ", &my);

}

}

// Определения

void UART0 (void)
{
PINSEL0 = 0x05;

U0LCR = 0x80;
U0DLL = 0xC2;

U0DLM = 0x00;

U0LCR = 0x33;
U0FCR = 0x4F;

}

int putchar (int ch)
{

if (ch == '\n')
{
while (!(U0LSR & 0x20));
U0THR = CR; /* output CR */
}

while (!(U0LSR & 0x20));
return (U0THR = ch);

}

int getchar (void)
{

while (!(U0LSR & 0x01));
return (U0RBR);

}

То в этом случае получаем :

linking...
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
SYMBOL: putchar?A
MODULE: C:\KEIL\ARM\LIB\CAL.LIB (putchar)
DEFINED: main.obj (main)
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
SYMBOL: getchar?A
MODULE: C:\KEIL\ARM\LIB\CAL.LIB (getchar)
DEFINED: main.obj (main)
*** WARNING L23: UNRESOLVED EXTERNAL SYMBOLS
Program Size: data=1173 const=34 code=282
Target not created

Что и понятно , поскольку вероятно функции с такими же именами присутствуют в библиотеке и соответственно возникает конфликт. Или я не прав?

Если же я включаю в состав проекта файл Serial.c и описываю в нем функцию putchar , то printf работает без проблем. Описываю в этом же файле ( Serial.c ) функцию getchar , не вызывая при этом нигде в программе функции scanf - аналогично... ВЫЗЫВАЮ ФУНКЦИЮ SCANF -получаю:

compiling main.c...
linking...
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
SYMBOL: getchar?T
MODULE: C:\KEIL\ARM\LIB\CAL.LIB (getchar)
DEFINED: serial.obj (serial)
*** WARNING L23: UNRESOLVED EXTERNAL SYMBOLS
Program Size: data=1173 const=51 code=282
Target not created

Чувствую себя идиотом ( хотя возможно так и есть ) - но не могу понять , что я делаю неправильно...
Открываю книгу Тревора Мартина - читаю :

".... Для передачи и приема одиночных символов в/из стандартного устройства ( в данном случае UART ) в библиотеке STDIO используются две низкоуровневые функции . Эти функции называются putchar() и getchar() , а их исходный код находится в файле serial.c в директории lib. Если присоеденить этот файл к своему проекту , то библиотека , используемая компилятором по умолчанию , будет игнорироваться, а вместо нее будет использоваться код из файла serial.c . Таким образом, модифицируя подпрограммы putchar() и getchar(), можно перенаправить функции высокого уровня printf() и scanf() на любое устройство ввода/вывода, которое вы собираетесь использовать , такое как ЖК индикатор и клавиатура. ........."

Все вроде понятно... но :
1) В директории lib у меня НЕТ файла serial.c , а ТОЛЬКО файл putchar.c
2) Соответственно работает у меня только printf () .....

Обьясните , пожалуйста smile.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ZanozM   Купил книгу ARM7 вводный курс Тревор Мартин   Oct 31 2006, 16:30
- - zltigo   Цитата(ZanozM @ Oct 31 2006, 18:30) ...ge...   Oct 31 2006, 20:28
- - ZanozM   Да вроде getchar(); работает нормально. Одиночный ...   Oct 31 2006, 21:23
- - ZanozM   Сейчас скачиваю Keil Evaluation MDK303A.EXE с его ...   Oct 31 2006, 21:45
- - VAI   адаптация по имени клизьма здесь http://www.caxapa...   Nov 1 2006, 06:08
- - Sarez   Здравствуйте! В продолжение темы... Повторял о...   Nov 2 2006, 10:26
|- - zltigo   Цитата(Sarez @ Nov 2 2006, 12:26) то я вк...   Nov 2 2006, 13:21
- - ZanozM   Добрый вечер всем. Большое спасибо VAI, за ссылки ...   Nov 2 2006, 16:08
- - Dr.Craft   Здравствуйте, я тоже выкачал этот кейл, подлечил, ...   Nov 2 2006, 16:32
|- - zltigo   Цитата(Sarez @ Nov 3 2006, 15:31) Обьясни...   Nov 3 2006, 13:55
- - Sarez   Данная функция определена обычно : extern int g...   Nov 3 2006, 14:07
|- - zltigo   Цитата(Sarez @ Nov 3 2006, 16:07) Файл st...   Nov 3 2006, 14:27
- - Sarez   Использую компилятор Keil. Файл stdio.h смотрел из...   Nov 3 2006, 15:14
|- - zltigo   Цитата(Sarez @ Nov 3 2006, 17:14) в остал...   Nov 3 2006, 15:34
- - Sarez   "Рабочих там нет. Только заглушки, или хуки д...   Nov 3 2006, 15:51
|- - zltigo   Цитата(Sarez @ Nov 3 2006, 17:51) Тогда ч...   Nov 3 2006, 15:54
- - Sarez   Ясно. Будем проводить розыскные мероприятия. С...   Nov 3 2006, 16:02
- - leva87   А может ли кто-нибудь выкинуть примеры с диска из ...   Mar 27 2009, 22:35


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

 


RSS Текстовая версия Сейчас: 9th August 2025 - 02:51
Рейтинг@Mail.ru


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