📄 flash.c
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -