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

 
 
> Раздельная инициализация константного массива
ArtemKAD
сообщение Aug 8 2012, 10:53
Сообщение #1


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

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Похоже у меня прогрессирует склероз. sad.gif
Не могу вспомнить и найти как можно инициализировать конкретные ячейки массива в флаш-памяти.
Т.е. не забивать все сразу
__root __flash const char __flash *in_name_table[] = { DoorSw, DriverSw, HoodSw, TrunkSw};

А сперва объявить
__root __flash const char __flash *in_name_table[4];

а потом указать содержимое каждой конкретной ячейки по ее номеру.

in_name_table[0]=DoorSw;
in_name_table[1]=DriverSw;
in_name_table[2]=HoodSw;
in_name_table[3]=TrunkSw;



Как собственно заставить IAR понять что я от него хочу?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SSerge
сообщение Aug 8 2012, 12:52
Сообщение #2


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

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



Конкретные ячейки инициализировать можно таким способом
Код
__root __flash const char __flash *in_name_table[] =  { [2]=HoodSw, [3]=TrunkSw, [0]=DoorSw, [1]=DriverSw};

но только одновременно с объявлением переменной, потом указать уже не получится, нет таких средств.


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Aug 8 2012, 13:48
Сообщение #3


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

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Цитата(SSerge @ Aug 8 2012, 15:52) *
Конкретные ячейки инициализировать можно таким способом
Код
__root __flash const char __flash *in_name_table[] =  { [2]=HoodSw, [3]=TrunkSw, [0]=DoorSw, [1]=DriverSw};

но только одновременно с объявлением переменной, потом указать уже не получится, нет таких средств.


О, большое спасибо! Это хоть и не совсем то что я хотел, но с этим уже можно работать.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Aug 8 2012, 13:52
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(ArtemKAD @ Aug 8 2012, 19:48) *
О, большое спасибо!

Рад за Вас. На самом деле криво объявлять
Код
__root __flash const char __flash *in_name_table[] =  { DoorSw, DriverSw, HoodSw, TrunkSw};

На много лучше
Код
__root __flash const char __flash *in_name_table[] =  { [2]=HoodSw, [3]=TrunkSw, [0]=DoorSw, [1]=DriverSw};


--------------------
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Aug 8 2012, 14:38
Сообщение #5


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

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Цитата(prottoss @ Aug 8 2012, 16:52) *
На много лучше
Код
__root __flash const char __flash *in_name_table[] =  { [2]=HoodSw, [3]=TrunkSw, [0]=DoorSw, [1]=DriverSw};


Если заметить 2,3,0,1 на #define - объявленные константы, для меня этот вариант становится действительно намного лучше.

Цитата
элемент используется 1 раз при запуске задачи и дальше не нужен.


Элемент используется КАЖДЫЙ раз при запуске задачи. А задача запускается каждый раз, когда диспетчер доходит до активного байта статуса задачи во втором массиве.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Aug 8 2012, 14:44
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(ArtemKAD @ Aug 8 2012, 17:38) *
Элемент используется КАЖДЫЙ раз при запуске задачи.

Согласен.

Цитата(ArtemKAD @ Aug 8 2012, 17:38) *
А задача запускается каждый раз, когда диспетчер доходит до активного байта статуса задачи во втором массиве.

Получается что задача запускается всегда сначала? Адрес-то константный.
Зачем такое может понадобится?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ArtemKAD   Раздельная инициализация константного массива   Aug 8 2012, 10:53
- - Непомнящий Евгений   __flash char a1 = 1; __flash char a2 = 2; __flash ...   Aug 8 2012, 10:58
- - prottoss   Так не возможно. В первом случае Вы объявляете кон...   Aug 8 2012, 10:59
- - ArtemKAD   Цитата__flash char a1 = 1; __flash char a2 = 2; __...   Aug 8 2012, 11:16
|- - prottoss   Цитата(ArtemKAD @ Aug 8 2012, 17:16) Я зн...   Aug 8 2012, 12:57
||- - prottoss   Цитата(ArtemKAD @ Aug 8 2012, 20:38) Если...   Aug 8 2012, 14:53
||- - ArtemKAD   Цитата(prottoss @ Aug 8 2012, 17:53) Код....   Aug 8 2012, 15:30
||- - prottoss   Цитата(ArtemKAD @ Aug 8 2012, 21:30) Так,...   Aug 8 2012, 15:36
|- - jcxz   Цитата(SSerge @ Aug 8 2012, 18:52) Конкре...   Aug 10 2012, 17:01
|- - SSerge   Цитата(jcxz @ Aug 11 2012, 00:01) Очень и...   Aug 10 2012, 20:46
|- - _Артём_   Цитата(SSerge @ Aug 10 2012, 23:46) Ну, д...   Aug 10 2012, 21:35
- - IgorKossak   Только я здесь вижу лишний __flash?   Aug 8 2012, 13:54
- - ArtemKAD   ЦитатаМне все таки не понятна Ваша идея: зачем сна...   Aug 8 2012, 14:15
|- - _Артём_   Цитата(ArtemKAD @ Aug 8 2012, 17:15) Перв...   Aug 8 2012, 14:20
|- - ReAl   Цитата(ArtemKAD @ Aug 8 2012, 17:15) В фл...   Aug 8 2012, 18:30
- - ArtemKAD   ЦитатаПолучается что задача запускается всегда сна...   Aug 8 2012, 15:09
|- - _Артём_   Цитата(ArtemKAD @ Aug 8 2012, 18:09) Да в...   Aug 8 2012, 15:29
- - ArtemKAD   ЦитатаЧтобы не настолько в голову, можно как-то та...   Aug 9 2012, 05:55
- - ArtemKAD   ЗЫ. Кстати, для обламывания головы можно добавить ...   Aug 10 2012, 06:43
- - ReAl   В С++, увы, этого нет :-( и прочие смайлики, утир...   Aug 11 2012, 07:34
|- - _Артём_   Цитата(ReAl @ Aug 11 2012, 10:34) В С++,...   Aug 11 2012, 12:18
- - GetSmart   Спасибо начитанным людям. Подсказали как в констан...   Sep 2 2012, 08:16


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

 


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


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