EEPROM(Electrically Erasable Programmable Read-Only Memory,电可擦除可编程只读存储器)是一种非易失性存储器,可以在掉电后仍保留数据。它允许单字节或多字节的数据被擦除和重新写入,而不需要整个芯片被擦除。嵌入式系统、微控制器以及各种电子设备中常使用 EEPROM 来存储需要在掉电后保留的数据,比如用户配置、校准参数等。
ISP(In-System Programming)
ISP,即在系统编,是一种允许开发者在目标系统(如电路板)上直接对芯片进行编程的技术。这意味着开发者无需将芯片从电路板上取下,即可通过特定的接口(如串口、JTAG、SPI等)将程序代码烧录到芯片内部的 Flash 存储器中。
IAP(In-Application Programming)
IAP,即在应用编程,是一种允许在应用程序运行时对芯片内部存储器进行编程或更新的技术。与 ISP 不同,IAP 通常需要在芯片内部划分出特定的存储区域(如引导区、运行程序区和下载区),并在应用程序中集成相应的编程逻辑。
STC8H
官方文档介绍
官方文档内部结构图
STC8 系列单片机中都包含有 Flash 数据存储器(EEPROM)。以字节为单位进行读/写数据,以 512 字节为页单位进行擦除,可在线反复编程擦写 10 万次以上,提高了使用的灵活性和方便性。
数据存储器
STC8H系列单片机内部集成的RAM可用于存放程序执行的中间结果和过程数据。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| #include "Config.h" #include "UART.h" #include "EEPROM.h" #include <string.h>
void UART_config(void) { COMx_InitDefine COMx_InitStructure; COMx_InitStructure.UART_Mode = UART_8bit_BRTx; COMx_InitStructure.UART_BRT_Use = BRT_Timer1; COMx_InitStructure.UART_BaudRate = 115200ul; COMx_InitStructure.UART_RxEnable = ENABLE; COMx_InitStructure.BaudRateDouble = DISABLE; UART_Configuration(UART1, &COMx_InitStructure);
NVIC_UART1_Init(ENABLE,Priority_1); UART1_SW(UART1_SW_P30_P31); }
#define Max_Length 100 u8 xdata tmp[Max_Length];
void main() {
u16 addr_sector = 0x0000; char *str = "HelloWorld!abc123!"; u16 str_length = strlen(str);
UART_config(); EA = 1;
EEPROM_SectorErase(addr_sector);
EEPROM_write_n(addr_sector, str, str_length);
EEPROM_read_n(addr_sector, tmp, str_length); tmp[str_length] = '\0'; printf(">>存储的字符串: %s\n", str); printf(">>读到的字符串: %s\n", tmp); if(strcmp(str, tmp) == 0){ printf("两个字符串相等\n"); }else { printf("两个字符串不等\n"); } while(1) {
} }
|