Saya menggunakan STM32f103 dan dalam program saya, saya perlu menyimpan beberapa byte di memori flash internal. Tapi sejauh yang saya tahu, saya harus menghapus seluruh halaman untuk menulis di dalamnya, yang akan memakan waktu. Penundaan ini menyebabkan tampilan saya berkedip. Adakah yang bisa membantu saya menyimpan data saya tanpa menghabiskan banyak waktu?

Berikut adalah daftar yang dapat membantu:

1- MCU: STM32f103

2- IDE: Visi Keil

3- menggunakan driver HAL yang disediakan oleh STM32CubeMx

4- contoh data untuk disimpan di Flash: {0x53, 0xa0, 0x01, 0x54}

Di tautan di bawah ini, Anda dapat menemukan kode yang saya gunakan.

FLASH_PAGE untuk Keil

0
M.Navidi 23 Mei 2021, 13:06

1 menjawab

Jawaban Terbaik

Kode yang Anda berikan tampaknya tidak diterapkan dengan baik. Ini pada dasarnya melakukan 2 hal setiap kali Anda memulai operasi tulis:

  1. Hapus halaman (ini adalah bagian yang membutuhkan waktu)
  2. Mulai bentuk pointer yang diberikan, tulis sampai mencapai nol.

Ini adalah cara yang sangat tidak efektif dalam menggunakan lampu kilat.

Mungkin cara paling sederhana dan paling terkenal adalah dengan menggunakan metode yang dijelaskan dalam AN2594, meskipun memiliki beberapa keterbatasan.

Namun, pada titik tertentu penghapusan halaman akan diperlukan terlepas dari metode yang Anda gunakan dan tidak ada cara untuk menghindari penundaan, kecuali UC Anda mendukung bank flash ganda (STM32F103 tidak memiliki fitur ini). Anda perlu merencanakan waktu penulisan flash dan penyegaran tampilan yang sesuai. Jika Anda memerlukan penulisan berkala ke flash, mungkin ada beberapa kesalahan tingkat tinggi dalam desain Anda.

1
Tagli 23 Mei 2021, 10:47