Stm32051 discovery board ile çalışıyorum bu aralar. Stm in MCU larının bizim kullandığımız serilerinde EEPROM yok. Bunun yerine program belleğini kullanıyoruz.
Okumakta problem yaşamıyorum. Ama yazarken bilindiği gibi tüm page i silip yazmak gerekiyor. Siliyorum ama yazamıyorum. Bunu Hal ile yapmak istedim olmadı. Register e indim yine olmadı.
void writeFlash(uint32_t flashAdress, uint16_t data){
HAL_FLASH_Unlock();
//sil
FLASH_PageErase(flashAdress);
//veriyi yaz
FLASH->CR|=0x00000001;
*(__IO uint16_t*)flashAdress = data;
while((FLASH->SR&0x00000001));
HAL_FLASH_Lock();
}
Yukarıdaki kod register.
HAL_FLASH_Program(TypeProgram, Address, Data)
Yukarıdaki Kod ise HAL kütüphanesine ait. Kütüphanenin içeriği aşağıda.
static void FLASH_Program_HalfWord(uint32_t Address, uint16_t Data)
{
/* Clean the error context */
pFlash.ErrorCode = HAL_FLASH_ERROR_NONE;
/* Proceed to program the new data */
SET_BIT(FLASH->CR, FLASH_CR_PG);
/* Write data in the address */
*(__IO uint16_t*)Address = Data;
}
basit bir şekilde bir word veri yazıp orayı okuyacak bir rutine ihtiyacım var.
Saygı ve selamla.