stm32 读写内部Flash
发布时间:2020-12-15 17:22:54 所属栏目:百科 来源:网络整理
导读:stm32的FLASH分为主存储块和信息块。主存储块用于保存具体的程序代码和用户数据,信息块用于负责由stm32出厂是放置2KB的启动程序(Bootloader)和512B的用户配置信息区。主存储块是以页为单位划分的,一页大小为1KB。范围为从地址0x08000000开始的128KB内。
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 flashn");
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("rn The Five Data Is : rn");
while(count < 5)
{
printf("r 0X%x r",*(u16 *)(base + count*2)); //读取方法
count++;
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |