首次初始化

This commit is contained in:
zhy
2026-07-08 10:30:07 +08:00
commit b4423fcfa2
1963 changed files with 898669 additions and 0 deletions
+89
View File
@@ -0,0 +1,89 @@
#include "esc.h"
/*
* 当前 CubeMX TIM1 配置:
* Prescaler = 239
* Period = 19999
*
* 如果 TIM1 时钟是 240MHz
* 240MHz / (239 + 1) = 1MHz
* 所以 1 个计数 = 1us
*
* 因此 CCR = 1000 就是 1000us
*/
void ESC_Init(void)
{
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
/* 上电默认最低油门,防止电机突然启动 */
ESC_SetThrottleUs(ESC_MIN_US);
}
void ESC_SetThrottleUs(uint16_t us)
{
if (us < ESC_MIN_US)
{
us = ESC_MIN_US;
}
if (us > ESC_MAX_US)
{
us = ESC_MAX_US;
}
__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, us);
}
void ESC_Stop(void)
{
ESC_SetThrottleUs(ESC_MIN_US);
}
/*
* 电调解锁:
* 一般 ESC 上电后需要先收到一段时间最低油门信号
*/
void ESC_Arm(void)
{
ESC_SetThrottleUs(ESC_MIN_US);
HAL_Delay(3000);
}
/*
* 低速测试:
* 第一次不要直接上 1500 或 2000,先用 1100~1200
*/
void ESC_TestLowSpeed(void)
{
ESC_SetThrottleUs(ESC_MIN_US);
HAL_Delay(2000);
ESC_SetThrottleUs(1100);
HAL_Delay(3000);
ESC_SetThrottleUs(1150);
HAL_Delay(3000);
ESC_SetThrottleUs(1200);
HAL_Delay(3000);
ESC_Stop();
HAL_Delay(2000);
}
/*
* 电调油门校准:
* 不确定电调是否需要校准时,不要随便调用。
* 常见流程:
* 1. 先输出最大油门
* 2. 给 ESC 上电
* 3. 听到提示音后切到最低油门
*/
void ESC_Calibrate(void)
{
ESC_SetThrottleUs(ESC_MAX_US);
HAL_Delay(5000);
ESC_SetThrottleUs(ESC_MIN_US);
HAL_Delay(5000);
}