1.0
This commit is contained in:
53
App/laser/laser_manager.h
Normal file
53
App/laser/laser_manager.h
Normal file
@@ -0,0 +1,53 @@
|
||||
#ifndef __LASER_SIMPLE_H
|
||||
#define __LASER_SIMPLE_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include "usart.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef enum {
|
||||
LASER_CH_FRONT_STP = 0,
|
||||
LASER_CH_FRONT_ATK,
|
||||
LASER_CH_REAR_STP,
|
||||
LASER_CH_REAR_ATK,
|
||||
LASER_CH_MAX
|
||||
} laser_channel_t;
|
||||
|
||||
typedef struct {
|
||||
uint16_t distance_mm; // [新增] 经过中值滤波处理后平滑的距离值 (推荐用于避障控制)
|
||||
uint16_t raw_distance_mm; // [新增] 传感器吐出的原始距离值 (供调试或特殊算法读取)
|
||||
uint8_t valid; // 数据是否有效
|
||||
uint8_t online; // 雷达是否在线(未超时)
|
||||
uint8_t fault_code; // 故障码 (0为正常,0x80为超时)
|
||||
uint32_t update_tick_ms; // 最后一次数据刷新的系统节拍
|
||||
} laser_simple_data_t;
|
||||
|
||||
typedef struct {
|
||||
laser_simple_data_t ch[LASER_CH_MAX];
|
||||
} laser_simple_snapshot_t;
|
||||
|
||||
/* 初始化并启动 DMA 及解析任务 */
|
||||
void LASER_SIMPLE_Init(void);
|
||||
|
||||
/* 周期调用 (实际为空,保留接口兼容) */
|
||||
void LASER_SIMPLE_Poll(uint32_t tick_ms);
|
||||
|
||||
/* 获取统一快照 (无数据撕裂风险) */
|
||||
const laser_simple_snapshot_t *LASER_SIMPLE_GetSnapshot(void);
|
||||
|
||||
/* 获取前后最小有效距离 (使用滤波后的值) */
|
||||
uint16_t LASER_SIMPLE_GetFrontNearest(void);
|
||||
uint16_t LASER_SIMPLE_GetRearNearest(void);
|
||||
/* --- 新增:暴露给全局回调分发器的专用接口 --- */
|
||||
void LASER_UART_RxCpltCallback(UART_HandleTypeDef *huart);
|
||||
void LASER_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart);
|
||||
void LASER_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size);
|
||||
void LASER_UART_ErrorRecovery(UART_HandleTypeDef *huart);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user