算法(3) flash存储多包大数据
发布日期:2021-06-29 05:35:52 浏览次数:3 分类:技术文章

本文共 1268 字,大约阅读时间需要 4 分钟。

1:说明

在开发项目过程中,经常用到flash存数据,但有时数据长度是确定的,比如说用户参数配置之类的,但有时有的数据长度是不确定的,如长度多包大数据,每包格式一样,但总数据量可变的数据

2:执行步骤

2.1 在结构体中确定好的长度数据:

(1)前期定义:

typedef struct{
uint16_t data_len; uint8_t data[1000];}STU_BOOD_METER; //
STU_BOOD_METER STU_Bloodmeter;//结构体申明#define DATA_HEAD_2g    0xCCCCCCCC//用于确定是否flash写过数据#define MAX_BUF_LEN ((sizeof(STU_Bloodmeter )+3)/4)//结构体最大长度

前面两个字节定义长度,后面定义数据

(2):读取数据操作**

在这里插入图片描述
(3)写入数据操作
用标志位save_2g_flash_fla,

uint8_t save_2g_flash_fla =0;void set_save_2g_flash(void){
save_2g_flash_fla=1;}void task_Write_2g_flash(void){
if(save_2g_flash_fla==0) return; save_2g_flash_fla =0; uint32_t data_head= DATA_HEAD_2g; Flash_Erase_Page(FLASH_QUEUE_ADDR/PAGE_SIZE);//HIS_ADDR RSV1_ADDR Flash_Write_World((uint32_t *)FLASH_QUEUE_ADDR,&data_head,1); Flash_Write_World((uint32_t *)(FLASH_QUEUE_ADDR+4),(uint32_t *)&STU_Bloodmeter.data_len,MAX_BUF_LEN/4); }

(4)得到用户数据后,存于结构体

在这里插入图片描述
每次得到数据加上偏移地址,后调用set_save_2g_flash(),存于flash

2.2 在结构体中

typedef struct{
char* root_ca; char* client_cer; char* client_p_key;}SSL_CER_FILE;

用g_ssl_file.root_ca = (char*)malloc(user_para.ca_cer_len+1); // 分配内存

nvs_read_ssl_data_from_flash(1,g_ssl_file.root_ca);//&user_para.ca_cer_len); /* 读取证书 */
用malloc得到数据,这样结构体就没必要定义确定的长度,但需要确认flash能存多大数据

可以加入QQ群:687360507

与大伙沟通交流,技术在于分享而进步

转载地址:https://blog.csdn.net/zhi_Alanwu/article/details/108202883 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:NRF52832笔记(17)出现nrf_erratas.h :no such file or directory
下一篇:CC26x2R1笔记(13)ble 5.0 广播Phy配置情况

发表评论

最新留言

不错!
[***.144.177.141]2024年04月03日 12时29分33秒