14.10.2015, 09:40
|
#91
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: iar stm8
Сообщение от sergeyye
|
Как изменить эту функцию, чтобы сделать её универсальной для всех трёх массивов
|
Гугель, "двумерный массив как параметр функции".
Сообщение от akegor
|
Проще один, двухмерный, общий.
|
В данном случае может быть и легче, но в целом - не вариант.
Сообщение от Bill
|
Или нет?
|
Не совсем!
|
|
|
Сказали "Спасибо" STM32F0
|
|
|
14.10.2015, 10:06
|
#92
|
Гражданин KAZUS.RU
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
|
Re: iar stm8
Сообщение от STM32F0
|
Не совсем!
|
А что именно не так?
|
|
|
|
14.10.2015, 10:37
|
#93
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: iar stm8
Что-нить типа такого можно соорудить
PHP код:
|
#define Line_Length 32
char *ptr [ ] = {Screen1, Screen2, Skreen3}; void Load_Buffer (u8 Num_Screen, u8 Nun_Line) { char *pt = ptr[Num_Screen]; pt=&pt[ Num_Line * Line_Length ]; Buff = &Buffer_LCD [ 0 ]; // Начальный адрес буфера LCD. for ( u8 i=0; i ‹ Line_Length; i++ ) *Buff++ = *pt++; // Копировать кадр в буфер. }
|
|
|
|
Сказали "Спасибо" Boba_spb
|
|
|
16.10.2015, 09:50
|
#94
|
Временная регистрация
Регистрация: 12.03.2005
Адрес: Москва
Сообщений: 61
Сказал спасибо: 42
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: iar stm8
Спасибо всем, кто откликнулся.
В результате решил задачу оператором "switch". В указатель *Scrn грузится номер группы двумерных массивов (num_arr - номер группы), содержащий некоторое количество экранных меню, которые в свою очередь выбираются параметром Num_Screen.
PHP код:
|
void Load_Buffer (u8 num_arr, u8 Num_Screen)
{
switch (num_arr)
{
case (1): Scrn = &Screen [Num_Screen][0]; break; // Группа экранов главного меню.
case (2): Scrn = &DDS [Num_Screen][0]; // Группа экранов меню генератора.
}
Buff = &Buffer_LCD [0]; // Начальный адрес буфера LCD.
for (u8 i=0; i‹32; i++) *Buff++ = *Scrn++; // Копировать кадр в буфер.
}
|
Последний раз редактировалось sergeyye; 16.10.2015 в 10:37.
|
|
|
|
24.10.2015, 15:29
|
#95
|
Временная регистрация
Регистрация: 12.03.2005
Адрес: Москва
Сообщений: 61
Сказал спасибо: 42
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: iar stm8
Есть несколько массивов, располагающихся в памяти программ. Декларирую их так:
PHP код:
|
char __near DDS_Sq [8][32] = {
{" Continuous generation "}, {" Synchronous generation "},
{" Sweep generator "}, {" Exit "},
{"Synchronization: falling edge "}, {"Synchronization: rising edge "},
{" Swing band Low _______ Hz "}, {" Enter frequency 0 Hz "} };
|
IAR автоматически дублирует их в ОЗУ.
В чём смысл дубляжа? Чтобы быстрей читались?
Как запретить IAR это безобразие?
|
|
|
|
24.10.2015, 15:48
|
#96
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: iar stm8
Магическое const - расположить во флэш!
Сообщение от sergeyye
|
В чём смысл дубляжа? Чтобы быстрей читались?
|
Нет никакого дубляжа! Указали в ОЗУ, оно и легло в ОЗУ! Откуда тут дубляж?
Последний раз редактировалось STM32F0; 24.10.2015 в 15:50.
|
|
|
Сказали "Спасибо" STM32F0
|
|
|
24.10.2015, 16:13
|
#97
|
Временная регистрация
Регистрация: 12.03.2005
Адрес: Москва
Сообщений: 61
Сказал спасибо: 42
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: iar stm8
Сообщение от STM32F0
|
Нет никакого дубляжа!
|
Но в ОЗУ это попадает из ПЗУ. Стало быть дубляж.
По поводу квалификатора const забил себе в мозг, что он лишь не позволяет программе модифицировать задекларированную таким образом постоянную.
Спасибо!
Последний раз редактировалось sergeyye; 24.10.2015 в 16:28.
|
|
|
|
24.10.2015, 16:26
|
#98
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: iar stm8
Сообщение от sergeyye
|
Но в ОЗУ это попадает из ПЗУ. Стало быть дубляж.
|
Нет никакого дубляжа. Если переменная инициализируется определённым значением, то взять это значение из "ниоткуда" просто невозможно. Естественно, что переменная забивается значением из ROM. А как ещё иначе? Но это не дубляж, это тривиальная инициализация переменной.
Когда происходит инициализация переменной значением из EEPROM, никто же не истерит по поводу "дубляжа" и "неправильного" использования памяти?
Сообщение от sergeyye
|
По поводу квалификатора const забил себе в мозг, что он лишь не позволяет программе модифицировать задекларированную таким образом постоянную.
|
Обычно этим страдают адепты "большргр серого брата", там всё в ОЗУ.
В данном случае const - интерпретация Си для МК.
Последний раз редактировалось STM32F0; 24.10.2015 в 16:31.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо STM32F0 за это сообщение:
|
|
|
24.10.2015, 17:06
|
#99
|
Временная регистрация
Регистрация: 12.03.2005
Адрес: Москва
Сообщений: 61
Сказал спасибо: 42
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: iar stm8
Сообщение от STM32F0
|
Нет никакого дубляжа.
|
На том и порешим.
Спасибо за исчерпывающий ответ.
|
|
|
|
26.01.2016, 21:57
|
#100
|
Заблокирован
Регистрация: 12.09.2009
Сообщений: 420
Сказал спасибо: 148
Сказали Спасибо 166 раз(а) в 118 сообщении(ях)
|
Re: iar stm8
вот бесит этот стм. как посмотреть какой мк к st link-у подключен? в iar возможно увидеть?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:44.
|
|