フラッシュメモリの消去を行う。
フラッシュメモリの消去単位はページ単位のみである。
STM32の中容量デバイスの場合はフラッシュメモリの先頭番地から1Kバイト毎であり、0x08000000番地から0x080003FF番地までのフラッシュメモリが一つのページで、それ以降も同様。
先頭のページがPage0で、以降順番。
高容量デバイスの場合、ページの大きさは2Kバイト。
ページ単位より小さい単位での消去を行いたい場合は、一度ページ全体を読出し、消去の後、もう一度書き込む。
0x08000000番地から0x08003000番地を消去するとDFUが破壊される。
不用意に自分自身を破壊しないようにアドレスを選ぶ事。
FLASH_Status FLASH_ErasePage (uint32_t Page_Address )
フラッシュメモリのページを消去します。
FLASH_BUSY | ビジー(処理中)状態 |
FLASH_ERROR_PG | プログラムエラー |
FLASH_ERROR_WRP | 書き込み保護状態 |
FLASH_COMPLETE | 処理完了 |
FLASH_TIMEOUT | タイムアウト(時間切れ) |
for(EraseCounter = 0; (EraseCounter < PagesToWrite) && (FLASHStatus == FLASH_COMPLETE); EraseCounter++) { FLASHStatus = FLASH_ErasePage(FlashBaseAddr + (StartPage * FLASH_PAGE_SIZE) + (FLASH_PAGE_SIZE * EraseCounter)); cprintf(“.”); }