stm32中flash应用的常见函数:
1.擦除函数:
FLASH_Status FLASH_ErasePage(u32 Page_Address)只要()里面的数是flash第xx页中对应的任何一个地址!就是擦除xx页全部内容。
2.flash写入函数:
STMFLASH_Write(uint32_t WriteAddr,uint32_t *pBuffer,uint32_t NumToWrite)
入参:
WriteAddr:要写入flash中的首地址,stm32的flash地址起始于0x0800 0000,结束地址是0x0800 0000加上芯片实际的flash大小,不同的芯片flash大小不同,因此从理论上来说该地址可以从0x08000000进行写入,但实际要考虑代码所占空间大小,所以该地址要错过代码段的地址,以防擦除时将代码也擦除了。
pBuffer:该参数为要写入flash中的数据的地址。
NumToWrite:该参数为要写入的数据的长度。
源码展示:
int STMFLASH_Write(uint32_t WriteAddr,uint32_t *pBuffer,uint32_t NumToWrite)
{
FLASH_EraseInitTypeDef FlashEraseInit;
HAL_StatusTypeDef FlashStatus=HAL_OK;
uint32_t SectorError=0;
uint32_t addrx=0;
uint32_t endaddr=0;
int result = 0;
if(WriteAddr<STM32_FLASH_BASE||WriteAddr%4){
return -1; //非法地址
}