没看明白这个函数
void iap_write_appbin(u32 appxaddr,u8 *appbuf,u32 appsize)
{
u32 t;
u16 i=0;
u32 temp;
u32 fwaddr=appxaddr;//μ±Ç°D′èëμÄμØÖ·
u8 *dfu=appbuf;
for(t=0;t<appsize;t+=4)
{
temp=(u32)dfu[3]<<24;
temp|=(u32)dfu[2]<<16;
temp|=(u32)dfu[1]<<8;
temp|=(u32)dfu[0];
dfu+=4;//Æ«òÆ4¸ö×Ö½ú
iapbuf[i++]=temp;
if(i==512)
{
i=0;
STMFLASH_Write(fwaddr,iapbuf,512);
fwaddr+=2048;//Æ«òÆ2048 512*4=2048
}
}
if(i)STMFLASH_Write(fwaddr,iapbuf,i);//½«×îoóμÄò»D©ÄúèY×Ö½úD′½øè¥.
}
我想问每512个字往Flash里面写一次,执行第一次可以写进去,那以后的写不会把之前写进去的擦除吗?所在的扇区又是一个扇区 。有点不明白了 求解
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
flash写的函数中,在擦除前把整个扇区都读如BUF,然后再把整个扇区擦除,接着把要写入的部分写入BUF的对应位置。最后把整个BUF写入。所以不会数据丢失具体看STMFLASH_Write函数
一周热门 更多>