You are on page 1of 5

CÁC LOẠI BỘ NHỚ TRÊN VI ĐIỀU KHIỂN

RAM FLASH EEPROM


• Tốc độ đọc ghi nhanh • Tốc độ ghi chậm • Tốc độ ghi chậm
• Bị mất dữ liệu khi mất điện • Tốc độ đọc nhanh • Tốc độ đọc nhanh
• Không bị mất dữ liệu khi mất điện • Không bị mất dữ liệu khi mất điện
• Ghi theo page hoặc sector • Đọc ghi theo từng byte
• Đọc theo 2 byte hoặc 4 byte

STM32 chỉ sử dụng bộ nhớ RAM và FLASH


TỔ CHỨC BỘ NHỚ FLASH

STM32 có bộ nhớ 128KB được thành 128 page mỗi page là 1KB.
Như vậy mỗi lần muốn ghi thì ta phải ghi theo page là 1KB 1 lần
QUY TRÌNH GHI VÀO BỘ NHỚ FLASH

void FLASH_WRITE(uint32_t addr,uint16_t value)


{
if(FLASH->CR&FLASH_CR_LOCK)
{
FLASH->KEYR=FLASH_KEY1;
FLASH->KEYR=FLASH_KEY2;
}
FLASH->CR|=FLASH_CR_PG;
*(__IO uint16_t *)addr=value;
while(FLASH->SR&FLASH_SR_BSY);
FLASH->CR&=~FLASH_CR_PG;
}

Lưu ý: trước khi muốn ghi vào flash vào page nào, ta phải xóa toàn bộ page tương ứng
QUY TRÌNH XÓA BỘ NHỚ FLASH

void FLASH_ERASE(uint32_t page)


{
if(FLASH->CR&FLASH_CR_LOCK)
{
FLASH->KEYR=FLASH_KEY1;
FLASH->KEYR=FLASH_KEY2;
}
FLASH->CR|=FLASH_CR_PER;
FLASH->AR=page;
FLASH->CR|=FLASH_CR_STRT;
while(FLASH->SR&FLASH_SR_BSY);
FLASH->CR&=~FLASH_CR_PER;
FLASH->CR&=~FLASH_CR_STRT;
}
ĐỌC BỘ NHỚ

uint16_t FLASH_READ(uint16_t addr)


{
return *(__IO uint16_t *)addr;
}

You might also like