NRF52832的FDS程序,参考非蓝牙例程修改而来(需要增加DFU的基础上只要增加如下程序即可解决)
/* Dummy configuration data. */
static configuration_t m_dummy_cfg =
{
.config1_on = false,
.config2_on = true,
.boot_count = 0x0,
.device_name = "dummy",
}; /* A record containing dummy configuration data. */
static fds_record_t const m_dummy_record =
{
.file_id = CONFIG_FILE,
.key = CONFIG_REC_KEY,
.data.p_data = &ucheck_v,//&m_dummy_cfg,
/* The length of a record is always expressed in 4-byte units (words). */
.data.length_words = (sizeof(ucheck_v) + 3) / sizeof(uint32_t),
}; /* Keep track of the progress of a delete_all operation. */
//static struct
//{
// bool delete_next; //!< Delete next record.
// bool pending; //!< Waiting for an fds FDS_EVT_DEL_RECORD event, to delete the next record.
//} m_delete_all; void user_data_update(void)
{
ret_code_t rc; // NRF_LOG_INFO("Reading flash usage statistics..."); fds_stat_t stat = {0}; rc = fds_stat(&stat);
APP_ERROR_CHECK(rc); NRF_LOG_INFO("Found %d valid records.", stat.valid_records);
NRF_LOG_INFO("Found %d dirty records (ready to be garbage collected).", stat.dirty_records); fds_record_desc_t desc = {0};
fds_find_token_t tok = {0}; rc = fds_record_find(CONFIG_FILE, CONFIG_REC_KEY, &desc, &tok); if (rc == FDS_SUCCESS)
{
/* A config file is in flash. Let's update it. */
fds_flash_record_t config = {0}; /* Open the record and read its contents. */
rc = fds_record_open(&desc, &config);
APP_ERROR_CHECK(rc); /* Copy the configuration from flash into m_dummy_cfg. */
//memcpy(&ucheck_v, config.p_data, sizeof(check_V));//这里是更新数据,所以不能把旧数据复制过来了 NRF_LOG_INFO("Config file found, updating boot count to %d.", ucheck_v.boot_count); /* Update boot count. */
ucheck_v.boot_count++; /* Close the record when done reading. */
rc = fds_record_close(&desc);
APP_ERROR_CHECK(rc); /* Write the updated record to flash. */
rc = fds_record_update(&desc, &m_dummy_record);
APP_ERROR_CHECK(rc);
}
else
{
/* System config not found; write a new one. */
NRF_LOG_INFO("Writing config file..."); rc = fds_record_write(&desc, &m_dummy_record);
APP_ERROR_CHECK(rc);
} //cli_start();
}
void user_init_data_flash(void)
{
ret_code_t rc;
fds_record_desc_t desc = {0};
fds_find_token_t tok = {0}; rc = fds_record_find(CONFIG_FILE, CONFIG_REC_KEY, &desc, &tok); if (rc == FDS_SUCCESS)
{
/* A config file is in flash. Let's update it. */
fds_flash_record_t config = {0}; /* Open the record and read its contents. */
rc = fds_record_open(&desc, &config);
APP_ERROR_CHECK(rc); /* Copy the configuration from flash into m_dummy_cfg. */
memcpy(&ucheck_v, config.p_data, sizeof(check_V)); NRF_LOG_INFO("Config file found, updating boot count to %d.", ucheck_v.boot_count); /* Update boot count. */
ucheck_v.boot_count++; /* Close the record when done reading. */
rc = fds_record_close(&desc);
APP_ERROR_CHECK(rc); /* Write the updated record to flash. */
rc = fds_record_update(&desc, &m_dummy_record);
APP_ERROR_CHECK(rc);
} }
在增加了DFU之后的52832程序,只要增加如下程序就可以完成FDS的数据保存
NRF52832的FDS程序,参考非蓝牙例程修改而来(需要增加DFU的基础上只要增加如下程序即可解决)的更多相关文章
- (Map)利用Map,完成下面的功能: 从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队。如果该 年没有举办世界杯,则输出:没有举办世界杯。 附:世界杯冠军以及对应的夺冠年份,请参考本章附录。 附录 (Map)在原有世界杯Map 的基础上,增加如下功能: 读入一支球队的名字,输出该球队夺冠的年份列表。 例如,读入“巴西”,应当输出 1958 1962 1970 1
package homework001; import java.util.HashMap; import java.util.Scanner; public class Map { public s ...
- QT创建模态对话框阻塞整个应用程序和非模态对话框唯一性约束的简单示例
QT创建模态对话框阻塞整个应用程序和非模态对话框唯一性约束的简单示例 部分代码: // 创建模态对话框阻塞整个应用程序和非模态对话框唯一性约束 QMenu *pDialog = mBar->ad ...
- 操作系统的发展史(并发与并行)<异步与同步>《进程与程序》[非堵塞与堵塞]
目录 一:一:手工操作 -- 穿孔卡片 1.简介 二:手工操作方式两个特点: 三:批处理 -- 磁带存储 1.联机批处理系统 2.脱机批处理系统 3.多道程序系统 4.多道批处理系统 四:总结发展史 ...
- C#取得Web程序和非Web程序的根目录的N种取法
取得控制台应用程序的根目录方法方法1.Environment.CurrentDirectory 取得或设置当前工作目录的完整限定路径方法2.AppDomain.CurrentDomain.BaseDi ...
- 从此走上一条iOS程序猿不归路。。。
新的城市,新的生活!前不久刚刚结束了苦逼的面试找工作之旅,期间也小有收货,如今正处年底工作闲暇之余,将前一阵子陆陆续续的总结整理了一下,本人菜鸟程序猿一只,水平有限,本文总结的知识不算深入,比较浅显, ...
- Lua 学习之基础篇九<Lua 协同程序(Coroutine)>
引言 讲到协程,首先来介绍一下线程和协程的区别 lua协程和多线程 相同之处:拥有自己独立的桟.局部变量和PC计数器,同时又与其他协程共享全局变量和其他大部分东西 不同之处:一个多线程程序可以同时运行 ...
- 应用程序框架实战十四:DDD分层架构之领域实体(基础篇)
上一篇,我介绍了自己在DDD分层架构方面的一些感想,本文开始介绍领域层的实体,代码主要参考自<领域驱动设计C#2008实现>,另外参考了网上找到的一些示例代码. 什么是实体 由标识来区分的 ...
- 基于php基础语言编写的小程序之计算器
基于php基础语言编写的小程序之计算器 需求:在输入框中输入数字进行加.减.乘.除运算(html+php) 思路: 1首先要创建输入数字和运算符的输入框,数字用input的text属性,运算符用sel ...
- 【转】appStore上传苹果应用程序软件发布流程
转载地址:http://blog.sina.com.cn/s/blog_68661bd801019uzd.html 首先确定帐号是否能发布, https://developer.apple.com/a ...
- appStore上传苹果应用程序软件发布流程(之前都是同事发,复制一份备用)
首先确定帐号是否能发布, https://developer.apple.com/account,如果你打开Provisioning Portal,然后点击DisTribution看到的是下图中那样, ...
随机推荐
- db2iupgrade / db2ckupgrade failure due to SQL0551N
db2iupgrade / db2ckupgrade failure due to SQL0551N Troubleshooting Problem db2iupgrade or db2ckupgra ...
- EasyExcel工具使用
pom文件: <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel< ...
- JiaoZiVideoPlayer模拟用户点击,切换播放引擎!~
默认播放及模拟用户点击播放按钮 jzvideoPlayerStandard.startButton.performClick() 切换播放引擎及使用Ijkplayer JZVideoPlayer.se ...
- 《OKR源于英特尔和谷歌的目标管理利器》读书笔记
17年10月下旬至11月,因团队需要改变考核方式以及更好的服务业务,Q4将尝试OKR的方式进行考核,故阅读了此书,有些想法与笔记. OKR定义:OKR是一套严密的思考框架和持续的纪律要求,旨在确保员工 ...
- react backend and frontend download file
import { View as ViewFile} from '@/api/SafetyRule'; const Handler_DownLoadFile = (Id:number,IsEngli ...
- vue-quill-editor 图片上传处理
<template> <div class="quill-editor"> <!-- 图片上传组件辅助--> <el-upload cla ...
- 学习sql
里面说了很多sql的应用,可以借鉴以下网址:https://www.w3school.com.cn/sql/index.asp
- python 处理CAD文件
注意:如下的两个脚本都是我自己亲自试过的,可以运行得到结果!可以直接运行!可以直接运行! 网上的中文api能找到的不够全,工作中有用到部分功能,自己从中文英文资料里面找到一些,这里做一些总结. 画图a ...
- C语言II一作业02
1.作业头 | 这个作业属于哪个课程 | < https://edu.cnblogs.com/campus/zswxy/SE2020-3> | | ---- | ---- | ---- | ...
- 3.17阿里Java后端,电商 sku 的全排列算法
3.17阿里Java后端 字典 有英文字典:Map<Character, String[]>,示例如下: a : [a, an] b : [bus, bird] c : [car, can ...