初级会员

- 积分
- 57
- 金钱
- 57
- 注册时间
- 2016-10-6
- 在线时间
- 13 小时
|
4金钱
原子哥,每次下载flash操作代码时,第一次按key0写数据时程序就死了,复位后就可以写flash了,而且复位后写flash就没有问题了,一直搞不清楚为什么程序刚下进去写flash会死机,复位后写flash才可以希望原子哥 能抽点时间帮我看看,谢谢了
代码:
void flash_write_check(u32 addr,u16 *p,u16 num)
{
u16 i;
u8 sector;
u16 pianyi;
u16 shengyu;
addr=addr-0x08000000;
sector=addr/2048;
pianyi=(addr%2048)/2;
shengyu=1024-pianyi;
delay_ms(50);
FLASH_Unlock();
if(num<=shengyu)
shengyu=num;
while(1)
{
PAout(8)=0;
read_flash(sector*2048+0x08000000,buff_flash,1024);
for(i=0;i<shengyu;i++)
{
if(buff_flash[i+pianyi]!=0xffff)
break;
}
if(i<shengyu)
{
FLASH_ErasePage(sector*2048+0x08000000);
for(i=0;i<shengyu;i++)
{
buff_flash[i+pianyi]=p[i];
}
flash_write(sector*2048+0x08000000,buff_flash,1024);
}
else flash_write(addr,p,shengyu);
if(num==shengyu)
break;
else
{
pianyi=0;
addr=sector+shengyu;
sector=sector+1;
num=num-shengyu;
p=p+shengyu;
if(num>1024)
shengyu=1024;
else
shengyu=num;
}
PDout(2)=!PDout(2);
delay_ms(500);
}
FLASH_Lock();
}
|
|