初级会员

- 积分
- 142
- 金钱
- 142
- 注册时间
- 2013-11-1
- 在线时间
- 183 小时
|
80金钱
//appxaddr:ó|óÃ3ìDòμÄÆeê¼μØÖ·
//appbuf:ó|óÃ3ìDòCODE.
//appsize:ó|óÃ3ìDò′óD¡(×Ö½ú).
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 ÕyoÃêÇ2K
}
}
if(i)STMFLASH_Write(fwaddr,iapbuf,i);
}
这段代码里的<<24 <<16<<8 <<0是什么意思
|
最佳答案
查看完整内容[请看2#楼]
iapbuf 是u32类型数据,这个代码是将接受到的数据u8每4个变成一个u32放到iapbuf里面,然后满512个就写flash。
因为flash一个page是2048个字节,512*4=2048
|