速度大了会卡死

This commit is contained in:
ws 2025-03-27 23:02:19 +08:00
parent 24eb09e2f7
commit 25bdadf878
5 changed files with 42 additions and 8 deletions

View File

@ -61,6 +61,25 @@ void Update_Encoder(Encoder_t *ptr) {
ptr->last_ecd = ptr->ecd;
}
// void Update_Encoder(Encoder_t *ptr) {
// ptr->ecd = AS5047_read(ANGLEUNC);
// // 检测编码器的圈数变化
// if (ptr->ecd - ptr->last_ecd > 4096) {
// ptr->round_cnt -= 1.0f; // 减去一圈
// } else if (ptr->ecd - ptr->last_ecd < -4096) {
// ptr->round_cnt += 1.0f; // 加上一圈
// }
// // 计算总角度
// ptr->total_angle = (double)((ptr->round_cnt * 8192 + ptr->ecd - ptr->offset_ecd));
// // 更新 round_cnt 为小数圈数
// ptr->round_cnt = (float)(ptr->total_angle / 8192.0f); // 将总角度转换为圈数(浮点数)
// ptr->last_ecd = ptr->ecd;
// }
int32_t Get_Encoder_Rounds(Encoder_t *ptr) {
return ptr->round_cnt;
}

View File

@ -19,7 +19,7 @@
#define SETTINGS2 0x0019
typedef struct {
int32_t round_cnt;
float round_cnt;
uint16_t ecd;
uint16_t last_ecd;
uint16_t offset_ecd;

View File

@ -8,6 +8,7 @@ extern motor_measure_t *trigger_motor_data;//3508电机数据
int mode=0;
int shoot=0;
int xxx=0;
#define Stop 0
#define Hasten 1
@ -15,7 +16,7 @@ int shoot=0;
#define Shoot 3
#define VESC_ID 77
int speed_6384=10000;
int speed_6384=-1500;
void control_clutch_shoot(void)
{
@ -35,9 +36,10 @@ void control_clutch_shoot(void)
{
if(shoot ==0)
{
if(encoder.round_cnt <= 4)
if(encoder.round_cnt <= 2)
{
xxx=1;
CAN_VESC_RPM(VESC_ID, speed_6384);
}
@ -45,16 +47,23 @@ void control_clutch_shoot(void)
}
else if(shoot ==Shoot)
{
if(encoder.round_cnt <= 4)
if(encoder.round_cnt <= 3)
{
xxx=3;
HAL_GPIO_WritePin(key_GPIO_Port,key_Pin,GPIO_PIN_SET);
CAN_VESC_RPM(VESC_ID, speed_6384);
}
else if(encoder.round_cnt >= 4)
// xxx=3;
// HAL_GPIO_WritePin(key_GPIO_Port,key_Pin,GPIO_PIN_SET);
// CAN_VESC_RPM(VESC_ID, speed_6384);
if(encoder.round_cnt >= 3)
{
xxx=4;
shoot=Slow;
HAL_GPIO_WritePin(key_GPIO_Port,key_Pin,GPIO_PIN_RESET);
CAN_VESC_HEAD(VESC_ID);
@ -62,6 +71,12 @@ void control_clutch_shoot(void)
}
else if(shoot == Slow)
{
CAN_VESC_HEAD(VESC_ID);
}
}
}

View File

@ -7,6 +7,6 @@
#include "pid.h"
#include "main.h"
void control_clutch_shoot(void);
#endif

View File

@ -30,7 +30,7 @@ void Task_Shoot(void *argument)
// 更新编码器数据
Update_Encoder(&encoder);
control_clutch_shoot();
tick += delay_tick; /* 计算下一个唤醒时刻 */
osDelayUntil(tick); /* 运行结束,等待下一个周期唤醒 */