Перейти к содержанию
    

Подскажите по записи флэш

3 часа назад, Darth Vader сказал:

Смысл был сделать универсальный код, чтобы корректно работал в том числе и на М0/М0+/М1, и не приводил к хардфолту от невыровненного доступа к данным.

Как я уже написал: использование указателя на упакованные данные заставляет компилятор генерить код, правильно работающий как на CPU с поддержкой невыравненного доступа, так и без оной. И без нагромождения тяжеловесных конструкций с memcpy().

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

20 часов назад, jcxz сказал:
31.05.2021 в 20:49, Darth Vader сказал:

while(FLASH->SR & FLASH_SR_BSY1);

в корректно написанных программах лучше не делать. Разве что в каком-нить учебном коде (примерах) так сойдёт.

С этим что не так? Как надо правильно мониторить состояние флага события в регистре?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 часа назад, Darth Vader сказал:

С этим что не так? Как надо правильно мониторить состояние флага события в регистре?

Мониторите, конечно, правильно, с точки зрения логики. Однако,
    а) процессы записи и (особенно) стирания далеко не быстрые, пропускаете кучу событий; а у меня бы еще внешний WDT сбросил систему, например;
    б) бесконечные циклы ожидания при поллинге флагов периферии крайне желательно заменять циклами с тем или иным механизмом таймаутов;
    в) по причинам, описанным в п. а) и б) я (у себя) работаю по прерываниям, так проще обслуживать состояния ошибок, и за BSY не надо следить;
    г) но вообще, при работе с IAP Flash-памяти, я бы рекомендовал запускаться из ОЗУ. Хотя, может, в каких-то случаях это и лишнее...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 часа назад, Darth Vader сказал:

С этим что не так? Как надо правильно мониторить состояние флага события в регистре?

Пустая трата процессорного времени в цикле ожидания, в то время как это время можно было бы отдать менее приоритетным задачам.

Это стиль суперлупа, от которого давно следует уйти в серьёзных программах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 hours ago, Darth Vader said:

С этим что не так? Как надо правильно мониторить состояние флага события в регистре?

Используйте аппаратные прерывания и событийную модель ПО, например ОСРВ с её межпроцессными средствами взаимодействия (мьютексы, семафоры, сигналы и т.п.).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...