目录
- 硬件知识
-
- 基本介绍
- 软件知识
-
- EEPROM多字节读函数
- EEPROM多字节写函数
- EEPROM风扇区域擦除函数函数
- 测试
-
- main.c
- 实验现象
STC实验箱4 IAP15W4K58S4 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0
硬件知识
基本介绍
摘自《》 STC15系列单片机集成了大容量EEPROM,它与程序空间分开。利用ISP/IAP技术可将内部Data Flash当EEPROM,擦写次数超过10万次。EEPROM可分为多个扇区,每个扇区包含512字节。使用时,建议将同一次修改的数据放在同一扇区,而不是同一次修改的数据放在不同的扇区,不一定要用满。根据风扇区域进行数据存储器的擦除操作。 EEPROM它可以用来保存一些参数数据,需要在应用过程中修改,不会丢失。在用户程序中,可以EEPROM擦除字节读/字节编程/扇区。工作电压Vcc如果偏低,建议不要进行EEPROM/IAP操作。 :电源控制寄存器
:低压检测标志位,工作电压Vcc当低于低压检测门槛电压时,该位置为1。当低压检测电路发现工作电压时,软件应清除此位置Vcc低的时候,不要做EEPROM/IAP操作。 5V单片机低压检测门槛电压: 3.3V单片机低压检测门槛电压:
软件知识
摘自《》
EEPROM多字节读函数
EEPROM多字节写函数
EEPROM风扇区域擦除函数函数
测试
main.c
#include "./Drivers/config.h" #include "./Drivers/delay.h" #include "./Drivers/GPIO.h" #include "./Drivers/EEPROM.h" void GPIO_config(void) {
GPIO_InitTypeDef GPIO_InitStructure; //结构定义 GPIO_InitStructure.Mode = GPIO_OUT_PP; //指定IO输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP GPIO_InitStructure.Pin = GPIO_Pin_6 | GPIO_Pin_7; //指定初始化IO, 或操作 GPIO_Inilize(GPIO_P4,&GPIO_InitStructure); ///
}
void main(void)
{
char test[2] = {
0};
GPIO_config();
EEPROM_read_n(0x1234, test, 2);
if(test[0] == 'O' && test[1] == 'K')
{
P47 = 0;
while(1);
}
else
{
EEPROM_SectorErase(0x1234);
EEPROM_write_n(0x1234, "OK", 2);
P46 = 0;
while(1);
}
}
实验现象
第一次运行时没有数据,点亮LED10,重启后已有数据,点亮LED9。