From a9bcaf326f1b179ba5027663ad05e768107d0ce2 Mon Sep 17 00:00:00 2001
From: iDddddd <90831551+iDddddd@users.noreply.github.com>
Date: Fri, 22 Sep 2023 14:39:13 +0800
Subject: [PATCH 1/4] version3.5.17
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
删除任务队列
修改步进电机V5发送消息
修改can2发送逻辑
---
MDK-ARM/RM_Frame_C.uvoptx | 82 +++++++++----------
MDK-ARM/RM_Frame_C.uvprojx | 10 ---
RM_Frame_C.ioc | 8 +-
Src/dma.c | 2 +-
Src/usart.c | 6 +-
userCode/devices/Inc/ARMMotor.h | 5 +-
userCode/devices/Inc/CommuType.h | 2 +-
userCode/devices/Inc/ManiControl.h | 21 ++++-
userCode/devices/Inc/StateMachine.h | 37 ---------
userCode/devices/Src/ARMMotor.cpp | 108 +++++++++-----------------
userCode/devices/Src/ChassisMotor.cpp | 2 +-
userCode/devices/Src/CommuType.cpp | 50 +++++-------
userCode/devices/Src/Device.cpp | 4 +-
userCode/devices/Src/ManiControl.cpp | 34 +++++---
userCode/devices/Src/StateMachine.cpp | 74 ------------------
userCode/tasks/Inc/ArmTask.h | 14 +++-
userCode/tasks/Inc/AutoTask.h | 29 -------
userCode/tasks/Inc/ControlTask.h | 1 -
userCode/tasks/Src/ArmTask.cpp | 36 +++++----
userCode/tasks/Src/AutoTask.cpp | 33 --------
userCode/tasks/Src/ControlTask.cpp | 56 ++-----------
21 files changed, 186 insertions(+), 428 deletions(-)
delete mode 100644 userCode/devices/Inc/StateMachine.h
delete mode 100644 userCode/devices/Src/StateMachine.cpp
delete mode 100644 userCode/tasks/Inc/AutoTask.h
delete mode 100644 userCode/tasks/Src/AutoTask.cpp
diff --git a/MDK-ARM/RM_Frame_C.uvoptx b/MDK-ARM/RM_Frame_C.uvoptx
index d87ad85..ff79dff 100644
--- a/MDK-ARM/RM_Frame_C.uvoptx
+++ b/MDK-ARM/RM_Frame_C.uvoptx
@@ -162,6 +162,22 @@
0
0
+ 16
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ C:\Users\25396\Documents\GitHub\Swerve-chassis-control-frame-1\userCode\tasks\Src\AutoTask.cpp
+
+
+
+
+ 1
+ 0
245
1
134226518
@@ -1164,18 +1180,6 @@
0
0
0
- ..\userCode\tasks\Src\AutoTask.cpp
- AutoTask.cpp
- 0
- 0
-
-
- 6
- 55
- 8
- 0
- 0
- 0
..\userCode\tasks\Src\Matrix.cpp
Matrix.cpp
0
@@ -1183,7 +1187,7 @@
6
- 56
+ 55
8
0
0
@@ -1203,7 +1207,7 @@
0
7
- 57
+ 56
8
0
0
@@ -1215,7 +1219,7 @@
7
- 58
+ 57
8
0
0
@@ -1227,7 +1231,7 @@
7
- 59
+ 58
8
0
0
@@ -1239,7 +1243,7 @@
7
- 60
+ 59
8
0
0
@@ -1251,7 +1255,7 @@
7
- 61
+ 60
8
0
0
@@ -1263,7 +1267,7 @@
7
- 62
+ 61
8
0
0
@@ -1275,7 +1279,7 @@
7
- 63
+ 62
8
0
0
@@ -1287,7 +1291,7 @@
7
- 64
+ 63
8
0
0
@@ -1299,7 +1303,7 @@
7
- 65
+ 64
8
0
0
@@ -1311,7 +1315,7 @@
7
- 66
+ 65
8
0
0
@@ -1323,19 +1327,7 @@
7
- 67
- 8
- 0
- 0
- 0
- ..\userCode\devices\Src\StateMachine.cpp
- StateMachine.cpp
- 0
- 0
-
-
- 7
- 68
+ 66
8
0
0
@@ -1347,7 +1339,7 @@
7
- 69
+ 67
8
0
0
@@ -1359,7 +1351,7 @@
7
- 70
+ 68
8
0
0
@@ -1379,7 +1371,7 @@
0
8
- 71
+ 69
8
0
0
@@ -1391,7 +1383,7 @@
8
- 72
+ 70
8
0
0
@@ -1411,7 +1403,7 @@
0
9
- 73
+ 71
8
0
0
@@ -1431,7 +1423,7 @@
0
10
- 74
+ 72
8
0
0
@@ -1443,7 +1435,7 @@
10
- 75
+ 73
8
0
0
@@ -1463,7 +1455,7 @@
0
11
- 76
+ 74
8
0
0
@@ -1475,7 +1467,7 @@
11
- 77
+ 75
8
0
0
diff --git a/MDK-ARM/RM_Frame_C.uvprojx b/MDK-ARM/RM_Frame_C.uvprojx
index 77a27e9..50d893b 100644
--- a/MDK-ARM/RM_Frame_C.uvprojx
+++ b/MDK-ARM/RM_Frame_C.uvprojx
@@ -726,11 +726,6 @@
8
..\userCode\tasks\Src\ServoTask.cpp
-
- AutoTask.cpp
- 8
- ..\userCode\tasks\Src\AutoTask.cpp
-
Matrix.cpp
8
@@ -796,11 +791,6 @@
8
..\userCode\devices\Src\ManiControl.cpp
-
- StateMachine.cpp
- 8
- ..\userCode\devices\Src\StateMachine.cpp
-
LED.cpp
8
diff --git a/RM_Frame_C.ioc b/RM_Frame_C.ioc
index b11e743..14e777b 100644
--- a/RM_Frame_C.ioc
+++ b/RM_Frame_C.ioc
@@ -72,7 +72,7 @@ Dma.USART1_RX.5.MemInc=DMA_MINC_ENABLE
Dma.USART1_RX.5.Mode=DMA_NORMAL
Dma.USART1_RX.5.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
Dma.USART1_RX.5.PeriphInc=DMA_PINC_DISABLE
-Dma.USART1_RX.5.Priority=DMA_PRIORITY_MEDIUM
+Dma.USART1_RX.5.Priority=DMA_PRIORITY_HIGH
Dma.USART1_RX.5.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
Dma.USART3_RX.0.Direction=DMA_PERIPH_TO_MEMORY
Dma.USART3_RX.0.FIFOMode=DMA_FIFOMODE_DISABLE
@@ -92,7 +92,7 @@ Dma.USART6_RX.4.MemInc=DMA_MINC_ENABLE
Dma.USART6_RX.4.Mode=DMA_NORMAL
Dma.USART6_RX.4.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
Dma.USART6_RX.4.PeriphInc=DMA_PINC_DISABLE
-Dma.USART6_RX.4.Priority=DMA_PRIORITY_MEDIUM
+Dma.USART6_RX.4.Priority=DMA_PRIORITY_HIGH
Dma.USART6_RX.4.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
File.Version=6
I2C3.I2C_Mode=I2C_Fast
@@ -192,7 +192,7 @@ NVIC.CAN2_TX_IRQn=true\:3\:0\:true\:false\:true\:true\:true\:true
NVIC.DMA1_Stream1_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
NVIC.DMA1_Stream4_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
NVIC.DMA2_Stream0_IRQn=true\:0\:0\:false\:false\:false\:false\:true\:true
-NVIC.DMA2_Stream1_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
+NVIC.DMA2_Stream1_IRQn=true\:1\:0\:true\:false\:true\:false\:true\:true
NVIC.DMA2_Stream2_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.DMA2_Stream3_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
@@ -213,7 +213,7 @@ NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:false
NVIC.TIM1_UP_TIM10_IRQn=true\:10\:0\:true\:false\:true\:true\:true\:true
NVIC.TIM6_DAC_IRQn=true\:8\:0\:true\:false\:true\:true\:true\:true
NVIC.TIM7_IRQn=true\:5\:0\:true\:false\:true\:true\:true\:true
-NVIC.USART1_IRQn=true\:1\:0\:true\:false\:false\:true\:true\:true
+NVIC.USART1_IRQn=true\:0\:0\:true\:false\:false\:true\:true\:true
NVIC.USART3_IRQn=true\:0\:0\:true\:false\:false\:true\:true\:true
NVIC.USART6_IRQn=true\:1\:0\:true\:false\:false\:true\:true\:true
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
diff --git a/Src/dma.c b/Src/dma.c
index c19f89e..9cfb391 100644
--- a/Src/dma.c
+++ b/Src/dma.c
@@ -54,7 +54,7 @@ void MX_DMA_Init(void)
HAL_NVIC_SetPriority(DMA2_Stream0_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(DMA2_Stream0_IRQn);
/* DMA2_Stream1_IRQn interrupt configuration */
- HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
+ HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 1, 0);
HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
/* DMA2_Stream2_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 0, 0);
diff --git a/Src/usart.c b/Src/usart.c
index 1bd7a56..ade6d66 100644
--- a/Src/usart.c
+++ b/Src/usart.c
@@ -161,7 +161,7 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
hdma_usart1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
hdma_usart1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
hdma_usart1_rx.Init.Mode = DMA_NORMAL;
- hdma_usart1_rx.Init.Priority = DMA_PRIORITY_MEDIUM;
+ hdma_usart1_rx.Init.Priority = DMA_PRIORITY_HIGH;
hdma_usart1_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
if (HAL_DMA_Init(&hdma_usart1_rx) != HAL_OK)
{
@@ -171,7 +171,7 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
__HAL_LINKDMA(uartHandle,hdmarx,hdma_usart1_rx);
/* USART1 interrupt Init */
- HAL_NVIC_SetPriority(USART1_IRQn, 1, 0);
+ HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(USART1_IRQn);
/* USER CODE BEGIN USART1_MspInit 1 */
@@ -253,7 +253,7 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
hdma_usart6_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
hdma_usart6_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
hdma_usart6_rx.Init.Mode = DMA_NORMAL;
- hdma_usart6_rx.Init.Priority = DMA_PRIORITY_MEDIUM;
+ hdma_usart6_rx.Init.Priority = DMA_PRIORITY_HIGH;
hdma_usart6_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
if (HAL_DMA_Init(&hdma_usart6_rx) != HAL_OK)
{
diff --git a/userCode/devices/Inc/ARMMotor.h b/userCode/devices/Inc/ARMMotor.h
index 0f9c7a6..2f6f7c8 100644
--- a/userCode/devices/Inc/ARMMotor.h
+++ b/userCode/devices/Inc/ARMMotor.h
@@ -26,7 +26,6 @@ class SteppingMotor_v4 : public Motor, public CAN {
void Handle() override;
- void MoveTo();
void SetTargetPosition(float pos);
@@ -57,8 +56,6 @@ class SteppingMotor_v5 : public Motor, public CAN {
void Handle() override;
- void MoveTo();
-
void SetTargetPosition(float tarpos);
~SteppingMotor_v5();
@@ -69,7 +66,7 @@ class SteppingMotor_v5 : public Motor, public CAN {
uint32_t Pulse{};
bool SendFlag = false;
- uint8_t TxMessage[16]{0};
+ uint8_t TxMessage[8]{0};
uint8_t TxMessageDLC{};
int32_t nowPos = 0;
diff --git a/userCode/devices/Inc/CommuType.h b/userCode/devices/Inc/CommuType.h
index 28a2625..4858dd4 100644
--- a/userCode/devices/Inc/CommuType.h
+++ b/userCode/devices/Inc/CommuType.h
@@ -25,7 +25,7 @@ typedef struct {
uint32_t ID;
uint8_t DLC;
uint8_t canType;
- uint8_t message[16];
+ uint8_t message[8];
}DATA_t;
typedef struct {
DATA_t Data[MAX_MESSAGE_COUNT];
diff --git a/userCode/devices/Inc/ManiControl.h b/userCode/devices/Inc/ManiControl.h
index b3eff80..8d74d7a 100644
--- a/userCode/devices/Inc/ManiControl.h
+++ b/userCode/devices/Inc/ManiControl.h
@@ -5,8 +5,8 @@
#ifndef RM_FRAME_C_MANICONTROL_H
#define RM_FRAME_C_MANICONTROL_H
#include "Device.h"
-#include "StateMachine.h"
-#include "AutoTask.h"
+
+
#define BUFF_SIZE 40u
#define CONTROL_LENGTH 0x10
#define MANI_LENGTH 0x0E
@@ -18,7 +18,7 @@ typedef enum {
CLAW,
TRAY,
MOVE_VEL,
-
+ ARM_POS
}TASK_FLAG_t;
/*结构体定义--------------------------------------------------------------*/
@@ -30,6 +30,11 @@ typedef struct {
f_u8_t Joint4Pos;
f_u8_t Joint5Pos;
} ARM_col_t;
+typedef struct {
+ f_u8_t x;
+ f_u8_t y;
+ f_u8_t z;
+} ARM_pos_t;
typedef struct {
f_u8_t x_Dis;
f_u8_t y_Dis;
@@ -42,6 +47,7 @@ typedef struct {
} ChassisVel_col_t;
typedef struct {
ARM_col_t arm_col;
+ ARM_pos_t arm_pos;
ChassisDis_col_t chassisDis_col;
ChassisVel_col_t chassisVel_col;
uint8_t TrayFlag;
@@ -63,6 +69,15 @@ class ManiControl : public Device {
void CompleteTask();//完成任务反馈函数,一般为向上位机发送数据0x01
uint8_t LRC_calc(uint8_t *data, uint8_t len);//LRC校验函数
+/*外部函数声明-------------------------------------------------------------*/
+extern void AutoChassisStop();//Realized in ChassisTask
+extern void ChassisDistanceSet(float x, float y, float o);//Realized in ChassisTask
+extern void ChassisVelocitySet(float x_vel, float y_vel, float w_vel);//Realized in ChassisTask
+extern void ArmJointSet(float Joint1Pos, float Joint2Pos, float Joint3Pos, float Joint4Pos, float Joint5Pos);
+extern void ArmPositionSet(float x, float y, float z);//Realized in ArmJointTask
+//extern void AutoTraySet(uint8_t trayflag);//Realized in ArmJointTask
+extern void ClawSet(uint8_t clawflag);//Realized in ArmJointTask
+
//以下为直接调用UART6中断函数
#ifdef __cplusplus
diff --git a/userCode/devices/Inc/StateMachine.h b/userCode/devices/Inc/StateMachine.h
deleted file mode 100644
index 532126b..0000000
--- a/userCode/devices/Inc/StateMachine.h
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// Created by 25396 on 2023/4/6.
-//
-
-#ifndef RM_FRAME_C_STATEMACHINE_H
-#define RM_FRAME_C_STATEMACHINE_H
-
-// 函数指针链表节点
-class FunctionNode {
-public:
- explicit FunctionNode(void (*f)()) : func(f), next(nullptr) {}
- void (*func)();
- FunctionNode* next;
-};
-// 函数指针链表
-class FunctionList {
-public:
- FunctionList() : head(nullptr) {}
- void add(void (*f)());
- void remove(void (*f)());
- void call_all() ;
-private:
- FunctionNode* head;
-};
-// 有限状态机
-class StateMachine {
-public:
- StateMachine();
- static void stateHandle() ;
- static void add_function_to_state(void (*f)());
- static void remove_function_from_state(void (*f)());
-private:
- static FunctionList function_lists;
-};
-
-
-#endif //RM_FRAME_C_STATEMACHINE_H
diff --git a/userCode/devices/Src/ARMMotor.cpp b/userCode/devices/Src/ARMMotor.cpp
index d355eeb..fdd9248 100644
--- a/userCode/devices/Src/ARMMotor.cpp
+++ b/userCode/devices/Src/ARMMotor.cpp
@@ -38,44 +38,35 @@ void SteppingMotor_v4::CANMessageGenerate() {
}
void SteppingMotor_v4::Handle() {
- TxMessage[0] = 0x36;
- TxMessage[1] = 0x6B;
- TxMessageDLC = 0x02;
-
- nowPos = (int32_t) (RxMessage[1] << 24u | RxMessage[2] << 16u | RxMessage[3] << 8u | RxMessage[4]);
- NowPos = ((float) nowPos * 2.0f * PI) / 65536.0f / reductionRatio;
-
- CANMessageGenerate();
-}
-
-void SteppingMotor_v4::MoveTo() {
-
- if (stopFlag) {
- Pulse = 0;
- } else {
- if (TarPos >= Position) {
- Direction = 0x11;
+ if(SendFlag) {
+ if (stopFlag) {
+ Pulse = 0;
} else {
- Direction = 0x01;
+ if (TarPos >= Position) {
+ Direction = 0x11;
+ } else {
+ Direction = 0x01;
+ }
+ Pulse = (uint32_t) (abs(TarPos - Position) / 2.0f / PI * 200 * 16 * reductionRatio);
+ Position = TarPos;
}
- Pulse = (uint32_t) (abs(TarPos - Position) / 2.0f / PI * 200 * 16 * reductionRatio);
- Position = TarPos;
+ TxMessageDLC = 0x08;
+ TxMessage[0] = 0xFD;
+ TxMessage[1] = Direction;
+ TxMessage[2] = 0xFF;
+ TxMessage[3] = 0x00;
+ TxMessage[4] = Pulse >> 16u;
+ TxMessage[5] = Pulse >> 8u;
+ TxMessage[6] = Pulse;
+ TxMessage[7] = 0x6B;
+
+ CANMessageGenerate();
}
- TxMessageDLC = 0x08;
- TxMessage[0] = 0xFD;
- TxMessage[1] = Direction;
- TxMessage[2] = 0xFF;
- TxMessage[3] = 0x00;
- TxMessage[4] = Pulse >> 16u;
- TxMessage[5] = Pulse >> 8u;
- TxMessage[6] = Pulse;
- TxMessage[7] = 0x6B;
-
- CANMessageGenerate();
}
void SteppingMotor_v4::SetTargetPosition(float pos) {
stopFlag = false;
+ SendFlag = true;
TarPos = pos;
}
@@ -105,11 +96,6 @@ void SteppingMotor_v5::CANMessageGenerate() {;
canQueue.Data[canQueue.rear].message[5] = TxMessage[5];
canQueue.Data[canQueue.rear].message[6] = TxMessage[6];
canQueue.Data[canQueue.rear].message[7] = TxMessage[7];
- canQueue.Data[canQueue.rear].message[8] = TxMessage[8];
- canQueue.Data[canQueue.rear].message[9] = TxMessage[9];
- canQueue.Data[canQueue.rear].message[10] = TxMessage[10];
- canQueue.Data[canQueue.rear].message[11] = TxMessage[11];
- canQueue.Data[canQueue.rear].message[12] = TxMessage[12];
canQueue.rear = (canQueue.rear + 1) % MAX_MESSAGE_COUNT;
} else {
@@ -136,12 +122,12 @@ void SteppingMotor_v5::Handle() {
} else {
if (TarPos >= 0) {
- Direction = 0x01;
- } else {
Direction = 0x00;
+ } else {
+ Direction = 0x01;
}
Pulse = (uint32_t) (abs(TarPos) / 2.0f / PI * 200.0f * 16.0f * reductionRatio);
- TxMessageDLC = 0x0D;
+ TxMessageDLC = 0x08;
TxMessage[0] = 0xFD;
TxMessage[1] = Direction;
TxMessage[2] = 0x05;
@@ -150,46 +136,22 @@ void SteppingMotor_v5::Handle() {
TxMessage[5] = Pulse >> 24u;
TxMessage[6] = Pulse >> 16u;
TxMessage[7] = Pulse >> 8u;
- TxMessage[8] = 0xFD;
- TxMessage[9] = Pulse;
- TxMessage[10] = 0x01;
- TxMessage[11] = 0x00;
- TxMessage[12] = 0x6B;
+ CANMessageGenerate();
+ TxMessageDLC = 0x05;
+ TxMessage[0] = 0xFD;
+ TxMessage[1] = Pulse;
+ TxMessage[2] = 0x01;
+ TxMessage[3] = 0x00;
+ TxMessage[4] = 0x6B;
+ TxMessage[5] = 0x00;
+ TxMessage[6] = 0x00;
+ TxMessage[7] = 0x00;
CANMessageGenerate();
SendFlag = false;
}
}
}
-void SteppingMotor_v5::MoveTo() {
- if (stopFlag) {
- Pulse = 0;
- } else {
- if (TarPos >= 0) {
- Direction = 0x01;
- } else {
- Direction = 0x00;
- }
- Pulse = (uint32_t) (abs(TarPos) / 2.0f / PI * 200.0f * 16.0f * reductionRatio);
- }
- TxMessageDLC = 0x0D;
- TxMessage[0] = 0xFD;
- TxMessage[1] = Direction;
- TxMessage[2] = 0x05;
- TxMessage[3] = 0xDC;
- TxMessage[4] = 0xC8;
- TxMessage[5] = Pulse >> 24u;
- TxMessage[6] = Pulse >> 16u;
- TxMessage[7] = Pulse >> 8u;
- TxMessage[8] = 0xFD;
- TxMessage[9] = Pulse;
- TxMessage[10] = 0x01;
- TxMessage[11] = 0x00;
- TxMessage[12] = 0x6B;
-
- CANMessageGenerate();
-}
-
void SteppingMotor_v5::SetTargetPosition(float tarpos) {
stopFlag = false;
SendFlag = true;
diff --git a/userCode/devices/Src/ChassisMotor.cpp b/userCode/devices/Src/ChassisMotor.cpp
index f220a8a..a273d73 100644
--- a/userCode/devices/Src/ChassisMotor.cpp
+++ b/userCode/devices/Src/ChassisMotor.cpp
@@ -155,7 +155,7 @@ void Motor_4010::Handle() {
}
- CANMessageGenerate();
+ // CANMessageGenerate();
}
void Motor_4010::MotorStateUpdate() {
diff --git a/userCode/devices/Src/CommuType.cpp b/userCode/devices/Src/CommuType.cpp
index 0601d0c..c8302ed 100644
--- a/userCode/devices/Src/CommuType.cpp
+++ b/userCode/devices/Src/CommuType.cpp
@@ -78,32 +78,19 @@ void CAN::CANPackageSend() {
HAL_CAN_AddTxMessage(&hcan1, &txHeaderTypeDef, canQueue.Data[canQueue.front].message, &box);
} else if (canQueue.Data[canQueue.front].canType == can2) {
- if (canQueue.Data[canQueue.front].DLC <= 0x08) {
- txHeaderTypeDef.ExtId = canQueue.Data[canQueue.front].ID;//从消息包中取出对应的ID
- txHeaderTypeDef.DLC = canQueue.Data[canQueue.front].DLC;//数据长度
- txHeaderTypeDef.IDE = CAN_ID_EXT;//扩展帧
- txHeaderTypeDef.RTR = CAN_RTR_DATA;//数据帧
- txHeaderTypeDef.TransmitGlobalTime = DISABLE;
- HAL_CAN_AddTxMessage(&hcan2, &txHeaderTypeDef, canQueue.Data[canQueue.front].message, &box);
- } else {
- txHeaderTypeDef.ExtId = canQueue.Data[canQueue.front].ID;
- txHeaderTypeDef.DLC = 0x08;
- txHeaderTypeDef.IDE = CAN_ID_EXT;
- txHeaderTypeDef.RTR = CAN_RTR_DATA;
- txHeaderTypeDef.TransmitGlobalTime = DISABLE;
- HAL_CAN_AddTxMessage(&hcan2, &txHeaderTypeDef, canQueue.Data[canQueue.front].message, &box);
- txHeaderTypeDef.ExtId = canQueue.Data[canQueue.front].ID + 1;
- txHeaderTypeDef.DLC = canQueue.Data[canQueue.front].DLC - 0x08;
- txHeaderTypeDef.IDE = CAN_ID_EXT;
- txHeaderTypeDef.RTR = CAN_RTR_DATA;
- txHeaderTypeDef.TransmitGlobalTime = DISABLE;
- HAL_CAN_AddTxMessage(&hcan2, &txHeaderTypeDef, canQueue.Data[canQueue.front].message + 8, &box);
- }
+ txHeaderTypeDef.StdId = canQueue.Data[canQueue.front].ID;//从消息包中取出对应的ID
+ txHeaderTypeDef.DLC = canQueue.Data[canQueue.front].DLC;//数据长度
+ txHeaderTypeDef.IDE = CAN_ID_EXT;//标准帧
+ txHeaderTypeDef.RTR = CAN_RTR_DATA;//数据帧
+ txHeaderTypeDef.TransmitGlobalTime = DISABLE;//时间戳
+
+ HAL_CAN_AddTxMessage(&hcan2, &txHeaderTypeDef, canQueue.Data[canQueue.front].message, &box);
}
- memset(canQueue.Data[canQueue.front].message, 0 , sizeof(canQueue.Data[canQueue.front].message));//清空消息包中的数据
- canQueue.front = (canQueue.front + 1) % MAX_MESSAGE_COUNT;//消息队列头指针后移
+
}
+ memset(canQueue.Data[canQueue.front].message, 0, sizeof(canQueue.Data[canQueue.front].message));//清空消息包中的数据
+ canQueue.front = (canQueue.front + 1) % MAX_MESSAGE_COUNT;//消息队列头指针后移
}
/**
@@ -169,7 +156,7 @@ void RS485::RS485Init() {
//内存缓冲区 2
hdma_usart1_rx.Instance->M1AR = (uint32_t) (rs485_rx_buff[1]);
//数据长度
- hdma_usart1_rx.Instance->NDTR = RX_SIZE;//不确定需不需要
+ hdma_usart1_rx.Instance->NDTR = RX_SIZE;
//使能双缓冲区
CLEAR_BIT(hdma_usart1_rx.Instance->CR, DMA_SxCR_DBM);
SET_BIT(hdma_usart1_rx.Instance->CR, DMA_SxCR_CIRC);
@@ -182,7 +169,7 @@ void RS485::Rx_Handle() {
{
__HAL_UART_CLEAR_PEFLAG(&huart1);
} else if (USART1->SR & UART_FLAG_IDLE) {
- static uint16_t rx_len = 0;
+ static uint16_t uart1_rx_len = 0;
__HAL_UART_CLEAR_PEFLAG(&huart1);
if ((hdma_usart1_rx.Instance->CR & DMA_SxCR_CT) == RESET) {
@@ -192,7 +179,7 @@ void RS485::Rx_Handle() {
__HAL_DMA_DISABLE(&hdma_usart1_rx);
//获取接收数据长度,长度 = 设定长度 - 剩余长度
- rx_len = RX_SIZE - hdma_usart1_rx.Instance->NDTR;
+ uart1_rx_len = RX_SIZE - hdma_usart1_rx.Instance->NDTR;
//重新设定数据长度
hdma_usart1_rx.Instance->NDTR = RX_SIZE;
@@ -204,16 +191,15 @@ void RS485::Rx_Handle() {
__HAL_DMA_ENABLE(&hdma_usart1_rx);
//将接收到的数据拷贝到字典中,则自动进入电机的RxMessage中
- if (rx_len == MOTOR_RX_SIZE) {
- memcpy(dict_RS485[rs485_rx_buff[0][2] - 0x01], rs485_rx_buff[0], rx_len);
+ if (uart1_rx_len == MOTOR_RX_SIZE) {
+ memcpy(dict_RS485[rs485_rx_buff[0][2] - 0x01], rs485_rx_buff[0], uart1_rx_len);
}
} else {
/* Current memory buffer used is Memory 1 */
//失效DMA
__HAL_DMA_DISABLE(&hdma_usart1_rx);
-0
//获取接收数据长度,长度 = 设定长度 - 剩余长度
- rx_len = RX_SIZE - hdma_usart1_rx.Instance->NDTR;
+ uart1_rx_len = RX_SIZE - hdma_usart1_rx.Instance->NDTR;
//重新设定数据长度
hdma_usart1_rx.Instance->NDTR = RX_SIZE;
@@ -223,8 +209,8 @@ void RS485::Rx_Handle() {
//使能DMA
__HAL_DMA_ENABLE(&hdma_usart1_rx);
- if (rx_len == MOTOR_RX_SIZE) {
- memcpy(dict_RS485[rs485_rx_buff[1][2] - 0x01], rs485_rx_buff[1], rx_len);
+ if (uart1_rx_len == MOTOR_RX_SIZE) {
+ memcpy(dict_RS485[rs485_rx_buff[1][2] - 0x01], rs485_rx_buff[1], uart1_rx_len);
}
}
}
diff --git a/userCode/devices/Src/Device.cpp b/userCode/devices/Src/Device.cpp
index 224f9db..60e7361 100644
--- a/userCode/devices/Src/Device.cpp
+++ b/userCode/devices/Src/Device.cpp
@@ -119,7 +119,7 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
// ARMHandle();
// if(HAL_CAN_GetTxMailboxesFreeLevel(&hcan1)>0||HAL_CAN_GetTxMailboxesFreeLevel(&hcan2)>0) {
- CAN::CANPackageSend();
+ CAN::CANPackageSend();
//}
/**只需关注该部分代码**/
@@ -214,7 +214,7 @@ int main() {
MX_I2C3_Init();
MX_SPI1_Init();
MX_SPI2_Init();
- MX_IWDG_Init();//看门狗,若不使用遥控器需注释改行,否则程序不运行
+ // MX_IWDG_Init();//看门狗,若不使用遥控器需注释改行,否则程序不运行
MX_USB_DEVICE_Init();
/* USER CODE BEGIN 2 */
diff --git a/userCode/devices/Src/ManiControl.cpp b/userCode/devices/Src/ManiControl.cpp
index 6757b42..3208525 100644
--- a/userCode/devices/Src/ManiControl.cpp
+++ b/userCode/devices/Src/ManiControl.cpp
@@ -24,7 +24,7 @@ void ManiControl::Init() {
//内存缓冲区 2
hdma_usart6_rx.Instance->M1AR = (uint32_t) (mani_rx_buff[1]);
//数据长度
- hdma_usart6_rx.Instance->NDTR = BUFF_SIZE;//不确定需不需要
+ hdma_usart6_rx.Instance->NDTR = BUFF_SIZE;
//使能双缓冲区
CLEAR_BIT(hdma_usart6_rx.Instance->CR, DMA_SxCR_DBM);
SET_BIT(hdma_usart6_rx.Instance->CR, DMA_SxCR_CIRC);
@@ -38,7 +38,7 @@ void ManiControl::IT_Handle() {
{
__HAL_UART_CLEAR_PEFLAG(&huart6);
} else if (USART6->SR & UART_FLAG_IDLE) {
- static uint16_t rx_len = 0;
+ static uint16_t uart6_rx_len = 0;
__HAL_UART_CLEAR_PEFLAG(&huart6);
if ((hdma_usart6_rx.Instance->CR & DMA_SxCR_CT) == RESET) {
@@ -48,7 +48,7 @@ void ManiControl::IT_Handle() {
__HAL_DMA_DISABLE(&hdma_usart6_rx);
//获取接收数据长度,长度 = 设定长度 - 剩余长度
- rx_len = BUFF_SIZE - hdma_usart6_rx.Instance->NDTR;
+ uart6_rx_len = BUFF_SIZE - hdma_usart6_rx.Instance->NDTR;
//重新设定数据长度
hdma_usart6_rx.Instance->NDTR = BUFF_SIZE;
@@ -59,7 +59,7 @@ void ManiControl::IT_Handle() {
//使能DMA
__HAL_DMA_ENABLE(&hdma_usart6_rx);
/**只需关注该部分代码**/
- if (LRC_calc(mani_rx_buff[0], rx_len - 1) == mani_rx_buff[0][rx_len - 1] && (mani_rx_buff[0][0] == 0x7A)) {
+ if (LRC_calc(mani_rx_buff[0], uart6_rx_len - 1) == mani_rx_buff[0][uart6_rx_len - 1] && (mani_rx_buff[0][0] == 0x7A)) {
GetData(0);
}
/**只需关注该部分代码**/
@@ -69,7 +69,7 @@ void ManiControl::IT_Handle() {
__HAL_DMA_DISABLE(&hdma_usart6_rx);
//获取接收数据长度,长度 = 设定长度 - 剩余长度
- rx_len = BUFF_SIZE - hdma_usart6_rx.Instance->NDTR;
+ uart6_rx_len = BUFF_SIZE - hdma_usart6_rx.Instance->NDTR;
//重新设定数据长度
hdma_usart6_rx.Instance->NDTR = BUFF_SIZE;
@@ -80,7 +80,7 @@ void ManiControl::IT_Handle() {
//使能DMA
__HAL_DMA_ENABLE(&hdma_usart6_rx);
/**只需关注该部分代码**/
- if (LRC_calc(mani_rx_buff[1], rx_len - 1) == mani_rx_buff[1][rx_len - 1] && (mani_rx_buff[1][0] == 0x7A)) {
+ if (LRC_calc(mani_rx_buff[1], uart6_rx_len - 1) == mani_rx_buff[1][uart6_rx_len - 1] && (mani_rx_buff[1][0] == 0x7A)) {
GetData(1);
}
/**只需关注该部分代码**/
@@ -99,7 +99,7 @@ void ManiControl::GetData(uint8_t bufIndex) {
case 0x01: {
TaskFlag = STOP;
mc_ctrl.ChassisStopFlag = mani_rx_buff[bufIndex][4];
- StateMachine::add_function_to_state(ChassisStopTask);
+ AutoChassisStop();
break;
}
case 0x02: {
@@ -108,7 +108,7 @@ void ManiControl::GetData(uint8_t bufIndex) {
memcpy(&mc_ctrl.chassisDis_col.y_Dis, &mani_rx_buff[bufIndex][8], 4);
memcpy(&mc_ctrl.chassisDis_col.Theta, &mani_rx_buff[bufIndex][12], 4);
- StateMachine::add_function_to_state(Move_DisTask);
+ ChassisDistanceSet(mc_ctrl.chassisDis_col.x_Dis.f, mc_ctrl.chassisDis_col.y_Dis.f, mc_ctrl.chassisDis_col.Theta.f);
break;
}
case 0x03: {
@@ -119,21 +119,21 @@ void ManiControl::GetData(uint8_t bufIndex) {
memcpy(&mc_ctrl.arm_col.Joint4Pos, &mani_rx_buff[bufIndex][16], 4);
memcpy(&mc_ctrl.arm_col.Joint5Pos, &mani_rx_buff[bufIndex][20], 4);
- StateMachine::add_function_to_state(ArmTask);
+ ArmJointSet(mc_ctrl.arm_col.Joint1Pos.f, mc_ctrl.arm_col.Joint2Pos.f, mc_ctrl.arm_col.Joint3Pos.f, mc_ctrl.arm_col.Joint4Pos.f, mc_ctrl.arm_col.Joint5Pos.f);
break;
}
case 0x04: {
TaskFlag = CLAW;
mc_ctrl.ClawFlag = mani_rx_buff[bufIndex][5];
- StateMachine::add_function_to_state(ClawTask);
+ ClawSet(mc_ctrl.ClawFlag);
break;
}
case 0x05: {
TaskFlag = TRAY;
mc_ctrl.TrayFlag = mani_rx_buff[bufIndex][5];
- StateMachine::add_function_to_state(TrayTask);
+ //AutoTraySet(mc_ctrl.TrayFlag);
break;
}
case 0x07: {
@@ -142,9 +142,19 @@ void ManiControl::GetData(uint8_t bufIndex) {
memcpy(&mc_ctrl.chassisVel_col.y_Vel, &mani_rx_buff[bufIndex][8], 4);
memcpy(&mc_ctrl.chassisVel_col.w_Vel, &mani_rx_buff[bufIndex][12], 4);
- StateMachine::add_function_to_state(Move_VelTask);
+ ChassisVelocitySet(mc_ctrl.chassisVel_col.x_Vel.f, mc_ctrl.chassisVel_col.y_Vel.f, mc_ctrl.chassisVel_col.w_Vel.f);
break;
}
+ case 0x08:{
+ TaskFlag = ARM_POS;
+ memcpy(&mc_ctrl.arm_pos.x, &mani_rx_buff[bufIndex][4], 4);
+ memcpy(&mc_ctrl.arm_pos.y, &mani_rx_buff[bufIndex][8], 4);
+ memcpy(&mc_ctrl.arm_pos.z, &mani_rx_buff[bufIndex][12], 4);
+
+ ArmPositionSet(mc_ctrl.arm_pos.x.f,mc_ctrl.arm_pos.y.f,mc_ctrl.arm_pos.z.f);
+
+ break;
+ }
}
}
}
diff --git a/userCode/devices/Src/StateMachine.cpp b/userCode/devices/Src/StateMachine.cpp
deleted file mode 100644
index 313da01..0000000
--- a/userCode/devices/Src/StateMachine.cpp
+++ /dev/null
@@ -1,74 +0,0 @@
-//
-// Created by 25396 on 2023/4/6.
-//
-
-#include "StateMachine.h"
-//全局变量声明
-FunctionList StateMachine::function_lists = FunctionList();
-
-// 函数指针链表
-void FunctionList::add(void (*f)()) {
- //检查链表中是否已有该函数
- FunctionNode *curr = head;
- while (curr) {
- if (curr->func == f) {
- return;
- }
- curr = curr->next;
- }
- //链表中没有该函数,添加
- if (!head) {
- head = new FunctionNode(f);
- } else {
- curr = head;
- while (curr->next) {
- curr = curr->next;
- }
- curr->next = new FunctionNode(f);
- }
-
-}
-
-void FunctionList::remove(void (*f)()) {
- FunctionNode *curr = head;
- FunctionNode *prev = nullptr;
- while (curr) {
- if (curr->func == f) {
- if (prev) {
- prev->next = curr->next;
- } else {
- head = curr->next;
- }
- delete curr;
- break;
- }
- prev = curr;
- curr = curr->next;
- }
-}
-
-void FunctionList::call_all() {
- FunctionNode *curr = head;
- while (curr) {
- curr->func();
- curr = curr->next;
- }
-}
-
-
-void StateMachine::stateHandle() {
- function_lists.call_all(); // 触发当前状态对应的所有函数
-}
-
-void StateMachine::add_function_to_state(void (*f)()) {
- function_lists.add(f);
-}
-
-void StateMachine::remove_function_from_state(void (*f)()) {
- function_lists.remove(f);
-}
-
-StateMachine::StateMachine() {
- function_lists = FunctionList();// 初始化函数指针链表
-}
-
diff --git a/userCode/tasks/Inc/ArmTask.h b/userCode/tasks/Inc/ArmTask.h
index b98423d..3ca7e05 100644
--- a/userCode/tasks/Inc/ArmTask.h
+++ b/userCode/tasks/Inc/ArmTask.h
@@ -13,6 +13,18 @@
#include "Buzzer.h"
#include "StepperMotor.h"
-void ArmStop();
+#define l2 152.8f
+#define l3 130.46f
+#define l4 133.36f
+
+class ArmTask {
+public:
+ static void ArmStop();
+ static void ArmCalc(float x,float y,float z);
+
+
+ static float Angle[4];
+
+};
#endif //RM_FRAME_C_ARMTASK_H
diff --git a/userCode/tasks/Inc/AutoTask.h b/userCode/tasks/Inc/AutoTask.h
deleted file mode 100644
index 742f85f..0000000
--- a/userCode/tasks/Inc/AutoTask.h
+++ /dev/null
@@ -1,29 +0,0 @@
-//
-// Created by 25396 on 2023/4/6.
-//
-
-#ifndef RM_FRAME_C_AUTOTASK_H
-#define RM_FRAME_C_AUTOTASK_H
-#include "Device.h"
-#include "StateMachine.h"
-#include "ManiControl.h"
-
-
-static void AutoTask();
-//状态函数声明
-void ChassisStopTask();
-void Move_DisTask();
-void ArmTask();
-void TrayTask();
-void ClawTask();
-void Move_VelTask();
-
-/*外部函数声明-------------------------------------------------------------*/
-extern void AutoChassisStop();//Realized in ChassisTask
-extern void ChassisDistanceSet(float x, float y, float o);//Realized in ChassisTask
-extern void ChassisVelocitySet(float x_vel, float y_vel, float w_vel);//Realized in ChassisTask
-extern void ArmSet(float Joint1Pos, float Joint2Pos, float Joint3Pos, float Joint4Pos, float Joint5Pos);
-//extern void AutoTraySet(uint8_t trayflag);//Realized in ArmTask
-extern void ClawSet(uint8_t clawflag);//Realized in ArmTask
-
-#endif //RM_FRAME_C_AUTOTASK_H
diff --git a/userCode/tasks/Inc/ControlTask.h b/userCode/tasks/Inc/ControlTask.h
index 42fb21d..403f0d2 100644
--- a/userCode/tasks/Inc/ControlTask.h
+++ b/userCode/tasks/Inc/ControlTask.h
@@ -11,7 +11,6 @@
#include "RemoteControl.h"
#include "ServoTask.h"
#include "ArmTask.h"
-#include "AutoTask.h"
#include "ArmTask.h"
/*枚举类型定义------------------------------------------------------------*/
diff --git a/userCode/tasks/Src/ArmTask.cpp b/userCode/tasks/Src/ArmTask.cpp
index ce9975b..efc2df5 100644
--- a/userCode/tasks/Src/ArmTask.cpp
+++ b/userCode/tasks/Src/ArmTask.cpp
@@ -4,6 +4,9 @@
#include "ArmTask.h"
+#include
+
+float ArmTask::Angle[4]{0};
MOTOR_INIT_t Joint1MotorInit = {
.speedPIDp = nullptr,
@@ -79,7 +82,7 @@ bool ArmStopFlag = true;
bool ArmMoveFlag = false;
static float joint1Angle, joint2Angle, joint3Angle, joint4Angle, joint5Angle;
-void ArmStop() {
+void ArmTask::ArmStop() {
ArmStopFlag = true;
Joint1Motor.Stop();
Joint2Motor.Stop();
@@ -89,7 +92,7 @@ void ArmStop() {
ClawMotor.Stop();
}
-void ArmSet(float Joint1Pos, float Joint2Pos, float Joint3Pos, float Joint4Pos, float Joint5Pos) {
+void ArmJointSet(float Joint1Pos, float Joint2Pos, float Joint3Pos, float Joint4Pos, float Joint5Pos) {
ArmStopFlag = false;
Joint1Motor.SetTargetPosition(Joint1Pos);
Joint2Motor.SetTargetPosition(Joint2Pos);
@@ -108,19 +111,24 @@ void ClawSet(uint8_t clawflag) {
}
}
-void ARMHandle() {
- if (!ArmStopFlag) {
- if (ArmMoveFlag) {
- Joint1Motor.MoveTo();
- Joint2Motor.MoveTo();
- Joint3Motor.MoveTo();
- // Joint4Motor.MoveTo();
- // Joint5Motor.MoveTo();
- ArmMoveFlag = false;
- }
- }
+void ArmPositionSet(float x, float y, float z){
+ ArmTask::ArmCalc(x,y,z);
+ ArmJointSet(ArmTask::Angle[0], ArmTask::Angle[1], ArmTask::Angle[2], 0, 0);
+}
+void ArmTask::ArmCalc(float x,float y,float z){
+ float d1 = sqrtf(x*x+y*y);
+ float d2 = sqrtf(d1*d1+(z+l4)*(z+l4));
+ float angle1 = acosf((l3*l3-l2*l2-d2*d2)/(-2*l2*d2));
+ float angle2 = acosf((d2*d2-l2*l2-l3*l3)/(-2*l2*l3));
+ float angle3 = PI - angle1 - angle2;
+ float angle4 = atan2f(z+l4,d1);
+ float angle5 = PI/2 - angle4;
+
+ Angle[0] = atan2f(x,y);
+ Angle[1] = PI/2 - angle1 - angle4;
+ Angle[2] = PI/2 - angle2;
+ Angle[3] = PI/2 - angle3 - angle5;
}
-
diff --git a/userCode/tasks/Src/AutoTask.cpp b/userCode/tasks/Src/AutoTask.cpp
deleted file mode 100644
index cdf569b..0000000
--- a/userCode/tasks/Src/AutoTask.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-//
-// Created by 25396 on 2023/4/6.
-//
-
-#include "AutoTask.h"
-
-
-
-void ChassisStopTask(){
- AutoChassisStop();
- StateMachine::remove_function_from_state(ChassisStopTask);
- CompleteTask();
-}
-void Move_DisTask(){
- ChassisDistanceSet(ManiControl::mc_ctrl.chassisDis_col.x_Dis.f, ManiControl::mc_ctrl.chassisDis_col.y_Dis.f, ManiControl::mc_ctrl.chassisDis_col.Theta.f);
- StateMachine::remove_function_from_state(Move_DisTask);
-}
-void Move_VelTask(){
- ChassisVelocitySet(ManiControl::mc_ctrl.chassisVel_col.x_Vel.f, ManiControl::mc_ctrl.chassisVel_col.y_Vel.f, ManiControl::mc_ctrl.chassisVel_col.w_Vel.f);
- StateMachine::remove_function_from_state(Move_VelTask);
-}
-void ArmTask(){
- ArmSet(ManiControl::mc_ctrl.arm_col.Joint1Pos.f,ManiControl::mc_ctrl.arm_col.Joint2Pos.f,ManiControl::mc_ctrl.arm_col.Joint3Pos.f,ManiControl::mc_ctrl.arm_col.Joint4Pos.f,ManiControl::mc_ctrl.arm_col.Joint5Pos.f);
- StateMachine::remove_function_from_state(ArmTask);
-}
-void TrayTask(){
- // AutoTraySet(ManiControl::mc_ctrl.TrayFlag);
- StateMachine::remove_function_from_state(TrayTask);
-}
-void ClawTask(){
- ClawSet(ManiControl::mc_ctrl.ClawFlag);
- StateMachine::remove_function_from_state(ClawTask);
-}
diff --git a/userCode/tasks/Src/ControlTask.cpp b/userCode/tasks/Src/ControlTask.cpp
index f4f1ef4..43d7136 100644
--- a/userCode/tasks/Src/ControlTask.cpp
+++ b/userCode/tasks/Src/ControlTask.cpp
@@ -17,13 +17,16 @@ void autoImpulse(){
}
void CtrlHandle() {
- if (RemoteControl::rcInfo.sRight == DOWN_POS) {//右侧三档,急停模式
+
+ // StateMachine::stateHandle();
+
+ /* if (RemoteControl::rcInfo.sRight == DOWN_POS) {//右侧三档,急停模式
ChassisStop();
- ArmStop();
+ ArmTask::ArmStop();
}
-/* else if (RemoteControl::rcInfo.sRight == MID_POS){//右侧二档,脉冲模式
+*//* else if (RemoteControl::rcInfo.sRight == MID_POS){//右侧二档,脉冲模式
autoImpulse();
- }*/
+ }*//*
else {//其他正常模式
switch (RemoteControl::rcInfo.sLeft) {
case UP_POS://左侧一档{
@@ -55,49 +58,6 @@ void CtrlHandle() {
break;
}
- }
+ }*/
}
-/*
-void CtrlHandle() {
- if (RemoteControl::rcInfo.sRight == DOWN_POS) {//右侧三档,急停模式
- ChassisStop();
- ArmStop();
- } else {//其他正常模式
- switch (RemoteControl::rcInfo.sLeft) {
- case UP_POS://左侧一档{
- if (RemoteControl::rcInfo.sRight == UP_POS) {
- ChassisSetVelocity(RemoteControl::rcInfo.right_col * 8,
- RemoteControl::rcInfo.right_rol * 8, RemoteControl::rcInfo.left_rol*2);
- //ArmSet(RemoteControl::rcInfo.left_col, RemoteControl::rcInfo.left_col * 90,RemoteControl::rcInfo.left_col);
- AutoClawSet(0);
- Headmemory();
- }else if (RemoteControl::rcInfo.sRight == MID_POS){
- ChassisSetVelocity(RemoteControl::rcInfo.right_col * 8,
- RemoteControl::rcInfo.right_rol * 8, RemoteControl::rcInfo.left_rol*2);
- AutoClawSet(1);
- }
- break;
- case MID_POS://左侧二档
- if (RemoteControl::rcInfo.sRight == UP_POS) {
- ArmSet(RemoteControl::rcInfo.right_rol * -1.57f,
- RemoteControl::rcInfo.left_rol * -130,0);
- AutoClawSet(0);
- } else if (RemoteControl::rcInfo.sRight == MID_POS) {
- ArmSet(RemoteControl::rcInfo.right_rol* -1.57f,
- RemoteControl::rcInfo.left_rol * -130,0);
- AutoClawSet(1);
- }
- break;
- case DOWN_POS:
- if (RemoteControl::rcInfo.sRight == UP_POS) {
- AutoSetVelocity();
- }
- break;
- default:
- break;
- }
-
- }
-
-}*/
From 4b8a20b5e34a3513865e0a19498f1f05bf69b04a Mon Sep 17 00:00:00 2001
From: iDddddd <90831551+iDddddd@users.noreply.github.com>
Date: Sun, 24 Sep 2023 23:15:20 +0800
Subject: [PATCH 2/4] verison3.5.18
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
机械臂调试正常
---
MDK-ARM/RM_Frame_C.uvoptx | 39 ++++++++++++++++++++++-----
userCode/devices/Inc/ARMMotor.h | 5 +---
userCode/devices/Inc/CommuType.h | 2 +-
userCode/devices/Src/ARMMotor.cpp | 27 +++++++------------
userCode/devices/Src/ChassisMotor.cpp | 2 +-
userCode/devices/Src/CommuType.cpp | 7 +++--
userCode/devices/Src/ManiControl.cpp | 2 ++
userCode/tasks/Src/ArmTask.cpp | 8 +++---
8 files changed, 54 insertions(+), 38 deletions(-)
diff --git a/MDK-ARM/RM_Frame_C.uvoptx b/MDK-ARM/RM_Frame_C.uvoptx
index ff79dff..e398f31 100644
--- a/MDK-ARM/RM_Frame_C.uvoptx
+++ b/MDK-ARM/RM_Frame_C.uvoptx
@@ -162,7 +162,7 @@
0
0
- 16
+ 87
1
0
0
@@ -171,25 +171,25 @@
0
0
0
- C:\Users\25396\Documents\GitHub\Swerve-chassis-control-frame-1\userCode\tasks\Src\AutoTask.cpp
+ ..\userCode\devices\Src\CommuType.cpp
1
0
- 245
+ 91
1
- 134226518
+ 0
0
0
0
0
0
- 1
+ 0
..\userCode\devices\Src\CommuType.cpp
- \\RM_Frame_C\../userCode/devices/Src/CommuType.cpp\245
+
@@ -403,6 +403,11 @@
1
state.data[4]
+
+ 42
+ 1
+ Joint1Motor
+
@@ -430,6 +435,26 @@
2
rx_buff
+
+ 5
+ 2
+ autoMove
+
+
+ 6
+ 2
+ X
+
+
+ 7
+ 2
+ Y
+
+
+ 8
+ 2
+ RBL
+
@@ -1045,7 +1070,7 @@
Drivers/CMSIS
- 0
+ 1
0
0
0
diff --git a/userCode/devices/Inc/ARMMotor.h b/userCode/devices/Inc/ARMMotor.h
index 2f6f7c8..7643c2e 100644
--- a/userCode/devices/Inc/ARMMotor.h
+++ b/userCode/devices/Inc/ARMMotor.h
@@ -31,7 +31,6 @@ class SteppingMotor_v4 : public Motor, public CAN {
private:
uint8_t Direction{};
- float Position{};
uint16_t Speed{1500};
uint32_t Pulse{0};
@@ -39,8 +38,6 @@ class SteppingMotor_v4 : public Motor, public CAN {
uint8_t TxMessage[8]{0};
uint8_t TxMessageDLC{};
- int32_t nowPos = 0;
-
void CANMessageGenerate() override;
};
@@ -51,7 +48,6 @@ class SteppingMotor_v5 : public Motor, public CAN {
float NowPos = 0;
float TarPos = 0;
-
SteppingMotor_v5(COMMU_INIT_t *commuInit, MOTOR_INIT_t *motorInit);
void Handle() override;
@@ -61,6 +57,7 @@ class SteppingMotor_v5 : public Motor, public CAN {
~SteppingMotor_v5();
private:
+
uint8_t Direction{};
uint16_t Speed{1500};
uint32_t Pulse{};
diff --git a/userCode/devices/Inc/CommuType.h b/userCode/devices/Inc/CommuType.h
index 4858dd4..36b4f91 100644
--- a/userCode/devices/Inc/CommuType.h
+++ b/userCode/devices/Inc/CommuType.h
@@ -12,7 +12,7 @@
#define can1 1
#define can2 2
-#define MAX_MESSAGE_COUNT 20
+#define MAX_MESSAGE_COUNT 10
#define RX_SIZE 20
#define MOTOR_RX_SIZE 15u
/*结构体定义--------------------------------------------------------------*/
diff --git a/userCode/devices/Src/ARMMotor.cpp b/userCode/devices/Src/ARMMotor.cpp
index fdd9248..ce18e53 100644
--- a/userCode/devices/Src/ARMMotor.cpp
+++ b/userCode/devices/Src/ARMMotor.cpp
@@ -42,13 +42,13 @@ void SteppingMotor_v4::Handle() {
if (stopFlag) {
Pulse = 0;
} else {
- if (TarPos >= Position) {
- Direction = 0x11;
- } else {
+ if (TarPos >= NowPos) {
Direction = 0x01;
+ } else {
+ Direction = 0x11;
}
- Pulse = (uint32_t) (abs(TarPos - Position) / 2.0f / PI * 200 * 16 * reductionRatio);
- Position = TarPos;
+ Pulse = (uint32_t) (abs(TarPos - NowPos) / 2.0f / PI * 200 * 16 * reductionRatio);
+ NowPos = TarPos;
}
TxMessageDLC = 0x08;
TxMessage[0] = 0xFD;
@@ -61,6 +61,7 @@ void SteppingMotor_v4::Handle() {
TxMessage[7] = 0x6B;
CANMessageGenerate();
+ SendFlag = false;
}
}
@@ -78,6 +79,7 @@ SteppingMotor_v4::~SteppingMotor_v4() = default;
SteppingMotor_v5::SteppingMotor_v5(COMMU_INIT_t *commuInit, MOTOR_INIT_t *motorInit) :
Motor(motorInit, this), CAN(commuInit) {
ID_Bind_Rx(RxMessage);
+
}
SteppingMotor_v5::~SteppingMotor_v5() = default;
@@ -105,17 +107,6 @@ void SteppingMotor_v5::CANMessageGenerate() {;
}
void SteppingMotor_v5::Handle() {
-/*
- TxMessage[0] = 0x36;
- TxMessage[1] = 0x6B;
- TxMessageDLC = 0x02;
-
- nowPos = (int32_t) (RxMessage[2] << 24u | RxMessage[3] << 16u | RxMessage[4] << 8u | RxMessage[5]);
- if (RxMessage[1] == 0x01) {
- nowPos = -nowPos;
- }
- NowPos = ((float) nowPos * 2.0f * PI) / 65536.0f / reductionRatio;
-*/
if (SendFlag) {
if (stopFlag) {
Pulse = 0;
@@ -137,6 +128,7 @@ void SteppingMotor_v5::Handle() {
TxMessage[6] = Pulse >> 16u;
TxMessage[7] = Pulse >> 8u;
CANMessageGenerate();
+ can_ID += 1;
TxMessageDLC = 0x05;
TxMessage[0] = 0xFD;
TxMessage[1] = Pulse;
@@ -147,8 +139,9 @@ void SteppingMotor_v5::Handle() {
TxMessage[6] = 0x00;
TxMessage[7] = 0x00;
CANMessageGenerate();
- SendFlag = false;
+ can_ID -= 1;
}
+ SendFlag = false;
}
}
diff --git a/userCode/devices/Src/ChassisMotor.cpp b/userCode/devices/Src/ChassisMotor.cpp
index a273d73..2d94cd9 100644
--- a/userCode/devices/Src/ChassisMotor.cpp
+++ b/userCode/devices/Src/ChassisMotor.cpp
@@ -119,7 +119,7 @@ void Motor_4010::CANMessageGenerate() {
canQueue.Data[canQueue.rear].ID = can_ID;
canQueue.Data[canQueue.rear].canType = canType;
- canQueue.Data[canQueue.rear].DLC = 0x08;
+ canQueue.Data[canQueue.rear].DLC = 0x08;
canQueue.Data[canQueue.rear].message[0] = 0xA1;
canQueue.Data[canQueue.rear].message[1] = 0x00;
canQueue.Data[canQueue.rear].message[2] = 0x00;
diff --git a/userCode/devices/Src/CommuType.cpp b/userCode/devices/Src/CommuType.cpp
index c8302ed..aaa0f92 100644
--- a/userCode/devices/Src/CommuType.cpp
+++ b/userCode/devices/Src/CommuType.cpp
@@ -78,7 +78,7 @@ void CAN::CANPackageSend() {
HAL_CAN_AddTxMessage(&hcan1, &txHeaderTypeDef, canQueue.Data[canQueue.front].message, &box);
} else if (canQueue.Data[canQueue.front].canType == can2) {
- txHeaderTypeDef.StdId = canQueue.Data[canQueue.front].ID;//从消息包中取出对应的ID
+ txHeaderTypeDef.ExtId =canQueue.Data[canQueue.front].ID;//从消息包中取出对应的ID
txHeaderTypeDef.DLC = canQueue.Data[canQueue.front].DLC;//数据长度
txHeaderTypeDef.IDE = CAN_ID_EXT;//标准帧
txHeaderTypeDef.RTR = CAN_RTR_DATA;//数据帧
@@ -87,10 +87,9 @@ void CAN::CANPackageSend() {
HAL_CAN_AddTxMessage(&hcan2, &txHeaderTypeDef, canQueue.Data[canQueue.front].message, &box);
}
-
+ memset(canQueue.Data[canQueue.front].message, 0, sizeof(canQueue.Data[canQueue.front].message));//清空消息包中的数据
+ canQueue.front = (canQueue.front + 1) % MAX_MESSAGE_COUNT;//消息队列头指针后移
}
- memset(canQueue.Data[canQueue.front].message, 0, sizeof(canQueue.Data[canQueue.front].message));//清空消息包中的数据
- canQueue.front = (canQueue.front + 1) % MAX_MESSAGE_COUNT;//消息队列头指针后移
}
/**
diff --git a/userCode/devices/Src/ManiControl.cpp b/userCode/devices/Src/ManiControl.cpp
index 3208525..a3d1ada 100644
--- a/userCode/devices/Src/ManiControl.cpp
+++ b/userCode/devices/Src/ManiControl.cpp
@@ -62,6 +62,7 @@ void ManiControl::IT_Handle() {
if (LRC_calc(mani_rx_buff[0], uart6_rx_len - 1) == mani_rx_buff[0][uart6_rx_len - 1] && (mani_rx_buff[0][0] == 0x7A)) {
GetData(0);
}
+ memset(mani_rx_buff[0], 0, BUFF_SIZE);
/**只需关注该部分代码**/
} else {
/* Current memory buffer used is Memory 1 */
@@ -83,6 +84,7 @@ void ManiControl::IT_Handle() {
if (LRC_calc(mani_rx_buff[1], uart6_rx_len - 1) == mani_rx_buff[1][uart6_rx_len - 1] && (mani_rx_buff[1][0] == 0x7A)) {
GetData(1);
}
+ memset(mani_rx_buff[1], 0, BUFF_SIZE);
/**只需关注该部分代码**/
}
}
diff --git a/userCode/tasks/Src/ArmTask.cpp b/userCode/tasks/Src/ArmTask.cpp
index efc2df5..11d2fd6 100644
--- a/userCode/tasks/Src/ArmTask.cpp
+++ b/userCode/tasks/Src/ArmTask.cpp
@@ -75,7 +75,7 @@ SteppingMotor_v5 Joint1Motor(&Joint1CommuInit, &Joint1MotorInit);
SteppingMotor_v5 Joint2Motor(&Joint2CommuInit, &Joint2MotorInit);
SteppingMotor_v5 Joint3Motor(&Joint3CommuInit, &Joint3MotorInit);
//SteppingMotor_v4 Joint4Motor(&Joint4CommuInit, &Joint4MotorInit);
-//SteppingMotor_v4 Joint5Motor(&Joint5CommuInit, &Joint5MotorInit);
+SteppingMotor_v4 Joint5Motor(&Joint5CommuInit, &Joint5MotorInit);
StepperMotor ClawMotor(&ClawMotorInit);
bool ArmStopFlag = true;
@@ -88,7 +88,7 @@ void ArmTask::ArmStop() {
Joint2Motor.Stop();
Joint3Motor.Stop();
// Joint4Motor.Stop();
- // Joint5Motor.Stop();
+ Joint5Motor.Stop();
ClawMotor.Stop();
}
@@ -98,7 +98,7 @@ void ArmJointSet(float Joint1Pos, float Joint2Pos, float Joint3Pos, float Joint4
Joint2Motor.SetTargetPosition(Joint2Pos);
Joint3Motor.SetTargetPosition(Joint3Pos);
// Joint4Motor.SetTargetPosition(Joint4Pos);
- // Joint5Motor.SetTargetPosition(Joint5Pos);
+ Joint5Motor.SetTargetPosition(Joint5Pos);
ArmMoveFlag = true;
}
@@ -113,7 +113,7 @@ void ClawSet(uint8_t clawflag) {
void ArmPositionSet(float x, float y, float z){
ArmTask::ArmCalc(x,y,z);
- ArmJointSet(ArmTask::Angle[0], ArmTask::Angle[1], ArmTask::Angle[2], 0, 0);
+ ArmJointSet(ArmTask::Angle[0], ArmTask::Angle[1], ArmTask::Angle[2], 0, ArmTask::Angle[3]);
}
void ArmTask::ArmCalc(float x,float y,float z){
float d1 = sqrtf(x*x+y*y);
From 9e75a4464c33375d55fe67a18c6a95b4dfbbd52e Mon Sep 17 00:00:00 2001
From: iDddddd <90831551+iDddddd@users.noreply.github.com>
Date: Mon, 2 Oct 2023 22:19:24 +0800
Subject: [PATCH 3/4] version3.5.19
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
夹爪调试正常
---
Inc/main.h | 2 -
Inc/spi.h | 3 -
Inc/stm32f4xx_it.h | 2 -
Inc/tim.h | 6 +-
MDK-ARM/RM_Frame_C.uvoptx | 38 ++---
MDK-ARM/RM_Frame_C.uvprojx | 5 -
RM_Frame_C.ioc | 191 +++++++++++--------------
Src/dma.c | 3 -
Src/gpio.c | 35 ++++-
Src/spi.c | 115 ---------------
Src/stm32f4xx_it.c | 30 ----
Src/tim.c | 193 +++++++++++++-------------
userCode/devices/Inc/Buzzer.h | 25 ----
userCode/devices/Src/Buzzer.cpp | 24 ----
userCode/devices/Src/Device.cpp | 5 +-
userCode/devices/Src/ManiControl.cpp | 4 +-
userCode/devices/Src/StepperMotor.cpp | 24 ++--
userCode/tasks/Inc/ArmTask.h | 1 -
18 files changed, 238 insertions(+), 468 deletions(-)
delete mode 100644 userCode/devices/Inc/Buzzer.h
delete mode 100644 userCode/devices/Src/Buzzer.cpp
diff --git a/Inc/main.h b/Inc/main.h
index 28ec64f..20d2fc8 100644
--- a/Inc/main.h
+++ b/Inc/main.h
@@ -109,8 +109,6 @@ void Error_Handler(void);
#define OLED_RST_GPIO_Port GPIOB
#define CS1_GYRO_Pin GPIO_PIN_0
#define CS1_GYRO_GPIO_Port GPIOB
-#define OLED_DC_Pin GPIO_PIN_14
-#define OLED_DC_GPIO_Port GPIOB
/* USER CODE BEGIN Private defines */
diff --git a/Inc/spi.h b/Inc/spi.h
index beb378b..f40913c 100644
--- a/Inc/spi.h
+++ b/Inc/spi.h
@@ -34,14 +34,11 @@ extern "C" {
extern SPI_HandleTypeDef hspi1;
-extern SPI_HandleTypeDef hspi2;
-
/* USER CODE BEGIN Private defines */
/* USER CODE END Private defines */
void MX_SPI1_Init(void);
-void MX_SPI2_Init(void);
/* USER CODE BEGIN Prototypes */
diff --git a/Inc/stm32f4xx_it.h b/Inc/stm32f4xx_it.h
index e5f16a8..bb270d2 100644
--- a/Inc/stm32f4xx_it.h
+++ b/Inc/stm32f4xx_it.h
@@ -75,12 +75,10 @@ void EXTI0_IRQHandler(void);
void EXTI3_IRQHandler(void);
void EXTI4_IRQHandler(void);
void DMA1_Stream1_IRQHandler(void);
-void DMA1_Stream4_IRQHandler(void);
void CAN1_TX_IRQHandler(void);
void CAN1_RX0_IRQHandler(void);
void EXTI9_5_IRQHandler(void);
void TIM1_UP_TIM10_IRQHandler(void);
-void SPI2_IRQHandler(void);
void TIM6_DAC_IRQHandler(void);
void TIM7_IRQHandler(void);
void DMA2_Stream1_IRQHandler(void);
diff --git a/Inc/tim.h b/Inc/tim.h
index 5cfcb28..a4270ae 100644
--- a/Inc/tim.h
+++ b/Inc/tim.h
@@ -32,8 +32,6 @@ extern "C" {
/* USER CODE END Includes */
-extern TIM_HandleTypeDef htim4;
-
extern TIM_HandleTypeDef htim5;
extern TIM_HandleTypeDef htim6;
@@ -42,15 +40,17 @@ extern TIM_HandleTypeDef htim7;
extern TIM_HandleTypeDef htim10;
+extern TIM_HandleTypeDef htim12;
+
/* USER CODE BEGIN Private defines */
/* USER CODE END Private defines */
-void MX_TIM4_Init(void);
void MX_TIM5_Init(void);
void MX_TIM6_Init(void);
void MX_TIM7_Init(void);
void MX_TIM10_Init(void);
+void MX_TIM12_Init(void);
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
diff --git a/MDK-ARM/RM_Frame_C.uvoptx b/MDK-ARM/RM_Frame_C.uvoptx
index e398f31..6aabf6b 100644
--- a/MDK-ARM/RM_Frame_C.uvoptx
+++ b/MDK-ARM/RM_Frame_C.uvoptx
@@ -171,7 +171,7 @@
0
0
0
- ..\userCode\devices\Src\CommuType.cpp
+ startup_stm32f407xx.s
@@ -187,7 +187,7 @@
0
0
0
- ..\userCode\devices\Src\CommuType.cpp
+ startup_stm32f407xx.s
@@ -1321,18 +1321,6 @@
0
0
0
- ..\userCode\devices\Src\Buzzer.cpp
- Buzzer.cpp
- 0
- 0
-
-
- 7
- 64
- 8
- 0
- 0
- 0
..\userCode\devices\Src\ARMMotor.cpp
ARMMotor.cpp
0
@@ -1340,7 +1328,7 @@
7
- 65
+ 64
8
0
0
@@ -1352,7 +1340,7 @@
7
- 66
+ 65
8
0
0
@@ -1364,7 +1352,7 @@
7
- 67
+ 66
8
0
0
@@ -1376,7 +1364,7 @@
7
- 68
+ 67
8
0
0
@@ -1396,7 +1384,7 @@
0
8
- 69
+ 68
8
0
0
@@ -1408,7 +1396,7 @@
8
- 70
+ 69
8
0
0
@@ -1428,7 +1416,7 @@
0
9
- 71
+ 70
8
0
0
@@ -1448,7 +1436,7 @@
0
10
- 72
+ 71
8
0
0
@@ -1460,7 +1448,7 @@
10
- 73
+ 72
8
0
0
@@ -1480,7 +1468,7 @@
0
11
- 74
+ 73
8
0
0
@@ -1492,7 +1480,7 @@
11
- 75
+ 74
8
0
0
diff --git a/MDK-ARM/RM_Frame_C.uvprojx b/MDK-ARM/RM_Frame_C.uvprojx
index 50d893b..f49023c 100644
--- a/MDK-ARM/RM_Frame_C.uvprojx
+++ b/MDK-ARM/RM_Frame_C.uvprojx
@@ -776,11 +776,6 @@
8
..\userCode\devices\Src\CommuType.cpp
-
- Buzzer.cpp
- 8
- ..\userCode\devices\Src\Buzzer.cpp
-
ARMMotor.cpp
8
diff --git a/RM_Frame_C.ioc b/RM_Frame_C.ioc
index 14e777b..78628be 100644
--- a/RM_Frame_C.ioc
+++ b/RM_Frame_C.ioc
@@ -30,10 +30,9 @@ CAN2.Prescaler=3
Dma.Request0=USART3_RX
Dma.Request1=SPI1_RX
Dma.Request2=SPI1_TX
-Dma.Request3=SPI2_TX
-Dma.Request4=USART6_RX
-Dma.Request5=USART1_RX
-Dma.RequestsNb=6
+Dma.Request3=USART6_RX
+Dma.Request4=USART1_RX
+Dma.RequestsNb=5
Dma.SPI1_RX.1.Direction=DMA_PERIPH_TO_MEMORY
Dma.SPI1_RX.1.FIFOMode=DMA_FIFOMODE_DISABLE
Dma.SPI1_RX.1.Instance=DMA2_Stream0
@@ -54,26 +53,16 @@ Dma.SPI1_TX.2.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
Dma.SPI1_TX.2.PeriphInc=DMA_PINC_DISABLE
Dma.SPI1_TX.2.Priority=DMA_PRIORITY_HIGH
Dma.SPI1_TX.2.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
-Dma.SPI2_TX.3.Direction=DMA_MEMORY_TO_PERIPH
-Dma.SPI2_TX.3.FIFOMode=DMA_FIFOMODE_DISABLE
-Dma.SPI2_TX.3.Instance=DMA1_Stream4
-Dma.SPI2_TX.3.MemDataAlignment=DMA_MDATAALIGN_BYTE
-Dma.SPI2_TX.3.MemInc=DMA_MINC_ENABLE
-Dma.SPI2_TX.3.Mode=DMA_NORMAL
-Dma.SPI2_TX.3.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
-Dma.SPI2_TX.3.PeriphInc=DMA_PINC_DISABLE
-Dma.SPI2_TX.3.Priority=DMA_PRIORITY_HIGH
-Dma.SPI2_TX.3.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
-Dma.USART1_RX.5.Direction=DMA_PERIPH_TO_MEMORY
-Dma.USART1_RX.5.FIFOMode=DMA_FIFOMODE_DISABLE
-Dma.USART1_RX.5.Instance=DMA2_Stream2
-Dma.USART1_RX.5.MemDataAlignment=DMA_MDATAALIGN_BYTE
-Dma.USART1_RX.5.MemInc=DMA_MINC_ENABLE
-Dma.USART1_RX.5.Mode=DMA_NORMAL
-Dma.USART1_RX.5.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
-Dma.USART1_RX.5.PeriphInc=DMA_PINC_DISABLE
-Dma.USART1_RX.5.Priority=DMA_PRIORITY_HIGH
-Dma.USART1_RX.5.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
+Dma.USART1_RX.4.Direction=DMA_PERIPH_TO_MEMORY
+Dma.USART1_RX.4.FIFOMode=DMA_FIFOMODE_DISABLE
+Dma.USART1_RX.4.Instance=DMA2_Stream2
+Dma.USART1_RX.4.MemDataAlignment=DMA_MDATAALIGN_BYTE
+Dma.USART1_RX.4.MemInc=DMA_MINC_ENABLE
+Dma.USART1_RX.4.Mode=DMA_NORMAL
+Dma.USART1_RX.4.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
+Dma.USART1_RX.4.PeriphInc=DMA_PINC_DISABLE
+Dma.USART1_RX.4.Priority=DMA_PRIORITY_HIGH
+Dma.USART1_RX.4.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
Dma.USART3_RX.0.Direction=DMA_PERIPH_TO_MEMORY
Dma.USART3_RX.0.FIFOMode=DMA_FIFOMODE_DISABLE
Dma.USART3_RX.0.Instance=DMA1_Stream1
@@ -84,17 +73,18 @@ Dma.USART3_RX.0.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
Dma.USART3_RX.0.PeriphInc=DMA_PINC_DISABLE
Dma.USART3_RX.0.Priority=DMA_PRIORITY_VERY_HIGH
Dma.USART3_RX.0.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
-Dma.USART6_RX.4.Direction=DMA_PERIPH_TO_MEMORY
-Dma.USART6_RX.4.FIFOMode=DMA_FIFOMODE_DISABLE
-Dma.USART6_RX.4.Instance=DMA2_Stream1
-Dma.USART6_RX.4.MemDataAlignment=DMA_MDATAALIGN_BYTE
-Dma.USART6_RX.4.MemInc=DMA_MINC_ENABLE
-Dma.USART6_RX.4.Mode=DMA_NORMAL
-Dma.USART6_RX.4.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
-Dma.USART6_RX.4.PeriphInc=DMA_PINC_DISABLE
-Dma.USART6_RX.4.Priority=DMA_PRIORITY_HIGH
-Dma.USART6_RX.4.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
+Dma.USART6_RX.3.Direction=DMA_PERIPH_TO_MEMORY
+Dma.USART6_RX.3.FIFOMode=DMA_FIFOMODE_DISABLE
+Dma.USART6_RX.3.Instance=DMA2_Stream1
+Dma.USART6_RX.3.MemDataAlignment=DMA_MDATAALIGN_BYTE
+Dma.USART6_RX.3.MemInc=DMA_MINC_ENABLE
+Dma.USART6_RX.3.Mode=DMA_NORMAL
+Dma.USART6_RX.3.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
+Dma.USART6_RX.3.PeriphInc=DMA_PINC_DISABLE
+Dma.USART6_RX.3.Priority=DMA_PRIORITY_HIGH
+Dma.USART6_RX.3.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode
File.Version=6
+GPIO.groupedBy=Group By Peripherals
I2C3.I2C_Mode=I2C_Fast
I2C3.IPParameters=I2C_Mode
IWDG.IPParameters=Prescaler,Reload
@@ -105,19 +95,18 @@ Mcu.CPN=STM32F407IGH6
Mcu.Family=STM32F4
Mcu.IP0=ADC1
Mcu.IP1=ADC3
-Mcu.IP10=SPI2
-Mcu.IP11=SYS
-Mcu.IP12=TIM4
-Mcu.IP13=TIM5
-Mcu.IP14=TIM6
-Mcu.IP15=TIM7
-Mcu.IP16=TIM10
-Mcu.IP17=USART1
-Mcu.IP18=USART3
-Mcu.IP19=USART6
+Mcu.IP10=SYS
+Mcu.IP11=TIM5
+Mcu.IP12=TIM6
+Mcu.IP13=TIM7
+Mcu.IP14=TIM10
+Mcu.IP15=TIM12
+Mcu.IP16=USART1
+Mcu.IP17=USART3
+Mcu.IP18=USART6
+Mcu.IP19=USB_DEVICE
Mcu.IP2=CAN1
-Mcu.IP20=USB_DEVICE
-Mcu.IP21=USB_OTG_FS
+Mcu.IP20=USB_OTG_FS
Mcu.IP3=CAN2
Mcu.IP4=DMA
Mcu.IP5=I2C3
@@ -125,7 +114,7 @@ Mcu.IP6=IWDG
Mcu.IP7=NVIC
Mcu.IP8=RCC
Mcu.IP9=SPI1
-Mcu.IPNb=22
+Mcu.IPNb=21
Mcu.Name=STM32F407I(E-G)Hx
Mcu.Package=UFBGA176
Mcu.Pin0=PB5
@@ -134,51 +123,50 @@ Mcu.Pin10=PC10
Mcu.Pin11=PA12
Mcu.Pin12=PG9
Mcu.Pin13=PD1
-Mcu.Pin14=PI2
-Mcu.Pin15=PA11
-Mcu.Pin16=PF0
-Mcu.Pin17=PA9
-Mcu.Pin18=PC9
-Mcu.Pin19=PA8
+Mcu.Pin14=PA11
+Mcu.Pin15=PF0
+Mcu.Pin16=PA9
+Mcu.Pin17=PC9
+Mcu.Pin18=PA8
+Mcu.Pin19=PH0-OSC_IN
Mcu.Pin2=PB4
-Mcu.Pin20=PH0-OSC_IN
-Mcu.Pin21=PH1-OSC_OUT
-Mcu.Pin22=PF1
-Mcu.Pin23=PG6
-Mcu.Pin24=PF6
-Mcu.Pin25=PH12
-Mcu.Pin26=PG3
-Mcu.Pin27=PF10
-Mcu.Pin28=PH11
-Mcu.Pin29=PH10
+Mcu.Pin20=PH1-OSC_OUT
+Mcu.Pin21=PF1
+Mcu.Pin22=PG6
+Mcu.Pin23=PF6
+Mcu.Pin24=PH12
+Mcu.Pin25=PG3
+Mcu.Pin26=PF10
+Mcu.Pin27=PH11
+Mcu.Pin28=PH10
+Mcu.Pin29=PD14
Mcu.Pin3=PB3
-Mcu.Pin30=PD14
-Mcu.Pin31=PA0-WKUP
-Mcu.Pin32=PA4
-Mcu.Pin33=PC4
-Mcu.Pin34=PC5
-Mcu.Pin35=PB12
-Mcu.Pin36=PB13
-Mcu.Pin37=PA7
-Mcu.Pin38=PB0
-Mcu.Pin39=PB14
+Mcu.Pin30=PA0-WKUP
+Mcu.Pin31=PA4
+Mcu.Pin32=PC4
+Mcu.Pin33=PC5
+Mcu.Pin34=PB12
+Mcu.Pin35=PB13
+Mcu.Pin36=PA7
+Mcu.Pin37=PB0
+Mcu.Pin38=PB14
+Mcu.Pin39=PB15
Mcu.Pin4=PA14
-Mcu.Pin40=PB15
-Mcu.Pin41=VP_ADC1_Vref_Input
-Mcu.Pin42=VP_IWDG_VS_IWDG
-Mcu.Pin43=VP_SYS_VS_Systick
-Mcu.Pin44=VP_TIM4_VS_ClockSourceINT
-Mcu.Pin45=VP_TIM5_VS_ClockSourceINT
-Mcu.Pin46=VP_TIM6_VS_ClockSourceINT
-Mcu.Pin47=VP_TIM7_VS_ClockSourceINT
-Mcu.Pin48=VP_TIM10_VS_ClockSourceINT
-Mcu.Pin49=VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS
+Mcu.Pin40=VP_ADC1_Vref_Input
+Mcu.Pin41=VP_IWDG_VS_IWDG
+Mcu.Pin42=VP_SYS_VS_Systick
+Mcu.Pin43=VP_TIM5_VS_ClockSourceINT
+Mcu.Pin44=VP_TIM6_VS_ClockSourceINT
+Mcu.Pin45=VP_TIM7_VS_ClockSourceINT
+Mcu.Pin46=VP_TIM10_VS_ClockSourceINT
+Mcu.Pin47=VP_TIM12_VS_ClockSourceINT
+Mcu.Pin48=VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS
Mcu.Pin5=PA13
Mcu.Pin6=PB7
Mcu.Pin7=PB6
Mcu.Pin8=PD0
Mcu.Pin9=PC11
-Mcu.PinsNb=50
+Mcu.PinsNb=49
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32F407IGHx
@@ -190,7 +178,6 @@ NVIC.CAN1_TX_IRQn=true\:3\:0\:true\:false\:true\:true\:true\:true
NVIC.CAN2_RX0_IRQn=true\:1\:0\:true\:false\:true\:true\:true\:true
NVIC.CAN2_TX_IRQn=true\:3\:0\:true\:false\:true\:true\:true\:true
NVIC.DMA1_Stream1_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
-NVIC.DMA1_Stream4_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
NVIC.DMA2_Stream0_IRQn=true\:0\:0\:false\:false\:false\:false\:true\:true
NVIC.DMA2_Stream1_IRQn=true\:1\:0\:true\:false\:true\:false\:true\:true
NVIC.DMA2_Stream2_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
@@ -207,7 +194,6 @@ NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.OTG_FS_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
-NVIC.SPI2_IRQn=true\:10\:0\:true\:false\:true\:true\:true\:true
NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:false
NVIC.TIM1_UP_TIM10_IRQn=true\:10\:0\:true\:false\:true\:true\:true\:true
@@ -262,18 +248,11 @@ PB12.Locked=true
PB12.PinState=GPIO_PIN_SET
PB12.Signal=GPIO_Output
PB13.Locked=true
-PB13.Mode=Full_Duplex_Master
PB13.Signal=SPI2_SCK
-PB14.GPIOParameters=GPIO_Speed,PinState,GPIO_PuPd,GPIO_Label
-PB14.GPIO_Label=OLED_DC
-PB14.GPIO_PuPd=GPIO_PULLUP
-PB14.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
PB14.Locked=true
-PB14.PinState=GPIO_PIN_SET
PB14.Signal=GPIO_Output
PB15.Locked=true
-PB15.Mode=Full_Duplex_Master
-PB15.Signal=SPI2_MOSI
+PB15.Signal=S_TIM12_CH2
PB3.Mode=Full_Duplex_Master
PB3.Signal=SPI1_SCK
PB4.Mode=Full_Duplex_Master
@@ -369,8 +348,6 @@ PH12.GPIO_PuPd=GPIO_NOPULL
PH12.GPIO_Speed=GPIO_SPEED_FREQ_LOW
PH12.Locked=true
PH12.Signal=S_TIM5_CH3
-PI2.Mode=Full_Duplex_Master
-PI2.Signal=SPI2_MISO
PinOutPanel.CurrentBGAView=Top
PinOutPanel.RotationAngle=0
ProjectManager.AskForMigrate=true
@@ -400,7 +377,7 @@ ProjectManager.StackSize=0x800
ProjectManager.TargetToolchain=MDK-ARM V5
ProjectManager.ToolChainLocation=
ProjectManager.UnderRoot=false
-ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-MX_DMA_Init-DMA-false-HAL-true,3-SystemClock_Config-RCC-false-HAL-false,4-MX_TIM5_Init-TIM5-false-HAL-true,5-MX_TIM4_Init-TIM4-false-HAL-true,6-MX_TIM10_Init-TIM10-false-HAL-true,7-MX_ADC1_Init-ADC1-false-HAL-true,8-MX_ADC3_Init-ADC3-false-HAL-true,9-MX_USART1_UART_Init-USART1-false-HAL-true,10-MX_USART6_UART_Init-USART6-false-HAL-true,11-MX_USART3_UART_Init-USART3-false-HAL-true,12-MX_CAN1_Init-CAN1-false-HAL-true,13-MX_CAN2_Init-CAN2-false-HAL-true,14-MX_I2C3_Init-I2C3-false-HAL-true,15-MX_SPI1_Init-SPI1-false-HAL-true,16-MX_IWDG_Init-IWDG-false-HAL-true,17-MX_USB_DEVICE_Init-USB_DEVICE-false-HAL-false,18-MX_TIM6_Init-TIM6-false-HAL-true,19-MX_TIM7_Init-TIM7-false-HAL-true,20-MX_SPI2_Init-SPI2-false-HAL-true
+ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-MX_DMA_Init-DMA-false-HAL-true,3-SystemClock_Config-RCC-false-HAL-false,4-MX_TIM5_Init-TIM5-false-HAL-true,5-MX_TIM4_Init-TIM4-false-HAL-true,5-MX_TIM10_Init-TIM10-false-HAL-true,6-MX_ADC1_Init-ADC1-false-HAL-true,7-MX_ADC3_Init-ADC3-false-HAL-true,8-MX_USART1_UART_Init-USART1-false-HAL-true,9-MX_USART6_UART_Init-USART6-false-HAL-true,10-MX_USART3_UART_Init-USART3-false-HAL-true,11-MX_CAN1_Init-CAN1-false-HAL-true,12-MX_CAN2_Init-CAN2-false-HAL-true,13-MX_I2C3_Init-I2C3-false-HAL-true,14-MX_SPI1_Init-SPI1-false-HAL-true,15-MX_IWDG_Init-IWDG-false-HAL-true,16-MX_USB_DEVICE_Init-USB_DEVICE-false-HAL-false,17-MX_TIM6_Init-TIM6-false-HAL-true,18-MX_TIM7_Init-TIM7-false-HAL-true,20-MX_SPI2_Init-SPI2-false-HAL-true
RCC.48MHZClocksFreq_Value=48000000
RCC.AHBFreq_Value=168000000
RCC.APB1CLKDivider=RCC_HCLK_DIV4
@@ -444,7 +421,9 @@ SH.GPXTI5.0=GPIO_EXTI5
SH.GPXTI5.ConfNb=1
SH.S_TIM10_CH1.0=TIM10_CH1,PWM Generation1 CH1
SH.S_TIM10_CH1.ConfNb=1
-SH.S_TIM4_CH3.0=TIM4_CH3,PWM Generation3 CH3
+SH.S_TIM12_CH2.0=TIM12_CH2,PWM Generation2 CH2
+SH.S_TIM12_CH2.ConfNb=1
+SH.S_TIM4_CH3.0=TIM4_CH3
SH.S_TIM4_CH3.ConfNb=1
SH.S_TIM5_CH1.0=TIM5_CH1,PWM Generation1 CH1
SH.S_TIM5_CH1.ConfNb=1
@@ -460,18 +439,14 @@ SPI1.Direction=SPI_DIRECTION_2LINES
SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,BaudRatePrescaler,CLKPolarity,CLKPhase
SPI1.Mode=SPI_MODE_MASTER
SPI1.VirtualType=VM_MASTER
-SPI2.CalculateBaudRate=21.0 MBits/s
-SPI2.Direction=SPI_DIRECTION_2LINES
-SPI2.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate
-SPI2.Mode=SPI_MODE_MASTER
-SPI2.VirtualType=VM_MASTER
TIM10.Channel=TIM_CHANNEL_1
TIM10.IPParameters=Prescaler,Period,Channel
TIM10.Period=1000-1
TIM10.Prescaler=168-1
-TIM4.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3
-TIM4.IPParameters=Channel-PWM Generation3 CH3,Period
-TIM4.Period=21000-1
+TIM12.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2
+TIM12.IPParameters=Channel-PWM Generation2 CH2,Prescaler,Period
+TIM12.Period=999
+TIM12.Prescaler=335
TIM5.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1
TIM5.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2
TIM5.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3
@@ -508,8 +483,8 @@ VP_SYS_VS_Systick.Mode=SysTick
VP_SYS_VS_Systick.Signal=SYS_VS_Systick
VP_TIM10_VS_ClockSourceINT.Mode=Enable_Timer
VP_TIM10_VS_ClockSourceINT.Signal=TIM10_VS_ClockSourceINT
-VP_TIM4_VS_ClockSourceINT.Mode=Internal
-VP_TIM4_VS_ClockSourceINT.Signal=TIM4_VS_ClockSourceINT
+VP_TIM12_VS_ClockSourceINT.Mode=Internal
+VP_TIM12_VS_ClockSourceINT.Signal=TIM12_VS_ClockSourceINT
VP_TIM5_VS_ClockSourceINT.Mode=Internal
VP_TIM5_VS_ClockSourceINT.Signal=TIM5_VS_ClockSourceINT
VP_TIM6_VS_ClockSourceINT.Mode=Enable_Timer
diff --git a/Src/dma.c b/Src/dma.c
index 9cfb391..7373ba9 100644
--- a/Src/dma.c
+++ b/Src/dma.c
@@ -47,9 +47,6 @@ void MX_DMA_Init(void)
/* DMA1_Stream1_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
- /* DMA1_Stream4_IRQn interrupt configuration */
- HAL_NVIC_SetPriority(DMA1_Stream4_IRQn, 0, 0);
- HAL_NVIC_EnableIRQ(DMA1_Stream4_IRQn);
/* DMA2_Stream0_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA2_Stream0_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(DMA2_Stream0_IRQn);
diff --git a/Src/gpio.c b/Src/gpio.c
index 684e357..2b08ccd 100644
--- a/Src/gpio.c
+++ b/Src/gpio.c
@@ -38,6 +38,8 @@
* Output
* EVENT_OUT
* EXTI
+ PD14 ------> S_TIM4_CH3
+ PB13 ------> SPI2_SCK
*/
void MX_GPIO_Init(void)
{
@@ -50,7 +52,6 @@ void MX_GPIO_Init(void)
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOD_CLK_ENABLE();
__HAL_RCC_GPIOC_CLK_ENABLE();
- __HAL_RCC_GPIOI_CLK_ENABLE();
__HAL_RCC_GPIOF_CLK_ENABLE();
__HAL_RCC_GPIOH_CLK_ENABLE();
@@ -64,7 +65,10 @@ void MX_GPIO_Init(void)
HAL_GPIO_WritePin(CS1_ACCEL_GPIO_Port, CS1_ACCEL_Pin, GPIO_PIN_SET);
/*Configure GPIO pin Output Level */
- HAL_GPIO_WritePin(GPIOB, OLED_RST_Pin|CS1_GYRO_Pin|OLED_DC_Pin, GPIO_PIN_SET);
+ HAL_GPIO_WritePin(GPIOB, OLED_RST_Pin|CS1_GYRO_Pin, GPIO_PIN_SET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_RESET);
/*Configure GPIO pins : PFPin PFPin */
GPIO_InitStruct.Pin = DIR_Pin|STEP_Pin;
@@ -86,6 +90,14 @@ void MX_GPIO_Init(void)
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(IST8310_DRDY_GPIO_Port, &GPIO_InitStruct);
+ /*Configure GPIO pin : PD14 */
+ GPIO_InitStruct.Pin = GPIO_PIN_14;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ GPIO_InitStruct.Alternate = GPIO_AF2_TIM4;
+ HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
+
/*Configure GPIO pin : PtPin */
GPIO_InitStruct.Pin = KEY_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING;
@@ -105,13 +117,28 @@ void MX_GPIO_Init(void)
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
- /*Configure GPIO pins : PBPin PBPin PBPin */
- GPIO_InitStruct.Pin = OLED_RST_Pin|CS1_GYRO_Pin|OLED_DC_Pin;
+ /*Configure GPIO pins : PBPin PBPin */
+ GPIO_InitStruct.Pin = OLED_RST_Pin|CS1_GYRO_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+ /*Configure GPIO pin : PB13 */
+ GPIO_InitStruct.Pin = GPIO_PIN_13;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+ GPIO_InitStruct.Alternate = GPIO_AF5_SPI2;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /*Configure GPIO pin : PB14 */
+ GPIO_InitStruct.Pin = GPIO_PIN_14;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
/* EXTI interrupt init*/
HAL_NVIC_SetPriority(EXTI0_IRQn, 10, 0);
HAL_NVIC_EnableIRQ(EXTI0_IRQn);
diff --git a/Src/spi.c b/Src/spi.c
index d354083..8e75216 100644
--- a/Src/spi.c
+++ b/Src/spi.c
@@ -25,10 +25,8 @@
/* USER CODE END 0 */
SPI_HandleTypeDef hspi1;
-SPI_HandleTypeDef hspi2;
DMA_HandleTypeDef hdma_spi1_rx;
DMA_HandleTypeDef hdma_spi1_tx;
-DMA_HandleTypeDef hdma_spi2_tx;
/* SPI1 init function */
void MX_SPI1_Init(void)
@@ -61,38 +59,6 @@ void MX_SPI1_Init(void)
/* USER CODE END SPI1_Init 2 */
-}
-/* SPI2 init function */
-void MX_SPI2_Init(void)
-{
-
- /* USER CODE BEGIN SPI2_Init 0 */
-
- /* USER CODE END SPI2_Init 0 */
-
- /* USER CODE BEGIN SPI2_Init 1 */
-
- /* USER CODE END SPI2_Init 1 */
- hspi2.Instance = SPI2;
- hspi2.Init.Mode = SPI_MODE_MASTER;
- hspi2.Init.Direction = SPI_DIRECTION_2LINES;
- hspi2.Init.DataSize = SPI_DATASIZE_8BIT;
- hspi2.Init.CLKPolarity = SPI_POLARITY_LOW;
- hspi2.Init.CLKPhase = SPI_PHASE_1EDGE;
- hspi2.Init.NSS = SPI_NSS_SOFT;
- hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
- hspi2.Init.FirstBit = SPI_FIRSTBIT_MSB;
- hspi2.Init.TIMode = SPI_TIMODE_DISABLE;
- hspi2.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
- hspi2.Init.CRCPolynomial = 10;
- if (HAL_SPI_Init(&hspi2) != HAL_OK)
- {
- Error_Handler();
- }
- /* USER CODE BEGIN SPI2_Init 2 */
-
- /* USER CODE END SPI2_Init 2 */
-
}
void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle)
@@ -169,61 +135,6 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle)
/* USER CODE END SPI1_MspInit 1 */
}
- else if(spiHandle->Instance==SPI2)
- {
- /* USER CODE BEGIN SPI2_MspInit 0 */
-
- /* USER CODE END SPI2_MspInit 0 */
- /* SPI2 clock enable */
- __HAL_RCC_SPI2_CLK_ENABLE();
-
- __HAL_RCC_GPIOI_CLK_ENABLE();
- __HAL_RCC_GPIOB_CLK_ENABLE();
- /**SPI2 GPIO Configuration
- PI2 ------> SPI2_MISO
- PB13 ------> SPI2_SCK
- PB15 ------> SPI2_MOSI
- */
- GPIO_InitStruct.Pin = GPIO_PIN_2;
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
- GPIO_InitStruct.Alternate = GPIO_AF5_SPI2;
- HAL_GPIO_Init(GPIOI, &GPIO_InitStruct);
-
- GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_15;
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
- GPIO_InitStruct.Alternate = GPIO_AF5_SPI2;
- HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
-
- /* SPI2 DMA Init */
- /* SPI2_TX Init */
- hdma_spi2_tx.Instance = DMA1_Stream4;
- hdma_spi2_tx.Init.Channel = DMA_CHANNEL_0;
- hdma_spi2_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
- hdma_spi2_tx.Init.PeriphInc = DMA_PINC_DISABLE;
- hdma_spi2_tx.Init.MemInc = DMA_MINC_ENABLE;
- hdma_spi2_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
- hdma_spi2_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
- hdma_spi2_tx.Init.Mode = DMA_NORMAL;
- hdma_spi2_tx.Init.Priority = DMA_PRIORITY_HIGH;
- hdma_spi2_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
- if (HAL_DMA_Init(&hdma_spi2_tx) != HAL_OK)
- {
- Error_Handler();
- }
-
- __HAL_LINKDMA(spiHandle,hdmatx,hdma_spi2_tx);
-
- /* SPI2 interrupt Init */
- HAL_NVIC_SetPriority(SPI2_IRQn, 10, 0);
- HAL_NVIC_EnableIRQ(SPI2_IRQn);
- /* USER CODE BEGIN SPI2_MspInit 1 */
-
- /* USER CODE END SPI2_MspInit 1 */
- }
}
void HAL_SPI_MspDeInit(SPI_HandleTypeDef* spiHandle)
@@ -253,32 +164,6 @@ void HAL_SPI_MspDeInit(SPI_HandleTypeDef* spiHandle)
/* USER CODE END SPI1_MspDeInit 1 */
}
- else if(spiHandle->Instance==SPI2)
- {
- /* USER CODE BEGIN SPI2_MspDeInit 0 */
-
- /* USER CODE END SPI2_MspDeInit 0 */
- /* Peripheral clock disable */
- __HAL_RCC_SPI2_CLK_DISABLE();
-
- /**SPI2 GPIO Configuration
- PI2 ------> SPI2_MISO
- PB13 ------> SPI2_SCK
- PB15 ------> SPI2_MOSI
- */
- HAL_GPIO_DeInit(GPIOI, GPIO_PIN_2);
-
- HAL_GPIO_DeInit(GPIOB, GPIO_PIN_13|GPIO_PIN_15);
-
- /* SPI2 DMA DeInit */
- HAL_DMA_DeInit(spiHandle->hdmatx);
-
- /* SPI2 interrupt Deinit */
- HAL_NVIC_DisableIRQ(SPI2_IRQn);
- /* USER CODE BEGIN SPI2_MspDeInit 1 */
-
- /* USER CODE END SPI2_MspDeInit 1 */
- }
}
/* USER CODE BEGIN 1 */
diff --git a/Src/stm32f4xx_it.c b/Src/stm32f4xx_it.c
index c602eb9..77b7411 100644
--- a/Src/stm32f4xx_it.c
+++ b/Src/stm32f4xx_it.c
@@ -77,8 +77,6 @@ extern PCD_HandleTypeDef hpcd_USB_OTG_FS;
extern CAN_HandleTypeDef hcan1;
extern CAN_HandleTypeDef hcan2;
extern DMA_HandleTypeDef hdma_spi1_tx;
-extern DMA_HandleTypeDef hdma_spi2_tx;
-extern SPI_HandleTypeDef hspi2;
extern TIM_HandleTypeDef htim6;
extern TIM_HandleTypeDef htim7;
extern TIM_HandleTypeDef htim10;
@@ -281,20 +279,6 @@ void DMA1_Stream1_IRQHandler(void)
/* USER CODE END DMA1_Stream1_IRQn 1 */
}
-/**
- * @brief This function handles DMA1 stream4 global interrupt.
- */
-void DMA1_Stream4_IRQHandler(void)
-{
- /* USER CODE BEGIN DMA1_Stream4_IRQn 0 */
-
- /* USER CODE END DMA1_Stream4_IRQn 0 */
- HAL_DMA_IRQHandler(&hdma_spi2_tx);
- /* USER CODE BEGIN DMA1_Stream4_IRQn 1 */
-
- /* USER CODE END DMA1_Stream4_IRQn 1 */
-}
-
/**
* @brief This function handles CAN1 TX interrupts.
*/
@@ -351,20 +335,6 @@ void TIM1_UP_TIM10_IRQHandler(void)
/* USER CODE END TIM1_UP_TIM10_IRQn 1 */
}
-/**
- * @brief This function handles SPI2 global interrupt.
- */
-void SPI2_IRQHandler(void)
-{
- /* USER CODE BEGIN SPI2_IRQn 0 */
-
- /* USER CODE END SPI2_IRQn 0 */
- HAL_SPI_IRQHandler(&hspi2);
- /* USER CODE BEGIN SPI2_IRQn 1 */
-
- /* USER CODE END SPI2_IRQn 1 */
-}
-
/**
* @brief This function handles TIM6 global interrupt, DAC1 and DAC2 underrun error interrupts.
*/
diff --git a/Src/tim.c b/Src/tim.c
index 2b4b397..e2fcaa9 100644
--- a/Src/tim.c
+++ b/Src/tim.c
@@ -24,66 +24,12 @@
/* USER CODE END 0 */
-TIM_HandleTypeDef htim4;
TIM_HandleTypeDef htim5;
TIM_HandleTypeDef htim6;
TIM_HandleTypeDef htim7;
TIM_HandleTypeDef htim10;
+TIM_HandleTypeDef htim12;
-/* TIM4 init function */
-void MX_TIM4_Init(void)
-{
-
- /* USER CODE BEGIN TIM4_Init 0 */
-
- /* USER CODE END TIM4_Init 0 */
-
- TIM_ClockConfigTypeDef sClockSourceConfig = {0};
- TIM_MasterConfigTypeDef sMasterConfig = {0};
- TIM_OC_InitTypeDef sConfigOC = {0};
-
- /* USER CODE BEGIN TIM4_Init 1 */
-
- /* USER CODE END TIM4_Init 1 */
- htim4.Instance = TIM4;
- htim4.Init.Prescaler = 0;
- htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
- htim4.Init.Period = 21000-1;
- htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
- htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
- if (HAL_TIM_Base_Init(&htim4) != HAL_OK)
- {
- Error_Handler();
- }
- sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
- if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK)
- {
- Error_Handler();
- }
- if (HAL_TIM_PWM_Init(&htim4) != HAL_OK)
- {
- Error_Handler();
- }
- sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
- sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
- if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK)
- {
- Error_Handler();
- }
- sConfigOC.OCMode = TIM_OCMODE_PWM1;
- sConfigOC.Pulse = 0;
- sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
- sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
- if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)
- {
- Error_Handler();
- }
- /* USER CODE BEGIN TIM4_Init 2 */
-
- /* USER CODE END TIM4_Init 2 */
- HAL_TIM_MspPostInit(&htim4);
-
-}
/* TIM5 init function */
void MX_TIM5_Init(void)
{
@@ -254,22 +200,58 @@ void MX_TIM10_Init(void)
HAL_TIM_MspPostInit(&htim10);
}
-
-void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
+/* TIM12 init function */
+void MX_TIM12_Init(void)
{
- if(tim_baseHandle->Instance==TIM4)
- {
- /* USER CODE BEGIN TIM4_MspInit 0 */
+ /* USER CODE BEGIN TIM12_Init 0 */
- /* USER CODE END TIM4_MspInit 0 */
- /* TIM4 clock enable */
- __HAL_RCC_TIM4_CLK_ENABLE();
- /* USER CODE BEGIN TIM4_MspInit 1 */
+ /* USER CODE END TIM12_Init 0 */
- /* USER CODE END TIM4_MspInit 1 */
+ TIM_ClockConfigTypeDef sClockSourceConfig = {0};
+ TIM_OC_InitTypeDef sConfigOC = {0};
+
+ /* USER CODE BEGIN TIM12_Init 1 */
+
+ /* USER CODE END TIM12_Init 1 */
+ htim12.Instance = TIM12;
+ htim12.Init.Prescaler = 335;
+ htim12.Init.CounterMode = TIM_COUNTERMODE_UP;
+ htim12.Init.Period = 999;
+ htim12.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
+ htim12.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
+ if (HAL_TIM_Base_Init(&htim12) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
+ if (HAL_TIM_ConfigClockSource(&htim12, &sClockSourceConfig) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ if (HAL_TIM_PWM_Init(&htim12) != HAL_OK)
+ {
+ Error_Handler();
}
- else if(tim_baseHandle->Instance==TIM5)
+ sConfigOC.OCMode = TIM_OCMODE_PWM1;
+ sConfigOC.Pulse = 0;
+ sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
+ sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
+ if (HAL_TIM_PWM_ConfigChannel(&htim12, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN TIM12_Init 2 */
+
+ /* USER CODE END TIM12_Init 2 */
+ HAL_TIM_MspPostInit(&htim12);
+
+}
+
+void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
+{
+
+ if(tim_baseHandle->Instance==TIM5)
{
/* USER CODE BEGIN TIM5_MspInit 0 */
@@ -325,37 +307,27 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
/* USER CODE END TIM10_MspInit 1 */
}
+ else if(tim_baseHandle->Instance==TIM12)
+ {
+ /* USER CODE BEGIN TIM12_MspInit 0 */
+
+ /* USER CODE END TIM12_MspInit 0 */
+ /* TIM12 clock enable */
+ __HAL_RCC_TIM12_CLK_ENABLE();
+ /* USER CODE BEGIN TIM12_MspInit 1 */
+
+ /* USER CODE END TIM12_MspInit 1 */
+ }
}
void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
- if(timHandle->Instance==TIM4)
- {
- /* USER CODE BEGIN TIM4_MspPostInit 0 */
-
- /* USER CODE END TIM4_MspPostInit 0 */
- __HAL_RCC_GPIOD_CLK_ENABLE();
- /**TIM4 GPIO Configuration
- PD14 ------> TIM4_CH3
- */
- GPIO_InitStruct.Pin = GPIO_PIN_14;
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
- GPIO_InitStruct.Alternate = GPIO_AF2_TIM4;
- HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
-
- /* USER CODE BEGIN TIM4_MspPostInit 1 */
-
- /* USER CODE END TIM4_MspPostInit 1 */
- }
- else if(timHandle->Instance==TIM5)
+ if(timHandle->Instance==TIM5)
{
/* USER CODE BEGIN TIM5_MspPostInit 0 */
/* USER CODE END TIM5_MspPostInit 0 */
-
__HAL_RCC_GPIOH_CLK_ENABLE();
/**TIM5 GPIO Configuration
PH12 ------> TIM5_CH3
@@ -394,24 +366,34 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle)
/* USER CODE END TIM10_MspPostInit 1 */
}
+ else if(timHandle->Instance==TIM12)
+ {
+ /* USER CODE BEGIN TIM12_MspPostInit 0 */
+
+ /* USER CODE END TIM12_MspPostInit 0 */
+
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+ /**TIM12 GPIO Configuration
+ PB15 ------> TIM12_CH2
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_15;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ GPIO_InitStruct.Alternate = GPIO_AF9_TIM12;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN TIM12_MspPostInit 1 */
+
+ /* USER CODE END TIM12_MspPostInit 1 */
+ }
}
void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle)
{
- if(tim_baseHandle->Instance==TIM4)
- {
- /* USER CODE BEGIN TIM4_MspDeInit 0 */
-
- /* USER CODE END TIM4_MspDeInit 0 */
- /* Peripheral clock disable */
- __HAL_RCC_TIM4_CLK_DISABLE();
- /* USER CODE BEGIN TIM4_MspDeInit 1 */
-
- /* USER CODE END TIM4_MspDeInit 1 */
- }
- else if(tim_baseHandle->Instance==TIM5)
+ if(tim_baseHandle->Instance==TIM5)
{
/* USER CODE BEGIN TIM5_MspDeInit 0 */
@@ -464,6 +446,17 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle)
/* USER CODE END TIM10_MspDeInit 1 */
}
+ else if(tim_baseHandle->Instance==TIM12)
+ {
+ /* USER CODE BEGIN TIM12_MspDeInit 0 */
+
+ /* USER CODE END TIM12_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_TIM12_CLK_DISABLE();
+ /* USER CODE BEGIN TIM12_MspDeInit 1 */
+
+ /* USER CODE END TIM12_MspDeInit 1 */
+ }
}
/* USER CODE BEGIN 1 */
diff --git a/userCode/devices/Inc/Buzzer.h b/userCode/devices/Inc/Buzzer.h
deleted file mode 100644
index 5026b3e..0000000
--- a/userCode/devices/Inc/Buzzer.h
+++ /dev/null
@@ -1,25 +0,0 @@
-//
-// Created by 25396 on 2023/3/14.
-//
-
-#ifndef RM_FRAME_C_BUZZER_H
-#define RM_FRAME_C_BUZZER_H
-#include "Device.h"
-
-#define BUZZER_CLOCK_FREQUENCY 84000000
-#define BUZZER_CLOCK htim4
-#define BUZZER_CLOCK_CHANNEL TIM_CHANNEL_3
-#define REFERENCE_MAX_VOL_CCR 5000
-
-typedef struct {
- uint8_t* f;
- uint8_t* t;
- uint16_t len;
- uint16_t t_each;
- uint16_t now_len;
-}music_t;
-
-void bsp_BuzzerOn(float freq);
-void bsp_BuzzerOff();
-
-#endif //RM_FRAME_C_BUZZER_H
diff --git a/userCode/devices/Src/Buzzer.cpp b/userCode/devices/Src/Buzzer.cpp
deleted file mode 100644
index 7711226..0000000
--- a/userCode/devices/Src/Buzzer.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-//
-// Created by 25396 on 2023/3/14.
-//
-
-#include "Buzzer.h"
-
-
-bool buzzerWorkingFlag = false;
-
-void bsp_BuzzerOn(float freq) {
- if (!buzzerWorkingFlag) {
- buzzerWorkingFlag = 1;
- HAL_TIM_Base_Start(&BUZZER_CLOCK);
- HAL_TIM_PWM_Start(&BUZZER_CLOCK, BUZZER_CLOCK_CHANNEL);
- __HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_3, freq);
- }
-}
-
-void bsp_BuzzerOff() {
- if (buzzerWorkingFlag) {
- buzzerWorkingFlag = 0;
- HAL_TIM_PWM_Stop(&BUZZER_CLOCK, BUZZER_CLOCK_CHANNEL);
- }
-}
\ No newline at end of file
diff --git a/userCode/devices/Src/Device.cpp b/userCode/devices/Src/Device.cpp
index 60e7361..c6b1a35 100644
--- a/userCode/devices/Src/Device.cpp
+++ b/userCode/devices/Src/Device.cpp
@@ -6,7 +6,6 @@
#include "Motor.h"
#include "IMU.h"
#include "ArmMotor.h"
-#include "Buzzer.h"
#include "LED.h"
#include "ControlTask.h"
#include "KF.h"
@@ -200,10 +199,10 @@ int main() {
MX_GPIO_Init();
MX_DMA_Init();
MX_TIM5_Init();
- MX_TIM4_Init();
MX_TIM6_Init();
MX_TIM7_Init();
MX_TIM10_Init();
+ MX_TIM12_Init();
MX_ADC1_Init();
MX_ADC3_Init();
MX_USART1_UART_Init();
@@ -213,7 +212,6 @@ int main() {
MX_CAN2_Init();
MX_I2C3_Init();
MX_SPI1_Init();
- MX_SPI2_Init();
// MX_IWDG_Init();//看门狗,若不使用遥控器需注释改行,否则程序不运行
MX_USB_DEVICE_Init();
/* USER CODE BEGIN 2 */
@@ -224,6 +222,7 @@ int main() {
HAL_TIM_PWM_Start(&htim5, TIM_CHANNEL_2);
HAL_TIM_PWM_Start(&htim5, TIM_CHANNEL_3);
+
//TODO adc校准?
RemoteControl::init();//遥控器通讯初始化,使用UART3串口
ManiControl::Init();//上位机通讯初始化,使用UART6串口
diff --git a/userCode/devices/Src/ManiControl.cpp b/userCode/devices/Src/ManiControl.cpp
index a3d1ada..c824ba6 100644
--- a/userCode/devices/Src/ManiControl.cpp
+++ b/userCode/devices/Src/ManiControl.cpp
@@ -126,14 +126,14 @@ void ManiControl::GetData(uint8_t bufIndex) {
}
case 0x04: {
TaskFlag = CLAW;
- mc_ctrl.ClawFlag = mani_rx_buff[bufIndex][5];
+ mc_ctrl.ClawFlag = mani_rx_buff[bufIndex][4];
ClawSet(mc_ctrl.ClawFlag);
break;
}
case 0x05: {
TaskFlag = TRAY;
- mc_ctrl.TrayFlag = mani_rx_buff[bufIndex][5];
+ mc_ctrl.TrayFlag = mani_rx_buff[bufIndex][4];
//AutoTraySet(mc_ctrl.TrayFlag);
break;
diff --git a/userCode/devices/Src/StepperMotor.cpp b/userCode/devices/Src/StepperMotor.cpp
index 1b1c690..d6c4003 100644
--- a/userCode/devices/Src/StepperMotor.cpp
+++ b/userCode/devices/Src/StepperMotor.cpp
@@ -12,17 +12,13 @@ StepperMotor::StepperMotor(MOTOR_INIT_t *_init) : Motor(_init, this) {
}
void StepperMotor::Handle() {
- static int step_count = 0;
if (stopFlag) {
- STEP = 0;
+ HAL_TIM_PWM_Stop(&htim12, TIM_CHANNEL_2);
}
- step_count++;
- if(step_count>1) {
- if (STEP > 0) {
- HAL_GPIO_TogglePin(STEP_GPIO_Port, STEP_Pin);
- STEP--;
- }
- step_count = 0;
+ if(STEP > 0){
+ STEP--;
+ } else{
+ HAL_TIM_PWM_Stop(&htim12, TIM_CHANNEL_2);
}
}
@@ -31,13 +27,15 @@ void StepperMotor::Grab(bool _posflag) {
stopFlag = false;
if(posflag && !_posflag){
DIR = 0;
- HAL_GPIO_WritePin(DIR_GPIO_Port, DIR_Pin, GPIO_PIN_RESET);
- STEP = 300;
+ HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14, GPIO_PIN_RESET);
+ STEP = 1000;
posflag = false;
} else if(!posflag && _posflag){
DIR = 1;
- HAL_GPIO_WritePin(DIR_GPIO_Port, DIR_Pin, GPIO_PIN_SET);
- STEP = 300;
+ HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14, GPIO_PIN_SET);
+ STEP = 1000;
posflag = true;
}
+ HAL_TIM_PWM_Start(&htim12, TIM_CHANNEL_2);
+ __HAL_TIM_SET_COMPARE(&htim12, TIM_CHANNEL_2, 499);
}
diff --git a/userCode/tasks/Inc/ArmTask.h b/userCode/tasks/Inc/ArmTask.h
index 3ca7e05..fbe85c4 100644
--- a/userCode/tasks/Inc/ArmTask.h
+++ b/userCode/tasks/Inc/ArmTask.h
@@ -10,7 +10,6 @@
#include "Motor.h"
#include "ArmMotor.h"
//#include "Servo.h"
-#include "Buzzer.h"
#include "StepperMotor.h"
#define l2 152.8f
From 0289dd724f1df665d1d46a21241934206f77c646 Mon Sep 17 00:00:00 2001
From: iDddddd <90831551+iDddddd@users.noreply.github.com>
Date: Fri, 6 Oct 2023 15:50:44 +0800
Subject: [PATCH 4/4] version3.5.20
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
新增机械臂重置命令;
增加机械臂解算错误保护
---
MDK-ARM/RM_Frame_C.uvoptx | 35 +---------------------------
MDK-ARM/RM_Frame_C.uvprojx | 9 +++++++
userCode/devices/Inc/ARMMotor.h | 4 ++--
userCode/devices/Inc/ManiControl.h | 7 ++++--
userCode/devices/Src/ARMMotor.cpp | 25 ++++++++++++++++++--
userCode/devices/Src/ManiControl.cpp | 6 +++++
userCode/tasks/Inc/ArmTask.h | 2 +-
userCode/tasks/Src/ArmTask.cpp | 14 +++++++++++
8 files changed, 61 insertions(+), 41 deletions(-)
diff --git a/MDK-ARM/RM_Frame_C.uvoptx b/MDK-ARM/RM_Frame_C.uvoptx
index 6aabf6b..f93de3a 100644
--- a/MDK-ARM/RM_Frame_C.uvoptx
+++ b/MDK-ARM/RM_Frame_C.uvoptx
@@ -158,40 +158,7 @@
-U00550061510000054E543652 -O10446 -SF10000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC800 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F407IGHx$CMSIS\Flash\STM32F4xx_1024.FLM) -WA0 -WE0 -WVCE4 -WS2710 -WM0 -WP2
-
-
- 0
- 0
- 87
- 1
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- startup_stm32f407xx.s
-
-
-
-
- 1
- 0
- 91
- 1
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- startup_stm32f407xx.s
-
-
-
-
+
0
diff --git a/MDK-ARM/RM_Frame_C.uvprojx b/MDK-ARM/RM_Frame_C.uvprojx
index f49023c..2aec365 100644
--- a/MDK-ARM/RM_Frame_C.uvprojx
+++ b/MDK-ARM/RM_Frame_C.uvprojx
@@ -878,4 +878,13 @@
+
+
+
+ RM_Frame_C
+ 1
+
+
+
+
diff --git a/userCode/devices/Inc/ARMMotor.h b/userCode/devices/Inc/ARMMotor.h
index 7643c2e..90cb585 100644
--- a/userCode/devices/Inc/ARMMotor.h
+++ b/userCode/devices/Inc/ARMMotor.h
@@ -25,7 +25,7 @@ class SteppingMotor_v4 : public Motor, public CAN {
~SteppingMotor_v4();
void Handle() override;
-
+ void Reset();
void SetTargetPosition(float pos);
@@ -54,6 +54,7 @@ class SteppingMotor_v5 : public Motor, public CAN {
void SetTargetPosition(float tarpos);
+ void Reset();
~SteppingMotor_v5();
private:
@@ -69,7 +70,6 @@ class SteppingMotor_v5 : public Motor, public CAN {
int32_t nowPos = 0;
void CANMessageGenerate() override;
-
};
#endif //RM_FRAME_C_ARMMOTOR_H
diff --git a/userCode/devices/Inc/ManiControl.h b/userCode/devices/Inc/ManiControl.h
index 8d74d7a..ce2a350 100644
--- a/userCode/devices/Inc/ManiControl.h
+++ b/userCode/devices/Inc/ManiControl.h
@@ -18,7 +18,8 @@ typedef enum {
CLAW,
TRAY,
MOVE_VEL,
- ARM_POS
+ ARM_POS,
+ ARM_RESET
}TASK_FLAG_t;
/*结构体定义--------------------------------------------------------------*/
@@ -48,6 +49,7 @@ typedef struct {
typedef struct {
ARM_col_t arm_col;
ARM_pos_t arm_pos;
+ uint8_t arm_reset;
ChassisDis_col_t chassisDis_col;
ChassisVel_col_t chassisVel_col;
uint8_t TrayFlag;
@@ -74,7 +76,8 @@ extern void AutoChassisStop();//Realized in ChassisTask
extern void ChassisDistanceSet(float x, float y, float o);//Realized in ChassisTask
extern void ChassisVelocitySet(float x_vel, float y_vel, float w_vel);//Realized in ChassisTask
extern void ArmJointSet(float Joint1Pos, float Joint2Pos, float Joint3Pos, float Joint4Pos, float Joint5Pos);
-extern void ArmPositionSet(float x, float y, float z);//Realized in ArmJointTask
+extern void ArmPositionSet(float x, float y, float z);//Realized in ArmTask
+void ArmReset();//Realized in ArmTask
//extern void AutoTraySet(uint8_t trayflag);//Realized in ArmJointTask
extern void ClawSet(uint8_t clawflag);//Realized in ArmJointTask
diff --git a/userCode/devices/Src/ARMMotor.cpp b/userCode/devices/Src/ARMMotor.cpp
index ce18e53..43b2d7f 100644
--- a/userCode/devices/Src/ARMMotor.cpp
+++ b/userCode/devices/Src/ARMMotor.cpp
@@ -38,7 +38,7 @@ void SteppingMotor_v4::CANMessageGenerate() {
}
void SteppingMotor_v4::Handle() {
- if(SendFlag) {
+ if (SendFlag) {
if (stopFlag) {
Pulse = 0;
} else {
@@ -71,6 +71,12 @@ void SteppingMotor_v4::SetTargetPosition(float pos) {
TarPos = pos;
}
+void SteppingMotor_v4::Reset() {
+ stopFlag = true;
+ TarPos = 0;
+ NowPos = 0;
+}
+
SteppingMotor_v4::~SteppingMotor_v4() = default;
@@ -84,7 +90,8 @@ SteppingMotor_v5::SteppingMotor_v5(COMMU_INIT_t *commuInit, MOTOR_INIT_t *motorI
SteppingMotor_v5::~SteppingMotor_v5() = default;
-void SteppingMotor_v5::CANMessageGenerate() {;
+void SteppingMotor_v5::CANMessageGenerate() {
+ ;
if ((canQueue.rear + 1) % MAX_MESSAGE_COUNT != canQueue.front) {
canQueue.Data[canQueue.rear].ID = can_ID;
@@ -151,4 +158,18 @@ void SteppingMotor_v5::SetTargetPosition(float tarpos) {
TarPos = tarpos;
}
+void SteppingMotor_v5::Reset() {
+ stopFlag = true;
+ TxMessageDLC = 0x03;
+ TxMessage[0] = 0x0A;
+ TxMessage[1] = 0x6D;
+ TxMessage[2] = 0x6B;
+ TxMessage[3] = 0x00;
+ TxMessage[4] = 0x00;
+ TxMessage[5] = 0x00;
+ TxMessage[6] = 0x00;
+ TxMessage[7] = 0x00;
+ CANMessageGenerate();
+}
+
diff --git a/userCode/devices/Src/ManiControl.cpp b/userCode/devices/Src/ManiControl.cpp
index c824ba6..8e03554 100644
--- a/userCode/devices/Src/ManiControl.cpp
+++ b/userCode/devices/Src/ManiControl.cpp
@@ -157,6 +157,12 @@ void ManiControl::GetData(uint8_t bufIndex) {
break;
}
+ case 0x09:{
+ TaskFlag = ARM_RESET;
+ mc_ctrl.arm_reset = mani_rx_buff[bufIndex][4];
+
+ ArmReset();
+ }
}
}
}
diff --git a/userCode/tasks/Inc/ArmTask.h b/userCode/tasks/Inc/ArmTask.h
index fbe85c4..0017162 100644
--- a/userCode/tasks/Inc/ArmTask.h
+++ b/userCode/tasks/Inc/ArmTask.h
@@ -14,7 +14,7 @@
#define l2 152.8f
#define l3 130.46f
-#define l4 133.36f
+#define l4 110.69
class ArmTask {
public:
diff --git a/userCode/tasks/Src/ArmTask.cpp b/userCode/tasks/Src/ArmTask.cpp
index 11d2fd6..33a33aa 100644
--- a/userCode/tasks/Src/ArmTask.cpp
+++ b/userCode/tasks/Src/ArmTask.cpp
@@ -128,6 +128,20 @@ void ArmTask::ArmCalc(float x,float y,float z){
Angle[1] = PI/2 - angle1 - angle4;
Angle[2] = PI/2 - angle2;
Angle[3] = PI/2 - angle3 - angle5;
+ for(float & i : Angle) {
+ if(i != i){//判断是否为nan
+ i = 0;
+ }
+ }
+}
+
+void ArmReset() {
+ Joint1Motor.Reset();
+ Joint2Motor.Reset();
+ Joint3Motor.Reset();
+ // Joint4Motor.Reset();
+ Joint5Motor.Reset();
+
}