void write_buf(u32 addr,u8 *p,u16 n)
{
u32 r1;
n=n/4;//擦除并写flash
FLASH_Unlock();//FLASH解锁
FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);//清标志位
FLASH_ErasePage(addr);
while(n--)
{r1=*(p++);
r1|=*(p++)<<8;
r1|=*(p++)<<16;
r1|=*(p++)<<24;
FLASH_ProgramWord(addr, r1);
addr+=4;
}
}
void read_buf(u32 addr,u8 *p,u16 n)
{
while(n--)
{
*(p++)=*((u8*)addr++);
}
}