⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flasheeprom.c

📁 ash存储器里拿出一个扇区(1024B)
💻 C
字号:
#include  <hw_types.h>
#include  <hw_memmap.h>
#include  <hw_flash.h>
#include  <flash.h>


//  定义Flash扇区号(每个扇区1024字节)
#define  SECTION    62


extern unsigned long TheSysClock;


//  初始化用Flash虚拟的EEPROM
void FlashEEPROM_Init(void)
{
    FlashUsecSet(TheSysClock / 1000000);                    //  设置每微秒的CPU时钟数
}


//  从Flash虚拟的EEPROM指定地址处读取1个字节
//  usAddr=0~1023
char FlashEEPROM_Read(unsigned short usAddr)
{
    char *pcData;

    pcData = (char *)(SECTION * 1024 + (usAddr & 0x03FF));

    return(*pcData);
}


//  从Flash虚拟的EEPROM指定地址处读取N个字节
void FlashEEPROM_ReadN(unsigned short usAddr, char *pcData, unsigned short usN)
{
    unsigned short i;

    if (usN > 0)
    {
        for (i = 0; i < usN; i++)
        {
            pcData[i] = FlashEEPROM_Read(usAddr + i);
        }
    }
}


//  向Flash虚拟的EEPROM指定地址处写入1个字节
//  usAddr=0~1023
void FlashEEPROM_Write(unsigned short usAddr, char cData)
{
    char cBuf[1024];
    unsigned long *pulData = (unsigned long *)(cBuf);

    FlashEEPROM_ReadN(0, cBuf, 1024);                       //  读取1KB扇区内容
    cBuf[usAddr & 0x3FF] = cData;                           //  修改1个字节缓冲区内容
    FlashErase(SECTION * 1024);                             //  擦除1KB扇区
    FlashProgram(pulData, SECTION * 1024, 1024);            //  编程1KB扇区
}


//  向Flash虚拟的EEPROM指定地址处写入N个字节
void FlashEEPROM_WriteN(unsigned short usAddr, const char *pcData, unsigned short usN)
{
    char cBuf[1024];
    unsigned long *pulData = (unsigned long *)(cBuf);
    unsigned short i;

    if (usN > 0)
    {
        FlashEEPROM_ReadN(0, cBuf, 1024);                   //  读取1KB扇区内容

        for (i = 0; i < usN; i++)                           //  修改1KB缓冲区内容
        {
            cBuf[(usAddr + i) & 0x03FF] = pcData[i];
        }

        FlashErase(SECTION * 1024);                         //  擦除1KB扇区
        FlashProgram(pulData, SECTION * 1024, 1024);        //  编程1KB扇区
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -