首次初始化
This commit is contained in:
@@ -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);
|
||||
}
|
||||
Reference in New Issue
Block a user