while (1) { __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, 1000); HAL_Delay(5000); break; }
时间: 2024-02-10 08:24:10 浏览: 43
如果想要在收到指令后让舵机转动 5 秒后停止,您可以将代码修改如下:
```c
while (1)
{
if (RxBuffer[0] != 0)
{
HAL_Delay(1000);
strx = strstr((const char*)RxBuffer, (const char*)"manual_feed");
if (strx == NULL)
{
printf("手动喂食获取失败");
}
else
{
len = strlen(strx);
number = strx[13];
printf("手动喂食获取成功");
HAL_Delay(500);
printf("收到信息:manual_feed=%c", number);
HAL_Delay(500);
// 停止舵机转动
isServoRunning = false;
if (number - '0' == 1)
{
isServoRunning = true;
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);
for (int i = 0; i < 10; i++) // 转动 5 秒,每次延迟 500 毫秒
{
__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, 1000);
HAL_Delay(500);
}
// 停止舵机转动
isServoRunning = false;
}
else if (number - '0' == 0)
{
__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, 1500);
HAL_Delay(1000);
}
Clear_Buffer();
}
Clear_Buffer();
}
HAL_Delay(500);
}
```
这样修改后,当收到 "manual_feed=1" 的指令时,舵机会转动 5 秒后停止。如果收到 "manual_feed=0" 的指令,则舵机将转到中间位置,并保持不动。