flash.c

来自「基于凌阳61开发板」· C语言 代码 · 共 44 行

C
44
字号
#include "SPCE061V004.h"
//10.3.3 内部 FLASH 的读写程序 
//32K 字的内部 FLASH 被划分为 128 个 PAGE(每个 PAGE 存储容量为 256 字),
//第一页 [0x8000—0x80ff]最后一页为[0xff00—0xffff]。全部 32K 字闪存均可被编程写入
//或被擦除。上电以后,芯片就处于读存储单元状态,读存储单元的操作与 SRAM 相同。
//函数SP_ReadWord()实现的功能是从内部 FLASH 中读出一个 Word,参数为 FLASH 地址,
//返回值为该地址存放的数据。
//************************************************************************** 
unsigned int SP_ReadWord(unsigned int addr) 
{ 
  unsigned int *ADDR,data; 
  ADDR=(unsigned int*)addr; 
  data=*ADDR; 
  return data; 
} //内部 FLASH 的读写程序 
//************************************************************************** 
//和读 FLASH 相比,擦写就麻烦一点了。图 10.11 说明了擦写的过程。需要指出一
//点,图中所提到延时等待是由硬件完成不需要软件延时。
 
//SP_PageErase()为页擦除函数。 
//用 C 语言实现 SP_PageErase()的代码如下: 
//************************************************************************** 
void SP_PageErase(unsigned int addr) 
{ 
  unsigned int *ADDR; 
 ADDR=(unsigned int*)addr; 
  *P_Flash_Ctrl=0xAAAA;   
  *P_Flash_Ctrl=0x5511; 
 *ADDR=1; 
} 
//************************************************************************** 
//SP_WriteWord()的功能是往 FLASH 写一个 Word 的数据,该函数有两个参数,第
//一个是 FLASH 地址,第二个是要写入的数据。 
//用 C 语言实现 SP_WriteWord()的代码如下: 
//************************************************************************** 
void SP_WriteWord(unsigned int addr,unsigned int data) 
{ 
  unsigned int *ADDR; 
 ADDR=(unsigned int*)addr; 
  *P_Flash_Ctrl=0xAAAA;   
  *P_Flash_Ctrl=0x5533; 
 *ADDR=data; 
} 
//************************************************************************** 

⌨️ 快捷键说明

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