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

 
 
> Массив полей в структуре, можно ли такое сделать
ViKo
сообщение Oct 13 2010, 12:32
Сообщение #1


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Для работы с битами переменных способом bit-band в Cortex-M3 можно использовать структуру, где биты описаны в виде однобитовых полей. Например, так:
Код
typedef struct {
  int b0: 1;
  int b1: 1;
  int b2: 1;
  int b3: 1;
  ...
} bb_t __attribute__((bitband));

Можно ли заменить описание этих полей массивом внутри структуры, чтобы не набирать вручную все 32 бита?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
vmp
сообщение Oct 15 2010, 06:39
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 20-01-05
Из: Зеленоград
Пользователь №: 2 070



Цитата(ViKo @ Oct 13 2010, 16:32) *
Можно ли заменить описание этих полей массивом внутри структуры, чтобы не набирать вручную все 32 бита?

А что мешает объявить массив DWORD'ов в bit-bang регионе?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Oct 15 2010, 07:25
Сообщение #3


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(vmp @ Oct 15 2010, 09:39) *
А что мешает объявить массив DWORD'ов в bit-bang регионе?

Компилятор Keil smile.gif
объявить-то можно, но обращаться к ним методом bit-band компилятор не будет. Только к однобитовым полям в структуре. Которая, кстати, не обязательно должна состоять из однобитовых полей, можно иметь и любые другие типы, и int32_t, естественно. К остальным членам структуры будет обычное обращение по адресам bit-band региона. А к однобитовым - по адресам из bit-band alias региона.
Скорее всего, такое ограничение введено, чтобы ограничить доступ к переменной единственно возможным способом. Видимо, так компилятору "легче жить".
Go to the top of the page
 
+Quote Post
ReAl
сообщение Oct 15 2010, 07:39
Сообщение #4


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(ViKo @ Oct 15 2010, 10:25) *
К остальным членам структуры будет обычное обращение по адресам bit-band региона. А к однобитовым - по адресам из bit-band alias региона.
...
Видимо, так компилятору "легче жить".
Видимо. Так как если доступ и так уже любой, обычная работа с другими полями есть, то достаточно сделать атрибут для размещения в определёной области памяти распространяющимся на любой охватывающий объект и всё.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post



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

 


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


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