releasev1.2

This commit is contained in:
kirl committed 2026-08-03 04:09:26 +08:00
1 parent 74010ef611
commit c296caa328
10 files changed
+693 -267

No files matched your search

+58 -5
View File
@@ -25,7 +25,7 @@ extern "C" {
* 可配置常量
* ============================================================ */
#define EMM_V5_UART_BAUDRATE 115200
#define EMM_V5_UART_BUF_SIZE 256
#define EMM_V5_UART_BUF_SIZE 512
/* 接收超时时间 (毫秒) */
#define EMM_V5_RX_TIMEOUT_MS 100
@@ -220,10 +220,63 @@ void Emm_V5_Origin_Trigger_Return(uint8_t addr, uint8_t o_mode, bool snF);
void Emm_V5_Origin_Interrupt(uint8_t addr);
/**
* @brief 接收电机返回数据 (100ms 超时判定帧结束)
* @param rxCmd 接收缓冲区
* @param maxLen 缓冲区最大长度
* @return 实际接收到的字节数
* @brief 等待指定电机到位 (事件驱动, 不消费到位位)
*
* 电机驱动 Response 菜单设为 Reached/Both/Other 后, 位置模式 (0xFD) 命令
* 运动到位会主动回传到位帧 (地址 + FD + 9F + 6B)。UART RX 由本组件内部
* 任务中断读取并解析, 此处事件等待全部到位, 不再轮询 S_TPOS/S_CPOS。
*
* @note 本函数不清除到位位, 便于调用方分段等待 (如等待期间闪烁 LED);
* 一段 motion 等待结束后必须调用 Emm_V5_Arrival_Consume 清除,
* 防止残留位污染下一段 motion。
* @param addrs 电机地址数组, 如 {ACTUATOR_ADDR_X}
* @param count 数组长度
* @param timeout_ms 本次等待超时 (ms); 0 = 立即返回当前状态
* @return true=全部到位, false=超时/未到齐
*/
bool Emm_V5_Wait_Arrival(const uint8_t *addrs, uint8_t count, uint32_t timeout_ms);
/**
* @brief 消费 (清除) 指定电机的到位位
* @param addrs 电机地址数组
* @param count 数组长度
* @note 一段 motion 的到位等待结束后调用 (成功/超时都要调)
*/
void Emm_V5_Arrival_Consume(const uint8_t *addrs, uint8_t count);
/**
* @brief 清除全部电机到位位 (开始新一段 motion 前调用)
* @note 防止上一段 motion 超时后迟到的到位帧 (或 0 脉冲命令仍回传的帧)
* 污染新一段 motion 的到位等待
*/
void Emm_V5_Arrival_Reset(void);
/**
* @brief 查询当前已置位的到位位 (调试用)
* @return 位掩码: bit = (电机地址 - 1), 仅低 8 位有效
*/
uint32_t Emm_V5_Arrival_Get_Bits(void);
/**
* @brief 发送读取系统参数命令并等待响应帧返回 (请求-响应式)
* @param addr 电机地址
* @param s 系统参数类型 (@see EmmSysParams_t)
* @param rxOut 接收缓冲区
* @param maxLen 缓冲区最大长度
* @param timeout_ms 等待响应超时 (ms)
* @return 实际收到的响应字节数 (含 地址/功能码/.../0x6B), 失败返回 0
*/
uint8_t Emm_V5_Read_Sys_Params_Resp(uint8_t addr, EmmSysParams_t s,
uint8_t *rxOut, uint8_t maxLen,
uint32_t timeout_ms);
/**
* @brief 接收电机返回数据
* @deprecated UART RX 已由内部 RX 任务独占 (中断驱动), 此函数不再读取 UART;
* 网页手动读参数请改用 Emm_V5_Read_Sys_Params_Resp
* @param rxCmd 接收缓冲区 (保留, 未使用)
* @param maxLen 缓冲区最大长度 (保留, 未使用)
* @return 恒为 0
*/
uint8_t Emm_V5_Receive_Data(uint8_t *rxCmd, uint8_t maxLen);