├── Eeprom.h ├── EepromInner.h ├── Eeprom_AT24.c ├── Eeprom_AVR.c ├── Eeprom_FlashD.c ├── Eeprom_FlashDF.c ├── Eeprom_FlashM.c ├── Eeprom_FlashS.c ├── Eeprom_PIC.c ├── Eeprom_Pic16F18.c └── readme.md /Eeprom.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thtfcccj/Eeprom/e2fb5615e41ca7bb0a4624810066b7f1be7c0f34/Eeprom.h -------------------------------------------------------------------------------- /EepromInner.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thtfcccj/Eeprom/e2fb5615e41ca7bb0a4624810066b7f1be7c0f34/EepromInner.h -------------------------------------------------------------------------------- /Eeprom_AT24.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thtfcccj/Eeprom/e2fb5615e41ca7bb0a4624810066b7f1be7c0f34/Eeprom_AT24.c -------------------------------------------------------------------------------- /Eeprom_AVR.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thtfcccj/Eeprom/e2fb5615e41ca7bb0a4624810066b7f1be7c0f34/Eeprom_AVR.c -------------------------------------------------------------------------------- /Eeprom_FlashD.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thtfcccj/Eeprom/e2fb5615e41ca7bb0a4624810066b7f1be7c0f34/Eeprom_FlashD.c -------------------------------------------------------------------------------- /Eeprom_FlashDF.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thtfcccj/Eeprom/e2fb5615e41ca7bb0a4624810066b7f1be7c0f34/Eeprom_FlashDF.c -------------------------------------------------------------------------------- /Eeprom_FlashM.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thtfcccj/Eeprom/e2fb5615e41ca7bb0a4624810066b7f1be7c0f34/Eeprom_FlashM.c -------------------------------------------------------------------------------- /Eeprom_FlashS.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thtfcccj/Eeprom/e2fb5615e41ca7bb0a4624810066b7f1be7c0f34/Eeprom_FlashS.c -------------------------------------------------------------------------------- /Eeprom_PIC.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thtfcccj/Eeprom/e2fb5615e41ca7bb0a4624810066b7f1be7c0f34/Eeprom_PIC.c -------------------------------------------------------------------------------- /Eeprom_Pic16F18.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thtfcccj/Eeprom/e2fb5615e41ca7bb0a4624810066b7f1be7c0f34/Eeprom_Pic16F18.c -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | ##嵌入式系统通用驱动程序接口及其实现-EERPOM操作及存取位置 2 | 3 | * 此接口为具体项目中: 需要存取非易失性数据(EEPROM)的软件模块,提供统一的存取操作函数,实现了调用层与的EEPOM硬件/存储空间的分离。 4 | * 相关软件模块需要EEPROM存储数据时,统一通过包含"Eeprom.h"文件,实现操作的标准化;通过调用"InfoBase.h",实现存取位置的标准化。 5 | 6 | ####软件结构说明: 7 | + **Eeprom通用操作接口:** 即对外接口调用文件:**Eeprom.h** ,其它软件部分操作EEprom时,**包含此文件即可**。 8 | + **Eeprom操作接口的各种实现:** 以*Eeprom(下横线_)EEPOM硬件名称(或载体)_专用编译环境(可选,严重不建议代码与编译环境相关连)*命名, 与具体使用的EEPROM硬件有关,即有各种不同的实现。但一种硬件仅实现一次,项目中需要那个加入那个即可,具有通用性(*实现时需尽量排除编译器影响,使一个芯片的实现能在各种编译器里运行*)。 9 | 10 | ####使用说明: 11 | + 1.根据项目嵌入式硬件不同,将Eeprom.h和**与项目对应的**的Eeprom具体实现文件。增加到开发环境中。 12 | + 2.(此步可选) 查看Eeprom具体实现文件文件内,是否有“编译选项”部分(如I2C的24系列多个芯片的驱动用的是一个实现,所以根据实际使用芯片不同,需进行配置选择),若有,根据“编译选项”提示,在系统预编译头文件中增加相应配置。**为保证Eeprom实现文件的通用性,严禁对此实现做任何的改动**(BUG或提升功能与性能除外),若有不适用性,请复制后,包含复制文件进行操作。 13 | 14 | ####目录结构组织: 15 | * **小型项目时**: 即不区分组件层,放在“项目源文件目录\Eeprom”下,内部不再有子目录 16 | * **大中型项目时**: 区分组件层,放在“项目源文件目录\components\Eeprom”下,若项目很多,且同一项目也有较多实现时,可将具体实现文件放在此目录“项目名称”目录下,以实现分类存放。 17 | 18 | ####现支持的EEPROM: 19 | * Eeprom_AT24: AT24全系列(使用I2c标准接口) 20 | * Eepom_AVR: AVR 8位MCU内部 21 | * Eepom_PIC: PIC 8位中端19系列MCU内部 22 | * Eepom_PIC16F18: PIC 8位中端18系列MCU内部 23 | * Eepom_FlashXXX: 使用MCU的Flash模拟的EEPOM(使用Flash标准接口),主要有: 24 | + Eeprom_FlashS: 使用单页flash时的实现(注意保存期间不应掉电) 25 | + Eeprom_FlashM: 跨多页flash实现(注意保存期间不应掉电) 26 | + Eeprom_FlashD: 双页大容量Falsh实现(两页相同,但交叉存储以实现冗余,可提高可靠性) 27 | + Eeprom_FlashDS: 使用内部的Flash双页小空量-全RAM缓冲时实现(交叉存储,全部数据缓存至RAM) 28 | * EepomInner.h: 操作Eepom_Flash实现时,提供的内部辅助函数等,外部需调用其实现相关功能。 29 | 30 | ------------------------------------------------------------------------------- 31 | 32 | ##开源项目说明 33 | * 为各类单片机提供模板支持,**欢迎大家增加对各类嵌入式硬件的操作模板**,以让更多人使用 34 | * 版权声明: ...ch这世道,说了也等于白说,总之以下点: 35 | + **源代码部分:** 可以自由使用,源代码中,也不需做任何版权声明。 36 | + **分享时:** 为防止碎化片,请注明出处,以利于开源项目的推广。 37 | + **关于fork:** 这个欢迎(但为防止碎化片化,请不要分支或单独推广)。更欢迎为此开源项目直接贡献代码。 38 | 39 | ##此开源项目对应的教程 40 | * 视频在分享平台:http://thtfcccj.56.com 41 | * 与视频同步输入的文字,在http://blog.csdn.net/thtfcccj 42 | * 同步的开源项目,则在代码托管平台:https://github.com/thtfcccj 43 | 44 | ##此开源项目对应的两个件教学视频: 45 | * 嵌入式系统通用驱动程序接口及其实现2-EERPOM操作标准化 46 | * 嵌入式系统通用驱动程序接口及其实现n-EERPOM存取位置标准化 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | --------------------------------------------------------------------------------