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

 
 
> stm32 Keil
Kenshin
сообщение Apr 8 2013, 10:43
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 8-06-06
Из: Тула
Пользователь №: 17 887



микроконтроллер STM32 компилятор Keil 4.70

Есть два класса t_data и t_data1, отличаются только наличием конструктора. При инициализации класса при отсутствии конструктора данные пишутся во flash, при добавлении конструктора все пишется в оперативную память. Атрибут __attribute__((const)) перед конструктором не помогает, как константу его объявить нельзя.

CODE
class t_data {
public :
const uint32_t value;
uint32_t Get () const {return value;};
void Init (void) const {};
t_data (const uint32_t v) : value(v) {Init();};
};


class t_data1 {
public :
uint32_t value;
uint32_t Get () const {return value;};
void Init (void) const {};
};

const t_data data (0x1234);
const t_data1 data1 = {0x1234};

const t_data * pointer = &data; // 0x2000xxxx - value записалось в RAM
const t_data1 * pointer1 = &data1; // 0x0800xxxx - value записалось во flash


Как записать объект проинициализированный с помощью конструктора в flash память мк?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SChe
сообщение Apr 9 2013, 21:08
Сообщение #2





Группа: Новичок
Сообщений: 3
Регистрация: 8-04-13
Пользователь №: 76 408



На счет конструктора копирования все верно, его стоит объявить явно и копировать значения порта, а не конфигурацию объекта (как по умолчанию), просто руки еще не дошли.

Если сделать private конструктор по данному примеру, то выполняются два разных static конструктора указанные явно, это никак не укажет компилятору куда записать класс. И данная запись имеет смысл, только если очень нужно получить одинаковые имена классов (перегрузка конструкторов с одинаковыми входными данными). На мой взгляд, намного лучше с данной задачей справилось бы наследование+полиморфизм, да хотя классы объявлять разные, кода также минимум и более привычная форма объявления.

Сообщение отредактировал SChe - Apr 9 2013, 21:13
Go to the top of the page
 
+Quote Post



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

 


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


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