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

 
 
> Массив указателей на функции расположеный во флеше, Можно ли это сделать и как ???
DeXteR
сообщение Jul 31 2006, 13:32
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 319
Регистрация: 2-08-05
Из: Одесса
Пользователь №: 7 287



Добрый день

Хочу расположить указатели на функции во флеш
в определенном порядке

И иметь доступ к ним как к массиву - по индексу

Пытаюсь написать вот такой кусочек кода

Код
static void F1(void)
{
NUM++;
NUM2--;
}

__flash const void(*Ps[4])(void) =
{
  F1,
  0,
  0,
  0
};


IAR ругает меня

Warning[Pe815]: type qualifier on return type is meaningless C:\MODBUS\IAR\main.c 21
Error[Pe144]: a value of type "void (*)()" cannot be used to initialize an entity of type "void const (*__flash)()" C:\MODBUS\IAR\main.c 23

Если __flash const убрать то все компилируется нормально

Что сдесь нетак ??

Помогите пожалуйста разобраться

Сообщение отредактировал DeXteR - Jul 31 2006, 13:34
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
DeXteR
сообщение Jul 31 2006, 14:25
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 319
Регистрация: 2-08-05
Из: Одесса
Пользователь №: 7 287



Ура

Все заработало

__flash void(*Ps[4])(void) =
{
F1,
0,
0,
0
};

Убрал конст
Go to the top of the page
 
+Quote Post
prottoss
сообщение Aug 1 2006, 07:53
Сообщение #3


Гуру
******

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



Цитата(DeXteR @ Jul 31 2006, 22:25) *
Ура
Это все, конечно, здорово. Но, если функций не так уж и много, то лучше сделать цикл switch...case. Вы ведь хотите добиться бОльшей скорости? Вы видели в ассемблере, КАК происходит прыжок по указателю на функцию?.. Кроме того, когда количество функций в цикле switch...case много (сколько не знаю), компилятор IAR сам формирует таблицу с адресами функций. Вот так то.


--------------------
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 19:25
Рейтинг@Mail.ru


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