暂存
This commit is contained in:
17
Drivers/rf.h
17
Drivers/rf.h
@@ -40,19 +40,20 @@ void EV1527_TxFrame(u32 addr, u8 dat);
|
||||
void EV1527_Transmit(u32 addr, u8 dat);
|
||||
|
||||
/**
|
||||
* @brief 获取特定引脚电平状态的持续微秒时间
|
||||
* @param state 待检测的电平目标状态 (0-低电平, 1-高电平)
|
||||
* @param timeout_us 最大等待超时上限 (单位: 微秒)
|
||||
* @return u16 最终测得的脉冲宽度时长。如果超出 timeout_us 仍未改变电平,则直接返回超时值。
|
||||
* @brief P3.6 (RF_RX_DATA) 边沿中断增量解码处理,由 main.c 的 Port3_Isr 在每次电平跳变时调用
|
||||
* @details 内部维护一个三态状态机 (空闲搜索 -> 同步头确认 -> 逐位收集),用相邻两次跳变的时间差
|
||||
* 还原刚结束的电平宽度,增量推进 EV1527 解码,凑齐 24 位后把结果写入内部标志供
|
||||
* EV1527_Decode() 非阻塞取用。全程不做任何阻塞等待,适合在中断上下文中调用。
|
||||
*/
|
||||
u16 GetPulseDuration(u8 state, u16 timeout_us);
|
||||
void RF_HandleEdgeInterrupt(void);
|
||||
|
||||
/**
|
||||
* @brief 阻塞式检测并解码一个合法的 EV1527 射频信号数据帧
|
||||
* @brief 非阻塞地检查一次 EV1527 射频信号是否已解码完成
|
||||
* @param out_addr 输出参数指针:若解码成功,将写入解析得到的 20 位发送地址 (即 24 位帧除去 4 位数据位后的剩余高 20 位)
|
||||
* @param out_data 输出参数指针:若解码成功,将写入解析出的 4 位命令状态数据码 (例如报警/SOS等)
|
||||
* @return bit 1-成功解析出一帧有效数据;0-当前未捕获到合法脉冲或校验失败
|
||||
* @note 此函数通过对 P3.6 (RF_RX_DATA) 输入脉冲宽度进行软件精密测量,定位同步头,依次采集 24 个数据位,并进行 3 次重复性去噪校验。
|
||||
* @return bit 1-本次调用取到了一帧新解码出的有效数据;0-当前尚无新结果
|
||||
* @note 真正的解码工作已经在 P3.6 边沿中断 (RF_HandleEdgeInterrupt) 中增量完成,
|
||||
* 本函数只是原子地检查并取出中断解码结果,可在主循环中高频调用而不会造成任何阻塞。
|
||||
*/
|
||||
bit EV1527_Decode(u32 *out_addr, u8 *out_data);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user