新手上路
- 积分
- 46
- 金钱
- 46
- 注册时间
- 2013-4-23
- 在线时间
- 7 小时
|

楼主 |
发表于 2019-1-19 12:51:07
|
显示全部楼层
问题找到了,是flash擦除的问题,STM32F103RBT6的flash的容量是,128K,ZET6是512K,所以stmflash.h里把#define STM32_FLASH_SIZE 128 改为128,另外STM32F103RBT6的扇区是1K,按半字操作,所以要把iap.c 里的void iap_write_appbin(u32 appxaddr,u8 *appbuf,u32 appsize)程序改一下:void iap_write_appbin(u32 appxaddr,u8 *appbuf,u32 appsize)
{
u16 t;
u16 i=0;
u16 temp;
u32 fwaddr=appxaddr;//μ±Ç°D′èëμÄμØÖ·
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==512)
{
i=0;
STMFLASH_Write(fwaddr,iapbuf,512);
fwaddr+=1024;//Æ«òÆ2048 16=2*8.ËùòÔòa3ËòÔ2.
}
}
if(i)STMFLASH_Write(fwaddr,iapbuf,i);//½«×îoóμÄò»D©ÄúèY×Ö½úD′½øè¥.
} |
|