ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

HRTOS实战示例:24C02 EEPROM掉电保存与4位数码管显示

HRTOS实战示例:24C02 EEPROM掉电保存与4位数码管显示 EEPROM 是 8051 嵌入式开发中非常常见的非易失性存储器件可以用于保存配置参数、计数值、设备状态等数据。本次 HRTOS 基础示例增加24C02 EEPROM 4位数码管显示案例通过 24C02 保存一个计数值并使用 HRTOS 任务完成 EEPROM 数据读取、加1、写回以及数码管显示。这个示例还可以直观体现 EEPROM 的一个重要特点数据掉电后仍然能够保存。一、示例实现的功能程序使用 24C02 的0x00地址保存数据。系统运行后读取 EEPROM 数据 ↓ 数据 1 ↓ 写回 EEPROM ↓ 数码管显示当前数据 ↓ 等待 ↓ 继续下一次显示范围为0000 ~ 0255例如 EEPROM 当前保存50数码管显示0050重新上电后程序再次读取 EEPROM 中的数据之前保存的数据不会因为断电而消失。二、EEPROM读写任务EEPROM 的读写由task_eeprom()独立完成。首先读取 24C02 中保存的数据eeprom_value eeprom_24c02_read(0x00);随后等待一段时间再将数据加 1eeprom_value;然后写回 EEPROMeeprom_24c02_write(0, eeprom_value);最后再次延时然后开始下一轮操作。因此程序会不断对 EEPROM 中保存的数值进行递增。这里使用os_delay()让任务在读写操作之间进行等待也体现了 HRTOS 在外设操作场景中的基本使用方式。三、为什么需要考虑EEPROM写入间隔EEPROM 与普通 RAM 不同。写入 EEPROM 是一个实际的非易失性存储操作因此在应用设计中通常需要考虑写入周期以及写入频率。本示例在 EEPROM 操作之间加入了os_delay(100);避免连续进行过于紧密的写入操作。对于实际项目而言如果 EEPROM 用于保存配置参数或者运行数据还可以进一步根据具体器件特性设计更加完善的写入策略例如减少不必要的重复写入。本示例主要用于展示 24C02 的基本读写流程因此保持了代码结构的简单性。四、数码管显示任务另一个 HRTOS 任务负责显示当前 EEPROM 数据。程序获取当前的eeprom_value然后将数据拆分为四位通过数码管进行显示。例如0 → 0000 1 → 0001 50 → 0050 100 → 0100 255 → 0255对应代码通过drv_seg_display()分别控制四位数码管。这样 EEPROM 中保存的数据变化过程就能够直观地显示出来。五、两个任务进行功能分工整个示例依然采用 HRTOS 的任务化结构HRTOS │ ├── task_eeprom │ ├── 读取24C02 │ ├── 数据1 │ ├── 写入24C02 │ └── 延时 │ └── task_seg_display └── 显示当前数据EEPROM 任务负责数据存储。数码管任务负责数据显示。两个任务分别完成不同功能由 HRTOS 负责统一调度。这种结构也方便后续继续扩展功能。六、断电后数据仍然存在这个示例最直观的实验现象就是掉电保存。例如第一次运行时EEPROM 0000程序读取后加 1EEPROM 0001再次运行EEPROM 0002继续运行0003 0004 0005 ...如果此时关闭开发板电源再重新上电程序不会从0000重新开始而是会读取 24C02 中之前保存的数据继续运行。这也是 EEPROM 与 RAM 最明显的区别之一。七、这个示例可以用于哪些实际场景虽然本例只是一个简单的计数实验但它对应的技术在实际 8051 项目中非常常见。例如保存设备配置参数保存设备地址保存运行模式保存校准参数保存累计运行次数保存设备状态保存掉电需要保留的数据。因此通过这个简单示例可以进一步理解 HRTOS 与非易失性存储器结合使用的基本方式。八、HRTOS基础示例持续完善目前 HRTOS 的基础示例正在持续扩充。这些示例并不是单纯为了展示代码数量而是尽量覆盖 8051 开发中经常使用的基础外设和功能。目前已经可以围绕不同硬件逐步构建GPIO PWM 继电器 数码管 EEPROM 传感器 串口 通信 ...同时结合 HRTOS 的任务 延时 调度 同步 消息 驱动 Shell形成更加完整的实际应用案例。对于开发者而言可以直接从基础示例入手逐步了解 HRTOS 在真实 8051 项目中的使用方式。HRTOS 也会继续对这些基础示例进行维护、整理和实际硬件验证。持续维护持续验证持续完善。
返回列表