重构手环软件架构:实现动态挂载前后台 App 框架,解耦拆分源文件,并引入统一日志宏 xtell.h

This commit is contained in:
Antigravity IDE
2026-07-17 09:08:53 +08:00
parent 8fdbb32f42
commit c0d1fe74f5
18 changed files with 1380 additions and 1155 deletions

View File

@@ -179,17 +179,13 @@ u16 GetPulseDuration(u8 state, u16 timeout_us)
return (u16)((u32)GetTimer0_Safe() * 12UL / (MAIN_Fosc / 1000000UL));
}
/**
* @brief 软件自适应解码接收一帧无线 EV1527 信号
* @param out_addr 解码成功后,用于回传物理地址高 20 位的指针
* @param out_data 解码成功后,用于回传指令数据低 4 位的指针
* @return bit 1-解码成功且校验通过0-捕获失败或脉冲畸变
* @note 核心算法:
* 1. 等待并寻找合法的同步引导头脉冲 (1T高电平 + 31T低电平其中低/高比率约为 31本程序允许比率在 15~48 内变化以抗物理畸变)。
* 2. 依据捕获的同步低电平宽度估算基准周期 T = low_time / 31。
* 3. 随后依次高精度捕获 24 个数据位的高电平和低电平时间。
* 4. 自适应决策:对于每个 bit如果其高电平时间 raw_h > 低电平时间 raw_l则判定该位为 1否则判定该位为 0。
*/
#include "../App/xtell.h"
// 模拟射频信号全局变量定义
volatile u32 mock_rx_addr = 0;
volatile u8 mock_rx_data = 0;
volatile bit mock_rf_ready = 0;
bit EV1527_Decode(u32 *out_addr, u8 *out_data)
{
u16 high_time, low_time;
@@ -200,6 +196,14 @@ bit EV1527_Decode(u32 *out_addr, u8 *out_data)
u16 idata raw_h[24]; // 高电平时间寄存数组 (置于 idata 区)
u16 idata raw_l[24]; // 低电平时间寄存数组
// 检查模拟射频触发
if (mock_rf_ready) {
mock_rf_ready = 0;
*out_addr = mock_rx_addr;
*out_data = mock_rx_data;
return 1;
}
// ====== 1. 同步头引导脉冲捕获 (定位上升沿) ======
{
u16 wait_cnt = 0;