2017-11-19 49 views
0

플래시 메모리에 값을 쓰려고 시도했는데, 처음에 코드에서 언급 한 위치에 0x0000을 썼습니다. 그러나 성공적으로 작성되었지만 그 후에는 해당 위치의 데이터를 덮어 쓰거나 지울 수 없습니다. 처음으로 나는 플래시에 성공적으로 쓸 수 있었지만 그 후에는 그 위치에 데이터를 쓰거나 지울 수 없었다. 어떤 문제가있을 수 있습니까? 나는 또한 메모리 스택 이미지를 고정시켰다.온칩 플래시를 쓰고 지우는 방법 STM32F030 제품군에서 계속적으로?


uint32_t pageAddress = 0x08008000; 
    uint16_t buffer = 0xdddd;   // data buffer 
    HAL_HAL_StatusTypeDef status; 

    while(1) 
    { 
    HAL_FLASH_Unlock();    // unlock the flash memory in ST 
    //FLASH_PageErase(pageAddress); 
    status=HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, pageAddress, 
    buffer); 
    HAL_FLASH_Lock();    // Flash memory locked 
    } 

Memory stack -Debug

+0

지우기 및/또는 프로그램 기능으로는 어떤 오류 코드가 반환됩니까? – kkrambo

+0

내가 그걸 확인하지 않았어. 오류 메시지를받는 방법? – GOKUL

+0

ok..i checked..its HAL_ERROR, 0x01을 보여줍니다. – GOKUL

답변

0

내 질문에 대답을 발견은,이 문제는 사용자가 위치에 쓸 수있을 것 중 하나 "0000"또는 "FFFF"그래서 플래시 2 개 값을 처리 할 수있는 경우에만 "00"사용자가 그 위치에 지울 수 없다면 그 위치의 값이 "FF"라면 그 위치에 "00"을 썼다. 그래서 그 위치에 다시 쓸 수 없다. 다른 값으로.

이전에 의견에서 플래시가 1000 개의 쓰기/지우기 cycles.its를 처리 할 수 ​​있다고 했으므로 전체 섹터 (1 kB)를 한 번만 쓰고 1 kB 이상이면 지울 수 있습니다.이 STM32를 수행하면 훨씬 더 많은 플래시 작업 처리