您的位置:首页 > 其它

stm32 读写内部Flash

2015-04-18 14:48 411 查看
stm32的FLASH分为主存储块和信息块。主存储块用于保存具体的程序代码和用户数据,信息块用于负责由stm32出厂是放置2KB的启动程序(Bootloader)和512B的用户配置信息区。主存储块是以页为单位划分的,一页大小为1KB。范围为从地址0x08000000开始的128KB内。

对Flash 的写入操作要 “先擦除后写入”的原则;stm32的内置flash 编程操作都是以页为单位写入的,而写入的操作必须要以16位半字宽度数据位单位,允许跨页写,写入非16位数据时将导致stm32内部总线错误。

void testFlash()
{

int count=0;
u16 data[5]={0x0401,0x0502,0x0003,0x0004,0x0005};
u32 base=0x8000000+1024*254; //保存自定义数据的起始地址

printf("start test flash\n");
FLASH_Unlock();

FLASH_ClearFlag(FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPRTERR);

FLASH_ErasePage(base);

while(count < 5)
{
FLASH_ProgramHalfWord((base +count*2),data[count]);  //flash  为一个字节存储,16位数据必须地址加2
count++;
}
FLASH_Lock();
count = 0;
printf("\r\n The Five Data Is : \r\n");

while(count < 5)
{
printf("\r 0X%x \r",*(u16 *)(base + count*2));      //读取方法
count++;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  stm32 嵌入式