#include #include /****************************************************************************** * flash的写函数:输入: u32 StartAddr flash起始地址 u32 *p_data 待写入数据指针 u32 size写入数据的数量 输出:0:正确执行 非0:出错 注意:输入数据一定是u32 的指针,即数据一定是按照4字节对齐写入的。 所以:size也是u32的个数(字节数的4分之一) *******************************************************************************/ u8 writeFlash(u32 StartAddr,u32 *p_data,u32 size) { volatile FLASH_Status FLASHStatus; u32 EndAddr=StartAddr+size*4; vu32 NbrOfPage = 0; u32 EraseCounter = 0x0, Address = 0x0; int i; int MemoryProgramStatus=1; //为一是通过 FLASH_Unlock(); //解锁函数 NbrOfPage=((EndAddr-StartAddr)/PageSize)+1;//有多少个页被擦除//清除所有已有标志 FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR); //擦页 FLASHStatus=FLASH_COMPLETE; for(EraseCounter=0;(EraseCounter