打印

F429 FLASH 写入数据函数 擦除扇区问题

[复制链接]
181|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
石头张|  楼主 | 2018-7-15 11:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
u8 Flash_Write_Byte(u8 data,u32 addr)
{
        FLASH_EraseInitTypeDef Erase_Init;
        u32 SectorError;
        u8 sector = STMFLASH_GetFlashSector(addr + FLASH_BASE_ADDR);
        u32 Bank = Flash_GetBank(sector);

        HAL_FLASH_Unlock();
        FLASH_WaitForLastOperation(50000);
        
        Erase_Init.Banks = Bank;
        Erase_Init.NbSectors = 1;
        Erase_Init.Sector = sector;
        Erase_Init.TypeErase = FLASH_TYPEERASE_SECTORS;
        Erase_Init.VoltageRange = FLASH_VOLTAGE_RANGE_3;
        //调试 一旦运行到此处 再往下走 就直接出错了 必须要重新下载程序才能运行
        //0xFFFFFFFE 0000      MOVS          r0,r0= FLASH_VOLTAGE_RANGE_3;  汇编窗口 就一直在这里
        //请问下 这是怎么回事啊 ?
        
        if(HAL_FLASHEx_Erase(&Erase_Init,&SectorError) != HAL_OK)
        {
                return 1;
        }
        FLASH_WaitForLastOperation(50000);
        HAL_FLASH_Program(FLASH_TYPEPROGRAM_BYTE ,(addr + FLASH_BASE_ADDR) , data);
        FLASH_WaitForLastOperation(50000);
        HAL_FLASH_Lock();
        
        return 0;
}

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

446

主题

446

帖子

0

粉丝