型号:STM32L431KBU6;
该型号内存 = 128KB,起始地址 = 0x0800_0000;只有63页;
在L4的user manual手册的第三章详细介绍了FLASH的操作细节,我挑一些重要的信息;
flash擦除方式有两种:
1、Page erase—以页位单位擦除,1页=2K,每次最少擦除1页;
2、Mass erase—擦除整个flash;
收藏0 举报
uint32_t flashwriteaddr = 0x08008000; //定义写入数据的地址 uint32_t pageError = 0; uint64_t flashwritedata = 0x0000000200000001;//要写入的数据,必须得是双字64bit uint64_t flashreaddata = 0 ; FLASH_EraseInitTypeDef flash_erase; //定义一个结构体变量,里面有擦除操作需要定义的变量
HAL_FLASH_Unlock(); //第二步:解锁 flash_erase.TypeErase = FLASH_TYPEERASE_PAGES; //擦除类型是“Page Erase” flash_erase.Page = 16; //擦除第16页 flash_erase.NbPages = 2; //一次性擦除2页,可以是任意页 HAL_FLASHEx_Erase(&flash_erase,&pageError); //第三步:参数写好后调用擦除函数 HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, flashwriteaddr, flashwritedata);//第四步:写入数据 HAL_FLASH_Lock(); //第五步:上锁 flashreaddata = *(__IO uint64_t *)flashwriteaddr; //读出flash中的数据 d1 = (flashreaddata>>32) & 0xFFFFFFFF; d2 = (flashreaddata)& 0xFFFFFFFF; printf("读出数据:%d %d\r\n",d1,d2); HAL_Delay(200);
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
56
751
0
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注电源系统设计
扫码关注21ic项目外包
扫码浏览21ic手机版
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才
京公网安备 11010802024343号