From 843936525ffaaba73d9efb2435c55ccdea853724 Mon Sep 17 00:00:00 2001 From: Robofish <1683502971@qq.com> Date: Wed, 4 Feb 2026 17:39:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dmrobot?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 8196 -> 8196 bytes assets/User_code/device/mrobot/mrobot.c | 8 +-- assets/User_code/task/task.c.template | 3 + assets/User_code/task/template_task/cli.c | 52 ++++++++++++++++++ assets/User_code/task/template_task/task.yaml | 12 +++- 5 files changed, 70 insertions(+), 5 deletions(-) create mode 100644 assets/User_code/task/template_task/cli.c diff --git a/.DS_Store b/.DS_Store index d581e4ca6f22e40966dd66e7461deaafd35cda2e..80ccfc36d15482db129e9dd7d19f4ff54a6d438b 100644 GIT binary patch delta 38 ocmZp1XmOa}&&a= 32 && ch < 127 && ctx.cmd_index < sizeof(ctx.cmd_buffer) - 1) { ctx.cmd_buffer[ctx.cmd_index++] = ch; - BSP_UART_Transmit(BSP_UART_MROBOT, &ch, 1, false); + /* 回显:使用静态变量地址,避免异步发送时局部变量已失效 */ + BSP_UART_Transmit(BSP_UART_MROBOT, &ctx.uart_rx_char, 1, false); } BSP_UART_Receive(BSP_UART_MROBOT, &ctx.uart_rx_char, 1, false); @@ -483,9 +484,8 @@ void MRobot_Init(void) { /* 创建互斥锁 */ ctx.mutex = xSemaphoreCreateMutex(); - /* 初始化状态 */ - memset(ctx.devices, 0, sizeof(ctx.devices)); - ctx.device_count = 0; + /* 初始化状态(保留已注册的设备) */ + // 注意:不清除 devices 和 device_count,因为其他任务可能已经注册了设备 ctx.custom_cmd_count = 0; ctx.state = MROBOT_STATE_IDLE; strcpy(ctx.current_path, "/"); diff --git a/assets/User_code/task/task.c.template b/assets/User_code/task/task.c.template index e238fa2..807631e 100644 --- a/assets/User_code/task/task.c.template +++ b/assets/User_code/task/task.c.template @@ -18,6 +18,9 @@ /* USER STRUCT END */ /* Private function --------------------------------------------------------- */ +/* USER PRIVATE CODE BEGIN */ + +/* USER PRIVATE CODE END */ /* Exported functions ------------------------------------------------------- */ void {{task_function}}(void *argument) { (void)argument; /* 未使用argument,消除警告 */ diff --git a/assets/User_code/task/template_task/cli.c b/assets/User_code/task/template_task/cli.c new file mode 100644 index 0000000..29ae053 --- /dev/null +++ b/assets/User_code/task/template_task/cli.c @@ -0,0 +1,52 @@ +/* + cli Task + +*/ + +/* Includes ----------------------------------------------------------------- */ +#include "task/user_task.h" +/* USER INCLUDE BEGIN */ +#include "device/mrobot.h" +/* USER INCLUDE END */ + +/* Private typedef ---------------------------------------------------------- */ +/* Private define ----------------------------------------------------------- */ +/* Private macro ------------------------------------------------------------ */ +/* Private variables -------------------------------------------------------- */ +/* USER STRUCT BEGIN */ + +/* USER STRUCT END */ + +/* Private function --------------------------------------------------------- */ +/* USER PRIVATE CODE BEGIN */ +/** + * @brief hello 命令回调 + * @note 命令回调必须返回 0 (pdFALSE) 表示完成,返回非0会继续调用 + */ +static long Cli_Hello(char *buffer, size_t size, const char *cmd) { + (void)cmd; /* 未使用cmd,消除警告 */ + MRobot_Snprintf(buffer, size, "Ciallo~(∠・ω< )⌒★\r\n"); + return 0; /* 返回0表示命令执行完成 */ +} +/* USER PRIVATE CODE END */ +/* Exported functions ------------------------------------------------------- */ +void Task_cli(void *argument) { + (void)argument; /* 未使用argument,消除警告 */ + + + osDelay(CLI_INIT_DELAY); /* 延时一段时间再开启任务 */ + + /* USER CODE INIT BEGIN */ + /* 初始化 MRobot CLI 系统 */ + MRobot_Init(); + MRobot_RegisterCommand("hello", " --hello: 打印问候语\r\n", Cli_Hello, -1); + /* USER CODE INIT END */ + + while (1) { + /* USER CODE BEGIN */ + /* 运行 MRobot 主循环 */ + MRobot_Run(); + /* USER CODE END */ + } + +} \ No newline at end of file diff --git a/assets/User_code/task/template_task/task.yaml b/assets/User_code/task/template_task/task.yaml index 5a6d279..2d63f85 100644 --- a/assets/User_code/task/template_task/task.yaml +++ b/assets/User_code/task/template_task/task.yaml @@ -1,7 +1,7 @@ atti_esti: name: "atti_esti" frequency: 1000 - delay: 100 + delay: 0 stack: 512 freq_control: false description: | @@ -16,3 +16,13 @@ atti_esti: - 陀螺仪使用前需要校准,校准结果保存在bmi088_cali结构体中 - 无磁力计版本,适用于干净的电磁环境 - 需要配置PWM通道用于IMU加热控制 +cli: + name: "cli" + frequency: 500 + delay: 0 + stack: 1024 + freq_control: false + description: | + 命令行接口任务 + 通过串口实现的虚拟终端,配合putty食用更佳 + 需要freertos_cli组件支持,还有mrobot设备驱动 \ No newline at end of file