修复mrobot

This commit is contained in:
Robofish 2026-02-04 17:39:12 +08:00
parent e47d170066
commit 843936525f
5 changed files with 70 additions and 5 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@ -169,7 +169,8 @@ static void uart_rx_callback(void) {
}
} else if (ch >= 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, "/");

View File

@ -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消除警告 */

View File

@ -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 */
}
}

View File

@ -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设备驱动