求问IAP串口例的一段代码

2019-07-20 18:26发布

//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;//&#198;&#171;ò&#198;4&#184;&#246;×&#214;&#189;ú
                iapbuf[i++]=temp;            
                if(i==512)
                {
                        i=0;
                        STMFLASH_Write(fwaddr,iapbuf,512);
                        fwaddr+=2048;//&#198;&#171;ò&#198;2048  512*4=2048  &#213;yo&#195;ê&#199;2K
                }
        }
        if(i)STMFLASH_Write(fwaddr,iapbuf,i);
}


这段代码里的<<24 <<16<<8 <<0是什么意思

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
名扬天下
1楼-- · 2019-07-22 09:32
 精彩回答 2  元偷偷看……
ysq7120
2楼-- · 2019-07-22 15:12
名扬天下 发表于 2016-9-27 10:21
我知道了什么意思,就是每4个字节一个单位,发了512次,也就是2K的大小,对不?大神

对的,我在上面不是已经说了吗
名扬天下
3楼-- · 2019-07-22 16:11
ysq7120 发表于 2016-9-27 10:37
对的,我在上面不是已经说了吗

ok,多谢大神点拨
tuxiaoli
4楼-- · 2019-07-22 20:07
ysq7120 发表于 2016-9-27 08:38
举例说明一下
(u32)dfu[3]

兄弟,我最近也做了这个实验,代码中   dfu+=4; 这个代码不太明白,上面每一次输完是4个字节,这里把地址+4 之后 还是重复    temp=(u32)dfu[3]<<24;   
                                                         temp|=(u32)dfu[2]<<16;   
                                                            temp|=(u32)dfu[1]<<8;
                                                       temp|=(u32)dfu[0];   这个吗,这样dfu[3]  dfu[2] dfu[1]里面的值会变吗?

一周热门 更多>