新手上路
- 积分
- 34
- 金钱
- 34
- 注册时间
- 2020-6-17
- 在线时间
- 6 小时
|
闪存擦除 代码如下:
u8 MFlash_EraseSector(u8 num)
{
FLASH_EraseInitTypeDef EraseInitStruct;
u32 PageError;
HAL_FLASH_Unlock(); //解锁
STMFLASH_Read(STM32_FLASH_O_BASE, (u32*)STMFLASH_BUF, STM_SECTOR_SIZE / 4); //读出该页全部数据
EraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES;
EraseInitStruct.NbPages = 1; //需要删除的页数
EraseInitStruct.Banks = Get_FLASH_Bank(STM32_FLASH_O_BASE);
EraseInitStruct.Page = STM32_FLASH_O_BASE;
HAL_FLASHEx_Erase(&EraseInitStruct, &PageError);
HAL_FLASH_Lock();//上锁
return 1;
}
STM32_FLASH_O_BASE 0x08010000 STM_SECTOR_SIZE 2K
此函数放在主函数中调用,仿真不起来,而后串口也不通。
Flash的扇区擦除该用什么方式,原子哥的代码是在写之前擦的。
还有一个问题就是用原子哥Flash写的代码,假若读出来里面原来就是FF,每次不擦直接写就会失败,次次先擦再写就没有问题。
|
|