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

 
 
> Помогите ламеру с синтаксисом в IAR, #define ABC *(unsigned int *)0xFFFFF000
LeoLabs
сообщение Jun 1 2006, 07:12
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 47
Регистрация: 5-03-05
Пользователь №: 3 082



Помогите разобраться - не пойму что значат следующие строки. Если не сложно поподробнее.

Код
#define ABC  *(unsigned int *)0xFFFFF000

#define EXTERNAL_ADDR 0x00800000
#define RAM_COMM_LBYTE ((unsigned char *)(EXTERNAL_ADDR+(0x0000<<1)))
#define RAM_COMM_HBYTE (*(unsigned char *)(EXTERNAL_ADDR+(0x0300<<1)))

я так понимаю это для работы с внешним устройством. smile.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 5)
forever failure
сообщение Jun 1 2006, 07:46
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 256
Регистрация: 6-03-05
Из: Екатеринбург
Пользователь №: 3 112



ну это в коде будет
ABS = 0x0001;
или
int i = ABS;
А вообще
#define ABC *(unsigned int *)0xFFFFF000
значит, что ABC - переменная целого типа по адресу 0xFFFFF000.
А если для работы с внешним устройством, следовало бы её объявить как
#define ABC *(unsigned int volatile *)0xFFFFF000

Сообщение отредактировал forever failure - Jun 1 2006, 07:48
Go to the top of the page
 
+Quote Post
sensor_ua
сообщение Jun 1 2006, 10:17
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387



#define ABC *(unsigned int *)0xFFFFF000
можно понимать как указатель на ячейку памяти размером типа int, расположенную по адресу 0xFFFFF000, т.е. фактически именование ячейки. Не есть переменная, но используется как таковая. При наличии чтения-модификации-записи у соответствующих ячеек может быть использована как обычная переменная указанного типа. Приведение типа при использовании в выражениях может вызвать вопросы (к компилятору и головеwink.gif.

#define EXTERNAL_ADDR 0x00800000
#define RAM_COMM_HBYTE (*(unsigned char *)(EXTERNAL_ADDR+(0x0300<<1)))
Фактически то же - можно понимать как указатель на ячейку памяти размером типа unsigned char, расположенную по адресу EXTERNAL_ADDR+(0x0300<<1), т.е. по адресу 0x00800000+(0x0300<<1). Также есть именование ячейки памяти.


--------------------
aka Vit
Go to the top of the page
 
+Quote Post
LeoLabs
сообщение Jun 1 2006, 10:19
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 47
Регистрация: 5-03-05
Пользователь №: 3 082



А вот еще вопросик. smile.gif (ох и глуп же я :-[)

Код
state=*(unsigned int*)p+(DatInfo[complect]?0x0200u:0)

Что значит вопрос "?" в выражении, а также буква u "0x0200u" и ":" ?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 1 2006, 10:25
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(LeoLabs @ Jun 1 2006, 13:19) *
Что значит вопрос "?" в выражении, а также буква u "0x0200u" и ":" ?

А не взять-ли Вам ЛЮБУЮ книжку по 'C' для начала, а то ведь чем дальше в лес, тем больше дров.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
LeoLabs
сообщение Jun 1 2006, 10:32
Сообщение #6


Участник
*

Группа: Новичок
Сообщений: 47
Регистрация: 5-03-05
Пользователь №: 3 082



Цитата(zltigo @ Jun 1 2006, 17:25) *
Цитата(LeoLabs @ Jun 1 2006, 13:19) *

Что значит вопрос "?" в выражении, а также буква u "0x0200u" и ":" ?

А не взять-ли Вам ЛЮБУЮ книжку по 'C' для начала, а то ведь чем дальше в лес, тем больше дров.

Пардон, туплю, вот и нашел про ?:, теперь ище про u smile.gif. Спасибо все откликнувшимся.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 22:46
Рейтинг@Mail.ru


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