更新了手动模式dp2的三种控制逻辑,加入了存储指令的设计可以达到实时控制的效果,鸟叫声设置为默认开启方便演示

This commit is contained in:
2026-09-12 16:51:04 +08:00
parent 32a96cf3d7
commit 51028b5f86
6 changed files with 237 additions and 86 deletions
+9 -4
View File
@@ -28,6 +28,7 @@ typedef struct {
uint8_t initialized;
uint8_t active;
uint8_t output_valid;
uint8_t upper_only; /* 1=只输出上电机,下电机恒停 */
uint8_t upper_phase;
uint8_t lower_pattern;
uint8_t lower_segment;
@@ -270,8 +271,10 @@ static void app_mode5_process(uint32_t now_ms)
app_mode5_select_lower_pattern(now_ms);
}
}
app_mode_outputs_set(s_mode.upper_direction, s_mode.upper_speed,
s_mode.lower_direction, MAGIC_BOX_HIGH_PERCENT);
app_mode_outputs_set(s_mode.upper_direction, s_mode.upper_speed,
s_mode.upper_only ? BSP_MOTOR_STOP : s_mode.lower_direction,
s_mode.upper_only ? 0 : MAGIC_BOX_HIGH_PERCENT);
}
AppMode_Ret_t app_mode_init(void)
@@ -297,12 +300,13 @@ AppMode_Ret_t app_mode_start(uint8_t mode)
if (!s_mode.initialized) {
return APP_MODE_ERR_NOT_INIT;
}
if (mode < 1 || mode > 5) {
if (mode < 1 || mode > APP_MODE_UPPER_ONLY) { /* 放宽到 6 */
app_mode_stop();
return APP_MODE_ERR_PARAM;
}
s_mode.active = mode;
s_mode.upper_only = (mode == APP_MODE_UPPER_ONLY);
s_mode.active = s_mode.upper_only ? 5 : mode; /* 内部仍按模式 5 跑 */
app_mode_start_current(timer_get_ms());
log_info("magic box mode %d start\n", mode);
return APP_MODE_OK;
@@ -311,6 +315,7 @@ AppMode_Ret_t app_mode_start(uint8_t mode)
void app_mode_stop(void)
{
s_mode.active = 0;
s_mode.upper_only = 0;
s_mode.output_valid = 0;
bsp_drive_stop();
}