高级会员

- 积分
- 562
- 金钱
- 562
- 注册时间
- 2018-7-8
- 在线时间
- 118 小时
|
1金钱
请问原子哥,在iap串口中,有一段代码我看不太懂:
iapfun jump2app;
u16 iapbuf[1024];
//appxaddr:应用程序的起始地址
//appbuf:应用程序CODE.
//appsize:应用程序大小(字节).
void iap_write_appbin(u32 appxaddr, u8 *appbuf, u32 appsize)
{
u16 t;
u16 i = 0;
u16 temp;
u32 fwaddr = appxaddr; //当前写入的地址
u8 *dfu = appbuf;
for (t = 0; t < appsize; t += 2)
{
temp = (u16)dfu[1] << 8;
temp += (u16)dfu[0];
dfu += 2; //偏移2个字节
iapbuf[i++] = temp;
if (i == 1024)
{
i = 0;
STMFLASH_Write(fwaddr, iapbuf, 1024);
fwaddr += 2048; //偏移2048 16=2*8.所以要乘以2.
}
}
if (i)
{
STMFLASH_Write(fwaddr, iapbuf, i); //将最后的一些内容字节写进去.
}
}
请问这两个代码为啥是[1]要左移?是不是stm32是小端模式, 生成的bin文件是小端模式的??
temp = (u16)dfu[1] << 8;
temp += (u16)dfu[0];
|
|