[[ファームウェア関数一覧>ファームウェア関数一覧#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]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS