Вы бы лучше не тезис усвоили, а контекст.
Мое хамство ВСЕГДА имеет разумное обоснование.
И точно не связано с комплексом неполноценности.
В отличии от...
Вы бы лучше не тезис усвоили, а контекст.
Безусловно. Было бы странно спрашивать у вас разрешение.ARV писал(а): Сб июн 27, 2026 20:43:12 Я так понимаю, на должность арбитра обоснованного или необоснованного хамства вы сами себя назначили
Это НЕ так.ARV писал(а): Сб июн 27, 2026 21:18:59 Наверное, вы не заметили, что задавать вопросы на этом форуме нет никакого смысла
это так, просто рассмотреть это мешает ваше ЧСВ. Вопрос без ответа - это и я понимаю, вопрос с хамским ответом - совсем другое дело.КРАМ писал(а): Сб июн 27, 2026 21:21:33 Это НЕ так.
Но задавая вопрос, нужно отдавать себе отчет о компетенциях этого форума. Иногда вопрос остается без ответа и я понимаю почему.
Причем тут вы?
Все соглашались с этими правилами и обязались их выполнять. Значит, все их нарушили. Всем, похоже, плевать, и модераторам тоже.Кот писал(а):Мяу, товарищи! Настоятельно рекомендую всем ознакомиться с нижеследующими высказываниями.
Данные пункты обязательны к выполнению всеми участниками Форума.
Итак:
Общие положения.
1. Данные Правила созданы не для того, чтобы ограничить ваши права, а для того, чтобы вы своими действиями не ограничивали права других посетителей Форума.
2. Форум - место для приятного и полезного общения. Поэтому вежливость и уважительное отношение к собеседнику является совершенно необходимым требованием для посещения нашего форума. Даже в том случае, если заданный вопрос кажется вам неверотяно тупым, вспомните себя начинающего - скорее всего, ваши вопросы были еще тупее. Каждый посетитель нашего Форума - гость, которому мы всегда рады, однако помните, что и у гостей есть некоторые обязанности.
3. Наш Форум логически делится на две части - техническую и все остальное. К технической части относятся все разделы форума, за исключением рубрики "Посиделки у Кота", относящейся ко всему остальному.
Модерирование в технических форумах производится жестко и строго на основании данных Правил. Модерирование остальных разделов форума проводится гораздо мягче, а в "МЯЯЯУ!" оно практически отсутствует. Там вам, скорее всего, не дадут разместить изображение некоторых частей тела в голом виде, но виртуально набить морду своему оппоненту - всегда пожалуйста.
Правила
2.3 Недопустимо появление в сообщениях оскорблений в адрес посетителей форума...
2.4 Ответы на вопросы должны быть именно ответами, а не рассуждениями на общие темы.
2.8 Не допускается обсуждение личных вопросов в технических форумах. Для данных целей необходимо использовать ЛС.
7. Написав сообщение в любом разделе Форума и нажав кнопку "Отправить" посетитель соглашается с данными правилами и обязуется выполнять их в полном объеме.
можно подумать, такая встреча в чем-то противоречит подписи или аватарке
Таких хЕрургов нам не нужно.
Всегда хорошо иметь коллектив терпил. Вы у них не начальник ?КРАМ писал(а): Сб июн 27, 2026 21:14:56 Коллектив к моему такому хамству относится с пониманием. Значит моя оценка верна.![]()
Строго говоря нет, не квалифицирует. Прохожий покормил бездомное животное, а попрошайка, в переходе метро, получил дулю. Как бы вы квалифицировали такого человека с точки зрения попрошайки ?ARV писал(а): Сб июн 27, 2026 21:31:21 ...помощь квалифицирует человека лучше любых других регалий, и тут помощников нет....
Ваша правда. У нейросетей нет опыта.
Смешно.ARV писал(а): Сб июн 27, 2026 19:17:35 И куб с халом позволяют в два клика сделать то, что "Аксакалы" смогли сделать после больших усилий.
Давно бы спросили у неросети или вам пообщаться ?ARV писал(а): Сб июн 27, 2026 06:38:57 Вы так и не сказали, будет memcpy работать с erprom или нет...
gemeni писал(а): Прямой ответ: Нет, функцию memcpy использовать для записи в EEPROM или Flash-память в микроконтроллерах STM32 нельзя.
Хотя memcpy — стандартная функция языка C для копирования блоков памяти, она работает только с памятью, которая линейно отображена в адресное пространство и доступна для операции Read/Write (чтение/запись) с помощью обычных указателей. Это работает для RAM, но не для энергонезависимой памяти.
Почему memcpy не работает для записи?
Микроконтроллеры STM32 (как и подавляющее большинство других) устроены так, что энергонезависимая память (внутренняя Flash, которую часто используют вместо EEPROM, или внешняя EEPROM) требует выполнения строгого алгоритма для изменения данных.
Как видно на архитектурных схемах, путь данных к RAM и путь к Flash/EEPROM — это два разных интерфейса:
RAM: Позволяет мгновенную запись через шину данных.
Flash/EEPROM: Требует прохождения через контроллер памяти, который «блокирует» запись, требует «разблокировки» (Unlock), «стирания» (Erase) перед записью и определенного времени на программирование каждого слова (Program).
memcpy — это просто цикл чтения-записи. Если вы попытаетесь сделать memcpy(адрес_EEPROM, данные, размер), процессор просто попытается записать данные по адресу, который либо защищен от записи, либо проигнорирует эту попытку, так как контроллер памяти не переведен в режим записи.
Нюансы использования
1. Чтение данных
Для чтения данных из внутренней Flash-памяти STM32 memcpy можно использовать. Поскольку Flash в STM32 отображена в адресное пространство процессора (Memory Mapped), вы можете читать её как обычный массив:
2. Запись данных (внутренняя Flash)Код: Выделить всё
C // Это будет работать, так как чтение Flash аналогично чтению RAM memcpy(my_ram_buffer, (uint8_t*)FLASH_ADDRESS, size);
Для записи вам необходимо использовать специальные функции из библиотеки HAL (Hardware Abstraction Layer). Типичный процесс выглядит так:
// 2. Стирание страницы (обязательно для Flash)Код: Выделить всё
C HAL_FLASH_Unlock(); // 1. Разблокировка доступа к контроллеру Flash// 3. Программирование данных (только через функцию HAL)Код: Выделить всё
FLASH_EraseInitTypeDef eraseConfig = { ... }; HAL_FLASHEx_Erase(&eraseConfig, &pageError);HКод: Выделить всё
HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, address, data);// 4. БлокировкаКод: Выделить всё
AL_FLASH_Lock();
3. Внешняя EEPROM (I2C / SPI)
Если вы используете внешнюю микросхему EEPROM (например, серии 24LCxx), то memcpy к ней вообще не применим, так как она не находится в адресном пространстве процессора. Она подключена по цифровому интерфейсу (I2C или SPI).
Вам нужно использовать библиотеки HAL для работы с периферией (например, HAL_I2C_Master_Transmit).
Вы формируете пакет данных, который отправляется в EEPROM по проводам.
Резюме
Использование memcpy для записи в EEPROM приведет либо к ошибке шины (HardFault), если память защищена от записи, либо (в лучшем случае) просто ничего не произойдет, и данные не сохранятся. Для записи всегда используйте API, предоставляемое производителем микроконтроллера (HAL/LL) или драйверы для внешних интерфейсов.