接入温湿度风扇产品固件(仲裁/条件/定时/显示),并补齐规格书与外设驱动
新增 usr_app 产品逻辑:手动>定时>条件仲裁、条件控温湿、定时任务、数码管显示、 按键/LED、风扇档位、NVM 掉电恢复、配对与开关机,上电按规格恢复上次状态。 新增 usr_periph:AHT20、CT1642、板级引脚与硬件封装;见宝协议 cond_config 改为 7 字节编解码,并接入产品 DP。 补充《温湿度风扇_固件需求规格书》,工程加入对应源文件。 .gitignore 忽略 WorkBuddy/Cursor 本地会话
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
/******************************************************************************
|
||||
* @file app_fan.c
|
||||
* @brief CBR3 风扇档位实现
|
||||
* @author cyWu <1917507415@qq.com>
|
||||
* @date 2026.08.29
|
||||
* @version V1.0.0
|
||||
* @history
|
||||
* - V1.0.0, 2026.08.29, cyWu, 首次发布
|
||||
******************************************************************************/
|
||||
|
||||
#include "app_fan.h"
|
||||
#include "bsp_hw.h"
|
||||
#include "board_pin.h"
|
||||
|
||||
#define LOG_TAG_CONST APP
|
||||
#define LOG_TAG "[APP_FAN]"
|
||||
#define LOG_INFO_ENABLE
|
||||
#include "debug.h"
|
||||
|
||||
static uint8_t s_gear;
|
||||
|
||||
/**
|
||||
* @brief 初始化风扇(档位 0,PWM 关)
|
||||
* @return 无
|
||||
*/
|
||||
void app_fan_init(void)
|
||||
{
|
||||
#if !BOARD_FAN_ENABLE
|
||||
log_info("fan disabled\n");
|
||||
return;
|
||||
#endif
|
||||
s_gear = 0;
|
||||
bsp_fan_set_duty(BOARD_FAN_DUTY_GEAR0);
|
||||
log_info("fan init gear=0\n");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 设置档位并立即生效(P0 无软爬坡)
|
||||
* @param gear 0=关,1=50%,2=75%,3=100%;>3 钳位到 3
|
||||
* @return 无
|
||||
*/
|
||||
void app_fan_set_gear(uint8_t gear)
|
||||
{
|
||||
#if !BOARD_FAN_ENABLE
|
||||
(void)gear;
|
||||
s_gear = 0;
|
||||
return;
|
||||
#endif
|
||||
static const uint16_t duty_tbl[4] = {
|
||||
BOARD_FAN_DUTY_GEAR0, BOARD_FAN_DUTY_GEAR1,
|
||||
BOARD_FAN_DUTY_GEAR2, BOARD_FAN_DUTY_GEAR3
|
||||
};
|
||||
|
||||
if (gear > 3) {
|
||||
gear = 3;
|
||||
}
|
||||
if (gear == s_gear) {
|
||||
return;
|
||||
}
|
||||
s_gear = gear;
|
||||
bsp_fan_set_duty(duty_tbl[gear]);
|
||||
log_info("fan gear=%d duty=%u/10000\n", gear, (unsigned)duty_tbl[gear]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 查询当前真实档位(DP2 必须等于它,通风停段时为 0)
|
||||
* @return 0~3
|
||||
*/
|
||||
uint8_t app_fan_get_gear(void)
|
||||
{
|
||||
return s_gear;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 业务节拍(P0 无动作,保留接口供 P1 爬坡)
|
||||
* @param dt 距上次调用的毫秒数
|
||||
* @return 无
|
||||
*/
|
||||
void app_fan_run(uint16_t dt)
|
||||
{
|
||||
(void)dt;
|
||||
}
|
||||
Reference in New Issue
Block a user