stm32mini flash操作问题

2019-07-20 19:15发布

原子哥,每次下载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();

}



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。