接入温湿度风扇产品固件(仲裁/条件/定时/显示),并补齐规格书与外设驱动
新增 usr_app 产品逻辑:手动>定时>条件仲裁、条件控温湿、定时任务、数码管显示、 按键/LED、风扇档位、NVM 掉电恢复、配对与开关机,上电按规格恢复上次状态。 新增 usr_periph:AHT20、CT1642、板级引脚与硬件封装;见宝协议 cond_config 改为 7 字节编解码,并接入产品 DP。 补充《温湿度风扇_固件需求规格书》,工程加入对应源文件。 .gitignore 忽略 WorkBuddy/Cursor 本地会话
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
/******************************************************************************
|
||||
* @file app_nvm.h
|
||||
* @brief CBR3 VM 持久化(P1 起):mode/fan_gear/条件/定时/使能
|
||||
* @author cyWu <1917507415@qq.com>
|
||||
* @date 2026.08.29
|
||||
* @version V1.1.0
|
||||
* @history
|
||||
* - V1.0.0, 2026.08.29, cyWu, 首次发布(P0 仅接口与 stub)
|
||||
* - V1.1.0, 2026.08.31, cyWu, P1 实现:3 个 VM item(状态/条件/定时)+ 500ms
|
||||
* 防抖写入 + 立即写接口
|
||||
*
|
||||
* @note 存:mode、fan_gear、cond_en、cond_config1~7、time_en、time_config1~7、
|
||||
* fault_en、alarm_en。不存:DP0、条件作废标志、模式已运行秒数、原始采样。
|
||||
* 写 VM 时机:APP 改配置后、单次定时自毁、软关机前、档位/模式稳定变化
|
||||
* (500ms 防抖)。
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __APP_NVM_H__
|
||||
#define __APP_NVM_H__
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/**
|
||||
* @brief 初始化(校验 VM 有效性,仅日志;数据加载在 app_nvm_load)
|
||||
* @return 无
|
||||
*/
|
||||
void app_nvm_init(void);
|
||||
|
||||
/**
|
||||
* @brief 立即保存全部业务字段到 VM(软关机前等关键时机调用)
|
||||
* @note syscfg 写入不能在裸中断里调用;本函数由业务时基回调触发,
|
||||
* 与 SDK norflash 缓存同步(sys_timeout 回调)同级,可安全执行
|
||||
* @return 无
|
||||
*/
|
||||
void app_nvm_save(void);
|
||||
|
||||
/**
|
||||
* @brief 从 VM 加载业务字段并应用(开机 3s 后调用):
|
||||
* mode/fan_gear 恢复、条件/定时配置回填 gDevData;mode 从周期头开跑
|
||||
* @return 无
|
||||
*/
|
||||
void app_nvm_load(void);
|
||||
|
||||
/**
|
||||
* @brief 业务节拍(中断上下文):变化检测 + 防抖计时,**不执行写入**
|
||||
* @param dt 距上次调用的毫秒数
|
||||
* @note ⚠ 跑在 usr_timer 20ms 回调 = 硬件定时器中断上下文,栈极小,
|
||||
* 只允许轻量比较计时;禁止在此调 syscfg_write(会栈溢出复位)。
|
||||
* @return 无
|
||||
*/
|
||||
void app_nvm_tick(uint16_t dt);
|
||||
|
||||
/**
|
||||
* @brief 任务上下文落盘:防抖满后真正写 VM(由 usr_timer_loop 500ms 调用)
|
||||
* @note 必须且只能在非中断上下文调用(VM 擦写 flash 栈用量大)
|
||||
* @return 无
|
||||
*/
|
||||
void app_nvm_flush(void);
|
||||
|
||||
/**
|
||||
* @brief 标记业务字段有变化,防抖计时归零(档位/模式/配置变化时调用)
|
||||
* @return 无
|
||||
*/
|
||||
void app_nvm_mark_dirty(void);
|
||||
|
||||
/**
|
||||
* @brief 出厂重置:清全部业务 VM(保留 BLE 配对,规格书第 14 章)
|
||||
* @note 由 jb_product DP25 调用;RAM 复位由调用方完成
|
||||
* @return 无
|
||||
*/
|
||||
void app_nvm_reset(void);
|
||||
|
||||
#endif /* __APP_NVM_H__ */
|
||||
Reference in New Issue
Block a user