更新时间:2024-01-17 09:28:10下载pdf
SDK 提供非易失存储,用于应用层参数存储。
概念 | 说明 |
---|---|
非易失存储 | 设备掉电之后不会丢失的存储。 |
增量式存储 | 由于 Flash 存储每次写入之前需要擦除的特点,当 Flash 资源比较多或者为了考虑存储效率和稳定性的情况下,会采用在新的区域写入的方式,实现信息存储。例如,应用层总共需要存储的所有变量 256 字节。
|
对 256 字节的 EEPROM 进行抽象的操作 API。尤其,当实际芯片没有 EEPROM 时,底层利用 256*16 字节进行模拟 EEPROM 实现。
这意味着上层最好只用来存储一些短信息,例如灯的开关状态等,不适合存储大量信息。
无对外数据结构,用户无需关注。
函数 | OPERATE_RET hal_storage_256_read_bytes (UINT16_T offset, UINT8_T* pdata, UINT8_T len) |
- |
---|---|---|
作用 | 256 字节的非易失存储读取 | - |
入参 | offset | 256 字节 EEPROM 的访问偏移地址 |
-> | pdata | 读取的数据存放处 |
-> | len | 希望读取的数据长度 |
函数 | OPERATE_RET hal_storage_256_write_bytes (unsigned short offset, unsigned char* pdata, unsigned char len) |
- |
---|---|---|
作用 | 256 字节的非易失存储写入 | - |
入参 | offset | 256 字节 EEPROM 的访问偏移地址 |
-> | pdata | 待写入的数据 |
-> | len | 写入数据长度 |
offset
的要求如下:
HS256_USER
≤ offset
< 256offset
必须是 8 的倍数示例
基线对外 Demo:tuyaos_demo_beaconmesh_peripheral
。
void app_led_reset_run(beacon_dev_s *beacon_dev){
static u8 reset_judge_time = 1;
static u8 state = STATE_NOT_PAIRED;
static u32 count_1s_time = 0;
static u32 count_1s = 0;
u8 cnt;
if(beacon_dev->state == STATE_PAIRED){
if(reset_judge_time != 0){//300ms~6S
if(hal_clock_time_exceed(0,reset_judge_time*300000)){//300MS
if(reset_judge_time == 1){
reset_judge_time = 20;
if(0 == hal_storage_256_read_bytes(HS256_USER, &cnt,1)){//success
if(cnt > RESET_MAX_CNT)cnt = 0;
}else{
cnt = 0;
}
cnt++;
if(cnt >= RESET_MAX_CNT){
cnt = 0;
ty_beacon2_node_reset(0,180000000);
//app_led_blink(0xFF);
reset_judge_time = 0;
}
hal_storage_256_write_bytes(HS256_USER, &cnt,1);
}else if(reset_judge_time == 20){
reset_judge_time = 0;
cnt = 0;
hal_storage_256_write_bytes(HS256_USER, &cnt,1);
}
}
}
}
}
使用用户区第 1 偏移的 1 字节,存储在短时间内的上电次数,做三次设备重新上下电重置的逻辑。
打开 Log。
在开发过程遇到问题,您可以登录 TuyaOS 开发者论坛 TuyaOS-蓝牙设备开发 版块进行沟通咨询。
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈