[[ファームウェア関数一覧>ファームウェア関数一覧#udd0c846]] *FLASH_ErasePage [#d8bbf5ce] フラッシュメモリの消去を行う。&br; フラッシュメモリの消去単位はページ単位のみである。&br; STM32の中容量デバイスの場合はフラッシュメモリの先頭番地から1Kバイト毎であり、0x08000000番地から0x080003FF番地までのフラッシュメモリが一つのページで、それ以降も同様。&br; 先頭のページがPage0で、以降順番。&br; 高容量デバイスの場合、ページの大きさは2Kバイト。&br; ページ単位より小さい単位での消去を行いたい場合は、一度ページ全体を読出し、消去の後、もう一度書き込む。&br; 0x08000000番地から0x08003000番地を消去するとDFUが破壊される。&br; 不用意に自分自身を破壊しないようにアドレスを選ぶ事。&br; #contents **ヘッダ宣言 [#z8d0a87d] **関数プロトタイプ [#p7333e69] FLASH_Status FLASH_ErasePage (uint32_t Page_Address ) **動作 [#y06bbda1] フラッシュメモリのページを消去します。 **引数 [#g9c4c4f5] -Page_Address&br; 消去するページをアドレスで指定。ページの先頭アドレスを推奨するが、中途のアドレスでも、そのアドレスを含むページ全体が消去される。 **戻り値 [#d30612fd] -FLASH_Status&br; 処理結果を返します |FLASH_BUSY|ビジー(処理中)状態| |FLASH_ERROR_PG|プログラムエラー| |FLASH_ERROR_WRP|書き込み保護状態| |FLASH_COMPLETE|処理完了| |FLASH_TIMEOUT|タイムアウト(時間切れ)| 処理結果を返します&br; &br; #include(Macro/FLASH_Status,notitle) &br; **サンプル [#va83fd9e] -StartPageマクロのページから、PagesToWriteマクロのページ数分ページ消去する&br; FLASHStatusがFLASH_COMPLETE以外になった場合は中断する for(EraseCounter = 0; (EraseCounter < PagesToWrite) && (FLASHStatus == FLASH_COMPLETE); EraseCounter++) { FLASHStatus = FLASH_ErasePage(FlashBaseAddr + (StartPage * FLASH_PAGE_SIZE) + (FLASH_PAGE_SIZE * EraseCounter)); cprintf(“.”); } **参照 [#d6e4f7a3] -初期化([[RCC_Configuration]])&br; [[FLASH_PrefetchBufferCmd]]→[[FLASH_SetLatency]] -一般的な書き込み方法&br; [[FLASH_Unlock]]→[[FLASH_ClearFlag]]→[[FLASH_ErasePage]]→[[FLASH_ProgramWord]]→[[FLASH_Lock]]