/************************************************************************/
// !!!一定要記住!!!Flash壽命是有限的,別程序開着一直擦!!用到再擦
// !!!愛護Flash人人有責
// 必須先解鎖Flash
uint64_t data = 0;
// 一頁 1KB
// stm32f103 Flash 建議使用頁地址爲:0x0807F000
// 尋址範圍:0x0807F000 - 0x0807FFFF
uint32_t *Address = (uint32_t*)0x0807F000;
HAL_FLASH_Unlock();
FLASH_PageErase((uint32_t)Address);
// 爲防止出錯,需要延時等待下,當然一般不會出錯
if(HAL_OK != FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE)){
// TODO: Error 操作
}
// 必須清楚標誌位
CLEAR_BIT(FLASH->CR, FLASH_CR_PER);
// 開始寫數據
// 分爲三類寫法:FLASH_TYPEPROGRAM_HALFWORD
// FLASH_TYPEPROGRAM_WORD
// FLASH_TYPEPROGRAM_DOUBLEWORD
// 關於詳細應用,自己腦補
if(HAL_OK == HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD,(uint32_t)Address,data)){
HAL_GPIO_WritePin(LED1,LED_ON);
}else{
HAL_GPIO_WritePin(LED2,LED_ON);
}
// 搞完之後記得加個鎖撒
HAL_FLASH_Lock();
// Flash可以直接尋址哦,寫到該地址之後,直接尋址就ok了!
if(*Address == data){
HAL_GPIO_WritePin(LED3,LED_ON);
}
// 最後再說一句,愛護Flash,人人有責!!!
/************************************************************************/
STM32F103 Flash操作代碼解析
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.