#include "main.h"
#define PAGE_ADDR (0x08000000 + 64 * 1024)
uint8 MemReadByte(uint16 *data,uint16 num)
{
uint16 *temp_addr = (uint16 *)PAGE_ADDR;
while(num --)
{
*data ++ = *temp_addr ++;
}
return 1;
}
uint8 MemWriteByte(uint16 *data,uint16 num)
{
FLASH_Status temp_stat;
uint32 temp_addr = PAGE_ADDR;
FLASH_Unlock(); // Flash解锁,允许操作相关的寄存器
temp_stat = FLASH_ErasePage(PAGE_ADDR); // 擦出制定的页
if(temp_stat != FLASH_COMPLETE)
{
FLASH_Lock();
return 0;
}
while(num --)
{
temp_stat = FLASH_ProgramHalfWord(temp_addr,*data);
if(temp_stat != FLASH_COMPLETE)
{
FLASH_Lock();
return 0;
}
temp_addr += 2;
data++;
}
FLASH_Lock();
return 1;
}
#define PAGE_ADDR (0x08000000 + 64 * 1024)
uint8 MemReadByte(uint16 *data,uint16 num)
{
uint16 *temp_addr = (uint16 *)PAGE_ADDR;
while(num --)
{
*data ++ = *temp_addr ++;
}
return 1;
}
uint8 MemWriteByte(uint16 *data,uint16 num)
{
FLASH_Status temp_stat;
uint32 temp_addr = PAGE_ADDR;
FLASH_Unlock(); // Flash解锁,允许操作相关的寄存器
temp_stat = FLASH_ErasePage(PAGE_ADDR); // 擦出制定的页
if(temp_stat != FLASH_COMPLETE)
{
FLASH_Lock();
return 0;
}
while(num --)
{
temp_stat = FLASH_ProgramHalfWord(temp_addr,*data);
if(temp_stat != FLASH_COMPLETE)
{
FLASH_Lock();
return 0;
}
temp_addr += 2;
data++;
}
FLASH_Lock();
return 1;
}