硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1321|回复: 7
收起左侧

[TouchGFX] 请问如何实现累计工作时间

[复制链接]

9

主题

29

回帖

56

积分

初级会员

积分
56
发表于 2021-11-19 16:18:46 | 显示全部楼层 |阅读模式
想实现能够掉电保存当前的工作时间(掉电保存数据),再次上电后在这次的基础上继续计时,1.nand flash可以掉电保存数据,但是只保存三个整数数据的话感觉没必要。
2.用到的H743没有EEPROM,需使用flash来模拟EEPROM来保存数据

想请问前辈们是否有其他简单容易实现的方法吗

回复

使用道具 举报

39

主题

929

回帖

1051

积分

至尊会员

积分
1051
发表于 2021-11-19 16:34:14 | 显示全部楼层
你的系统有没有RTC?有些RTC芯片可以存点数据,有的话放RTC芯片里面。
回复

使用道具 举报

9

主题

29

回帖

56

积分

初级会员

积分
56
 楼主| 发表于 2021-11-19 16:40:38 | 显示全部楼层
ghslfgkkl88 发表于 2021-11-19 16:34
你的系统有没有RTC?有些RTC芯片可以存点数据,有的话放RTC芯片里面。

感谢您的回答!不过很遗憾没有rtc,工作时间是利用handleTickEvent 来更新的
回复

使用道具 举报

5

主题

521

回帖

536

积分

金牌会员

积分
536
发表于 2021-11-19 16:45:41 | 显示全部楼层
硬件不能增加EEPROM,那么直接写FLASH里面就可以。有API.
回复

使用道具 举报

9

主题

29

回帖

56

积分

初级会员

积分
56
 楼主| 发表于 2021-11-19 16:57:04 | 显示全部楼层
hqgboy 发表于 2021-11-19 16:45
硬件不能增加EEPROM,那么直接写FLASH里面就可以。有API.

感谢!请问您指的是 stm32h7xx_hal_flash.c 内的吗
回复

使用道具 举报

9

主题

29

回帖

56

积分

初级会员

积分
56
 楼主| 发表于 2021-11-19 17:23:50 | 显示全部楼层
hqgboy 发表于 2021-11-19 16:45
硬件不能增加EEPROM,那么直接写FLASH里面就可以。有API.

学到了学到了!用 HAL_FLASH_Program 写,用 变量 = *(uint32_t *)(0x08100000) 来读,不过请问直接写到flash的话掉电后数据可以保存的吗
回复

使用道具 举报

39

主题

929

回帖

1051

积分

至尊会员

积分
1051
发表于 2021-11-19 17:46:09 | 显示全部楼层
wangzhan1999 发表于 2021-11-19 17:23
学到了学到了!用 HAL_FLASH_Program 写,用 变量 = *(uint32_t *)(0x08100000) 来读,不过请问直接写到f ...

写flash其实是对flash烧录的过程,跟你下载程序是一样的道理。你需要经过先擦除、再写入的过程。只要成功了,当然就掉电保存了。

其实重要的是你怎么做,是掉电那一刻写入,还是定时写入。如果是掉电那一刻写入,你需要掉电检测进中断写入,还需要有存储一定电功率的电路支持。如果是定时写入,那片上flash可能并不合适。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107379
QQ
发表于 2021-11-20 01:32:17 | 显示全部楼层
掉电时间非常短暂,不足以支撑你操作内部Flash。像H7要擦除高达128KB。

挂个RTC电池,存到备份RAM或者RTC寄存器里面就行。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-29 07:30 , Processed in 0.167693 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表