初级会员
- 积分
- 84
- 金钱
- 84
- 注册时间
- 2018-12-7
- 在线时间
- 11 小时
|
发表于 2019-8-17 20:58:38
|
显示全部楼层
本帖最后由 wpy 于 2019-8-18 19:48 编辑
原子哥,我今天也看了这个实验,按照例程也出来结果了,但是我发现有些瑕疵,就是我们可以把字符串首地址强制转换成(u16*)的指针,然后
STMFLASH_Write(appxaddr,(u16*)appbuf,appsize/2+1);(加1是为了防止size是奇数)
也可以实现flash的写入,事实确实是这样的,我改完和例程写入flash的内容一摸一样的,但是我改完的没法实现跳转,但是flash内容是一样的,其他的我也没动啊。
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);//将最后的一些内容字节写进去.
追加一下,我说错了,
STMFLASH_Write(appxaddr,(u16*)appbuf,appsize/2+1);
我把flash内容读了出来,发现只写了2K的内容,剩下的都没写进去,然后我按2K 2K的写,就可以了,所以最后和例程一样了。
??????????????????????
但为题来了,为啥一次只能写2K,我看函数是支持大于2K内容写入的!!!!!!!!!!!!
|
|