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

STM32F103C8 Работа с флешь памятью.

Здравствуйте все.

Есть функция для стирания страницы

void PageErase(uint32_t addr)
{
	while((FLASH->SR & FLASH_SR_BSY) != 0);

	FLASH->CR |= FLASH_CR_PER;
	FLASH->AR = (uint32_t)addr;
	FLASH->CR |= FLASH_CR_STRT;

	while((FLASH->SR & FLASH_SR_BSY) == 1);

	for(volatile int i = 0; i < 10; i++); // Делаю задержку , иначе дальше не пишет в память

	FLASH->CR &= ~FLASH_CR_PER;

}

Если не делать задержку, то далее не пишет в память. Стандартная запись. На STM32F100 нормально без задержек пишет. Задержки во флешке выставлены правильно, в соответствии с частотой. Не критично конечно, но...

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


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

7 часов назад, AHTOXA сказал:

Поставьте вместо задержки положенную инструкцию:

__DSB();

Ок! Спасибо!

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


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

On 4/29/2019 at 8:15 AM, AHTOXA said:

Поставьте вместо задержки положенную инструкцию:

__DSB();

А почему не __ISB(); ?

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


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

Я не помню, где-то увидел, так и применяю. Ну и по описанию это то, что нужно:

Цитата
DSB

Data Synchronization Barrier acts as a special kind of memory barrier. No instruction in program order after this instruction executes until this instruction completes. This instruction completes when:

  • All explicit memory accesses before this instruction complete.

  • All Cache, Branch predictor and TLB maintenance operations before this instruction complete.

 

 

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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