Flash

From ElectroDragon
Jump to navigation Jump to search

Knowlege

  • 绝大多数的单片机和微控制器(ARM,x86),地址空间都是以字节为单位的,也就是说一个地址是一个字节。
  • Flash存储器有个特点,就是只能写0,不能写1。所以如果原来的地址有数据了,意味着有一些位为0,这些位就相当于无效了。所以必须写之前确保他们都为1,只有擦除才可以。另外每次擦除都必须擦除一个4K大小的扇区,这是flash的特性所决定的。
  • 对Flash操作前必需打开内部振荡器。

STM32 Code

Read, notice address should be 0x08006900 ... 0x08006910 ... 0x08006920

uint8_t dat1 = *(__IO uint32_t *)(0x08006900);
uint8_t dat2 = *(__IO uint32_t *)(0x08006910);
uint8_t dat3 = *(__IO uint32_t *)(0x08006920);