From 83a9c93e16cda2574639c18401eab5519a2391af Mon Sep 17 00:00:00 2001
From: ws <1621320660@qq.com>
Date: Fri, 14 Mar 2025 23:57:48 +0800
Subject: [PATCH] =?UTF-8?q?=E7=A6=BB=E5=90=88=E5=88=9D=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
MDK-ARM/.vscode/settings.json | 4 +++-
MDK-ARM/.vscode/uv4.log | 13 +++--------
MDK-ARM/.vscode/uv4.log.lock | 2 +-
MDK-ARM/mycode1.uvoptx | 22 +++++-------------
User/task/dji_task.c | 43 ++++++++++++++++++++++++++---------
User/task/dji_task.h | 3 +++
User/task/shoot_task.c | 35 ++++++++++++++++++++--------
7 files changed, 73 insertions(+), 49 deletions(-)
diff --git a/MDK-ARM/.vscode/settings.json b/MDK-ARM/.vscode/settings.json
index c5bcc85..d95f9ca 100644
--- a/MDK-ARM/.vscode/settings.json
+++ b/MDK-ARM/.vscode/settings.json
@@ -17,6 +17,8 @@
"shoot.h": "c",
"dji.h": "c",
"calc_lib.h": "c",
- "odrive_shoot.h": "c"
+ "odrive_shoot.h": "c",
+ "remote_control.h": "c",
+ "dji_task.h": "c"
}
}
\ No newline at end of file
diff --git a/MDK-ARM/.vscode/uv4.log b/MDK-ARM/.vscode/uv4.log
index 202c86c..9bf04b8 100644
--- a/MDK-ARM/.vscode/uv4.log
+++ b/MDK-ARM/.vscode/uv4.log
@@ -1,10 +1,3 @@
-*** Using Compiler 'V5.06 update 7 (build 960)', folder: 'D:\keil\ARM\ARMCC\Bin'
-Build target 'mycode1'
-compiling read_spi.c...
-compiling odrive_shoot.c...
-compiling shoot_task.c...
-linking...
-Program Size: Code=26528 RO-data=1904 RW-data=280 ZI-data=22496
-FromELF: creating hex file...
-"mycode1\mycode1.axf" - 0 Error(s), 0 Warning(s).
-Build Time Elapsed: 00:00:03
+Load "mycode1\\mycode1.axf"
+Erase Done.Programming Done.Verify OK.Application running ...
+Flash Load finished at 22:03:22
diff --git a/MDK-ARM/.vscode/uv4.log.lock b/MDK-ARM/.vscode/uv4.log.lock
index f7c9ebe..9e7cf59 100644
--- a/MDK-ARM/.vscode/uv4.log.lock
+++ b/MDK-ARM/.vscode/uv4.log.lock
@@ -1 +1 @@
-2025/3/14 20:41:26
\ No newline at end of file
+2025/3/14 22:03:23
\ No newline at end of file
diff --git a/MDK-ARM/mycode1.uvoptx b/MDK-ARM/mycode1.uvoptx
index 84f2bfa..1dfa59f 100644
--- a/MDK-ARM/mycode1.uvoptx
+++ b/MDK-ARM/mycode1.uvoptx
@@ -208,37 +208,27 @@
11
1
- angleo,0x0A
+ encoder,0x0A
12
1
- shoot
+ mode,0x0A
13
1
- multi_turn_angle,0x0A
+ m
14
1
- angle_encoder
+ trigger_motor_data,0x0A
15
1
- back_angle,0x0A
-
-
- 16
- 1
- encoder,0x0A
-
-
- 17
- 1
- angles
+ trigger_angle_o
@@ -322,7 +312,7 @@
Application/User/Core
- 1
+ 0
0
0
0
diff --git a/User/task/dji_task.c b/User/task/dji_task.c
index 7540029..1ffb213 100644
--- a/User/task/dji_task.c
+++ b/User/task/dji_task.c
@@ -5,22 +5,26 @@
#include
#include "remote_control.h"
#include "dji.h"
+#include "read_spi.h"
#include "vofa.h"
+
extern RC_mess_t RC_mess;
extern int16_t result;
extern int16_t t_result;
-extern motor_measure_t *motor_3508_data;
+extern motor_measure_t *trigger_motor_data;
+Encoder_t encoder;
float vofa[8];
+
+int speed=0;
+float m=0;
+float trigger_angle_o=0;
+int mode=0;
/**
* \brief 电机任务
*
* \param argument 未使用
*/
-
-int speed=0;
-float angle=0;
-float m;
void Task_Motor(void *argument)
{
(void)argument; /* 未使用argument,消除警告 */
@@ -28,6 +32,7 @@ void Task_Motor(void *argument)
const uint32_t delay_tick = osKernelGetTickFreq() / TASK_FREQ_CTRL_CHASSIS;
motor_init();
+ Encoder_Init(&encoder);
uint32_t tick = osKernelGetTickCount();
@@ -35,12 +40,28 @@ void Task_Motor(void *argument)
{
//收到消息队列新数据
- //电机控制
- //motor_speed(speed);
- m=angle*(8191/360);
- // motor_pos(m);
- trigger_pos(m);
- //CAN_cmd_200(result[MOTOR_UP],result[MOTOR_UP],result[MOTOR_UP],result[MOTOR_UP],&hcan1);
+ // 更新编码器数据
+ Update_Encoder(&encoder);
+ m=trigger_angle_o*(8191/360);
+ if( mode == THREE )
+ {
+ //当最高点时进入离合
+ if(encoder.round_cnt>=8)
+ {
+ trigger_angle_o=-1;
+ trigger_pos(m);
+ }
+
+ }
+ else if( mode == DZ )
+ {
+ //退出离合
+ trigger_angle_o=0;
+ trigger_pos(m);
+
+ }
+
+
CAN_cmd_200(t_result,0,0,0,&hcan1);
osDelay(2);
diff --git a/User/task/dji_task.h b/User/task/dji_task.h
index 76d9383..c574ca9 100644
--- a/User/task/dji_task.h
+++ b/User/task/dji_task.h
@@ -2,4 +2,7 @@
#define _DJI_TASK_H_
+#define THREE 3
+#define DZ 0
+
#endif
diff --git a/User/task/shoot_task.c b/User/task/shoot_task.c
index cc70c62..b01558a 100644
--- a/User/task/shoot_task.c
+++ b/User/task/shoot_task.c
@@ -7,20 +7,27 @@
#include "shoot.h"
#include "odrive_shoot.h"
#include "read_spi.h"
+#include "dji_task.h"
extern RC_mess_t RC_mess;
-Encoder_t encoder;
-double angles;
-int32_t rounds;
-int angleo = 0; //发射角度
+extern Encoder_t encoder;
+extern motor_measure_t *trigger_motor_data;//3508电机数据
+extern int mode;
+
#define GO1_SHOOT 0
#define ODRIVE_SHOOT 1
+//odrive发射
+#define SHOOT3 12
+#define TOP 8
+#define MIDDLE 4
+#define BOTTOM 0
+
void Task_Shoot(void *argument)
{
(void)argument; /* 未使用argument,消除警告 */
const uint32_t delay_tick = osKernelGetTickFreq() / TASK_FREQ_CAN;
- Encoder_Init(&encoder);
+
#if GO1_SHOOT == 1
shooterInit();
#endif
@@ -34,12 +41,20 @@ void Task_Shoot(void *argument)
shoot_ball(0);
#elif ODRIVE_SHOOT == 1
- shootStep();
- //shoot_odrive(angleo);
- #endif
- // 更新编码器数据
- Update_Encoder(&encoder);
+ if(mode == THREE)
+ {
+ shoot_odrive(SHOOT3);
+ }
+ else if(mode == DZ)
+ {
+ if(trigger_motor_data->total_angle ==0)//扳机已闭合
+ {
+ shoot_odrive(BOTTOM);
+ }
+
+ }
+ #endif
tick += delay_tick; /* 计算下一个唤醒时刻 */
osDelayUntil(tick); /* 运行结束,等待下一个周期唤醒 */
}