[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Нужно сравнить строчку в буфере со многими образцами строчек. AVR8535, ОЗУ маловато, и памяти программ маловато.
E-mail:
info@telesys.ru
Пишу:
flash char Str_ABC[3] = {'A','B','C'}; //Это пример.
...(ещё строчки)
flash char Str_KLM[3] = {'K','L','M'};
Объявляю массивы:
char InBuf[80], CmpBuf[10];
Заполняю массив для сравнения: (unsigned char i,n, Test; - переменные):
n=3; for (i=0;i
Test=CompareBuf(&InBuf[0],&CmpBuf[0],n);
...И так много раз. И каждый раз заполняю массив:
n=3; for (i=0;i
FillBuf(&CmpBuf[0],(flash*) & Str_KLM[0],n); //ЭТО НЕ РАБОТАЕТ.
Должна быть подпрограмма FillBuf, которой надо задать только адреса двух массивов, один из которых - в флеш-памяти программ. А то очень уж неэкономно, если компилятор генерит каждый раз новый код для каждого цикла вида:
n=3; for (i=0;i
На ассемблере то всё просто и понятно, а в IAR C не знаю, как объявить указатель на флеш-массив.
Ответы