stm32l011k4에서 플래시 주소를 지우려고합니다. 그런 식의 내 코드;C에서 여러 플래시 주소를 삭제하는 방법은 무엇입니까?
#define SLAVE_ID_ADDR_I 0x08080001
#define SLAVE_ID_ADDR_II 0x08080002
#define SLAVE_ID_ADDR_III 0x08080003
#define MASTERID 0x08080000
void software_erase(void){
HAL_FLASH_Unlock();
/* Fill EraseInit structure*/
EraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES;
EraseInitStruct.PageAddress = SlaveID_III;
EraseInitStruct.NbPages = 4;
if (HAL_FLASHEx_Erase(&EraseInitStruct, &PAGEError) != HAL_OK)
{
playTone=3;
}
else{
MasterID = 0;
SlaveID_I = 0;
SlaveID_II = 0;
SlaveID_III = 0;
MasterID_loaded = 0;
SlaveID_loaded_I = 0;
SlaveID_loaded_II = 0;
SlaveID_loaded_III = 0;
clear_keyfobs = 1;
playTone=2;
}
}
편집 : 는하지만 0x08080001 사이에 바이트를 지울 - 0x08080003. 모든 섹션이 아닙니다. "0x08080001, 0x08080002, 0x08080003"을 삭제해야하지만 "0x08080000"은 삭제해야합니다.
의견이 있으십니까?
주어진 값은 페이지가 아니라 바이트 주소입니다. Flash에서는 단일 바이트를 삭제할 수 없습니다. – Olaf
칩 설명서를 읽으십시오. 가능한 가장 작은 지우기 크기를 알려야합니다. – user694733