求助 STM32L151 的flash 的擦除 写入读取操作的例程,调试总是有问题

2019-07-20 08:25发布

最近在调试这个芯片,看资料,对flash只有页擦除的库函数,分了32个区,每个区包含好几页  ,不太明白怎么操作。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
mon51
2019-07-20 13:34
/******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
STM32的FLASH 的操作
简单化!
*******************************************************************************/
#include "use.h"

//*******************************************************************************
//FLASH写入全部采用32的字写入和读出来
//*******************************************************************************
void RdFlash(unsigned char *RamAdr,unsigned int ROM,unsigned int Number){
        DATA_EEPROM_Unlock();        //解锁FLASH
        memcpy(RamAdr,(unsigned char *)ROM,Number);
        DATA_EEPROM_Lock();        //解锁FLASH
}

//***********************************************************************************
//传入的Number是字节!
void WrFlash(unsigned int *RamAdr,unsigned int ROM,unsigned int Number){
        unsigned int i;
       
        DATA_EEPROM_Unlock();        //解锁FLASH
        //****************************************************************
        for(i=0;i<Number/4;i++){ //按字操作
                if( *(unsigned int *)ROM != *RamAdr){//数据不相等,就要改写!               
                        DATA_EEPROM_EraseWord(ROM);
                        FLASH_ClearFlag(FLASH_FLAG_EOP|FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR
                  | FLASH_FLAG_SIZERR | FLASH_FLAG_OPTVERR | FLASH_FLAG_OPTVERRUSR);
                        DATA_EEPROM_ProgramWord(ROM,*RamAdr);//*RamAdr
                }
                RamAdr++;
                ROM +=4;                //数据只能加1
        }
        DATA_EEPROM_Lock();        //锁FLASH
}

一周热门 更多>