From 26cccd60a03c547bfd3010c41d6929a24be6c132 Mon Sep 17 00:00:00 2001
From: "DESKTOP-KQHDCM4\\97555" <975559679@qq.com>
Date: Sun, 7 Jun 2026 12:31:21 +0800
Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E7=89=88=E8=B0=83=E8=AF=95=E5=AE=8C?=
=?UTF-8?q?=E6=88=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Project/MDK/HC32F460.uvoptx | 125 +--
Project/MDK/HC32F460.uvprojx | 18 +-
Project/source/Module/BeepAndLed/BeepAndLed.c | 177 +++++
Project/source/Module/BeepAndLed/BeepAndLed.h | 39 +
Project/source/User/Inc/bsp.h | 4 +-
Project/source/User/Inc/main.h | 56 +-
Project/source/User/Src/main.c | 730 ++++++------------
7 files changed, 504 insertions(+), 645 deletions(-)
create mode 100644 Project/source/Module/BeepAndLed/BeepAndLed.c
create mode 100644 Project/source/Module/BeepAndLed/BeepAndLed.h
diff --git a/Project/MDK/HC32F460.uvoptx b/Project/MDK/HC32F460.uvoptx
index 68f0518..9c3cfd4 100644
--- a/Project/MDK/HC32F460.uvoptx
+++ b/Project/MDK/HC32F460.uvoptx
@@ -103,7 +103,7 @@
1
0
0
- 12
+ 3
@@ -145,7 +145,7 @@
0
CMSIS_AGDI
- -X"Any" -UAny -O206 -S0 -C0 -P00000000 -N00("") -D00(00000000) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD1FFF8000 -FC1000 -FN2 -FF0HC32F460_512K.FLM -FS00 -FL080000 -FP0($$Device:HC32F460JETA$FlashARM\HC32F460_512K.FLM) -FF1HC32F460_otp.FLM -FS13000C00 -FL13FC -FP1($$Device:HC32F460JETA$FlashARM\HC32F460_otp.FLM)
+ -X"Any" -UAny -O206 -S0 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD1FFF8000 -FC1000 -FN2 -FF0HC32F460_512K.FLM -FS00 -FL080000 -FP0($$Device:HC32F460JETA$FlashARM\HC32F460_512K.FLM) -FF1HC32F460_otp.FLM -FS13000C00 -FL13FC -FP1($$Device:HC32F460JETA$FlashARM\HC32F460_otp.FLM)
0
@@ -153,40 +153,7 @@
UL2CM3(-S0 -C0 -P0 -FD1FFF8000 -FC1000 -FN2 -FF0HC32F460_512K -FS00 -FL080000 -FF1HC32F460_otp -FS13000C00 -FL13FC -FP0($$Device:HC32F460JETA$FlashARM\HC32F460_512K.FLM) -FP1($$Device:HC32F460JETA$FlashARM\HC32F460_otp.FLM))
-
-
- 0
- 0
- 1118
- 1
- 4658
- 0
- 0
- 0
- 0
- 0
- 1
- ..\source\User\Src\main.c
-
- \\BombSensor\../source/User/Src/main.c\1118
-
-
- 1
- 0
- 1156
- 1
- 5298
- 0
- 0
- 0
- 0
- 0
- 1
- ..\source\User\Src\main.c
-
- \\BombSensor\../source/User/Src/main.c\1156
-
-
+
0
@@ -251,97 +218,57 @@
12
1
- App.SlopeCollDelay1mSCnt,0x0A
+ App.EmergencyDelay1mSCnt,0x0A
13
1
- App.EmergencyDelay1mSCnt,0x0A
+ App.MotorPara.Current_height,0x0A
14
1
- App.MotorPara.LU_HeightStress,0x0A
+ App.RightUpCS1237_SlopeArray[0],0x0A
15
1
- App.MotorPara.LL_HeightStress,0x0A
+ App.RightLowCS1237_SlopeArray[0],0x0A
16
1
- App.MotorPara.RU_HeightStress,0x0A
+ Olu_diff1,0x0A
17
1
- App.MotorPara.RL_HeightStress,0x0A
+ Olu_diff2,0x0A
18
1
- App.TD1mSDelayCnt,0x0A
+ Olu_diff3,0x0A
19
1
- App.RxUart3Data.RxBuff,0x10
+ Oru_diff1,0x0A
20
1
- App.RxUart3Data.RxLen,0x0A
+ Oru_diff2,0x0A
21
1
- App.Status
+ Oru_diff3,0x0A
22
1
- App.MotorPara.CaliNum,0x0A
-
-
- 23
- 1
- App.CailUp1mSCnt,0x0A
-
-
- 24
- 1
- Oru_diff1,0x0A
-
-
- 25
- 1
- Orl_diff1,0x0A
-
-
- 26
- 1
- App.ADTrack.Stop_VPT,0x0A
-
-
- 27
- 1
- ru_ad[0],0x0A
-
-
- 28
- 1
- App.MotorPara.RestFlag,0x0A
-
-
- 29
- 1
- App.MotorPara.Current_height,0x0A
-
-
- 30
- 1
- App.HeightContRolCnt,0x0A
+ App.CentCollDelay1mSCnt,0x0A
@@ -1010,7 +937,7 @@
CS1237
- 1
+ 0
0
0
0
@@ -1065,7 +992,7 @@
- dc_motor
+ BeepAndLed
1
0
0
@@ -1077,6 +1004,26 @@
0
0
0
+ ..\source\Module\BeepAndLed\BeepAndLed.c
+ BeepAndLed.c
+ 0
+ 0
+
+
+
+
+ dc_motor
+ 1
+ 0
+ 0
+ 0
+
+ 6
+ 55
+ 1
+ 0
+ 0
+ 0
..\source\Module\dc_motor\dc_motor.c
dc_motor.c
0
diff --git a/Project/MDK/HC32F460.uvprojx b/Project/MDK/HC32F460.uvprojx
index 08478fa..ff63e43 100644
--- a/Project/MDK/HC32F460.uvprojx
+++ b/Project/MDK/HC32F460.uvprojx
@@ -10,14 +10,14 @@
Release
0x4
ARM-ADS
- 5060960::V5.06 update 7 (build 960)::ARMCC
- 5060960::V5.06 update 7 (build 960)::ARMCC
+ 5060960::V5.06 update 7 (build 960)::.\ARMCC
+ 5060960::V5.06 update 7 (build 960)::.\ARMCC
0
HC32F460JETA
HDSC
- HDSC.HC32F460.1.0.12
+ HDSC.HC32F460.1.0.11
https://raw.githubusercontent.com/hdscmcu/pack/master/
IRAM(0x1FFF8000,0x2F000) IRAM2(0x200F0000,0x1000) IROM(0x00000000,0x80000) IROM2(0x03000C00,0x003FC) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE
@@ -341,7 +341,7 @@
__DEBUG,HC32F460,USE_DEVICE_DRIVER_LIB,JEUA
- ..\..\mcu\common;..\source\Module\CS1237;..\source\Module\dc_motor;..\source\User\Src;..\source\User\Inc;..\..\driver\src;..\..\driver\inc
+ ..\..\mcu\common;..\source\Module\CS1237;..\source\Module\dc_motor;..\source\User\Src;..\source\User\Inc;..\..\driver\src;..\..\driver\inc;..\source\Module\BeepAndLed
@@ -667,6 +667,16 @@
+
+ BeepAndLed
+
+
+ BeepAndLed.c
+ 1
+ ..\source\Module\BeepAndLed\BeepAndLed.c
+
+
+
dc_motor
diff --git a/Project/source/Module/BeepAndLed/BeepAndLed.c b/Project/source/Module/BeepAndLed/BeepAndLed.c
new file mode 100644
index 0000000..089160e
--- /dev/null
+++ b/Project/source/Module/BeepAndLed/BeepAndLed.c
@@ -0,0 +1,177 @@
+#include "BeepAndLed.h"
+#include "beepAndLed.h"
+#include "main.h" // 包含BUZZER_ON/OFF, LED等宏定义
+
+// ========== 变量定义 ==========
+static BeeperCtrl_t g_beeper = {
+ .state = BEEPER_STATE_IDLE,
+ .is_active = 0,
+ .repeat = 0,
+ .repeat_done = 0,
+ .on_ms = 0,
+ .off_ms = 0
+};
+
+// 延时计数器(供滴答定时器使用)
+uint32_t BeepAndLedCollDelay1mSCnt = 0;
+
+// ========== 硬件控制函数(根据您的实际宏定义修改)==========
+static void Beeper_HW_On(void)
+{
+ BUZZER_ON(); // 请替换为您的实际宏
+ LED_GREEN_OFF(); // 请替换为您的实际宏
+ LED_RED_ON(); // 请替换为您的实际宏
+}
+
+static void Beeper_HW_Off(void)
+{
+ BUZZER_OFF(); // 请替换为您的实际宏
+ LED_GREEN_ON(); // 请替换为您的实际宏
+ LED_RED_OFF(); // 请替换为您的实际宏
+}
+
+// ========== 实现函数 ==========
+
+/**
+ * @brief 蜂鸣器初始化
+ */
+void Beeper_Init(void)
+{
+ Beeper_Stop();
+}
+
+/**
+ * @brief 开始鸣响(非阻塞)
+ * @param on_ms 鸣响时间(ms)
+ * @param off_ms 间隔时间(ms)
+ * @param repeat 重复次数(0表示无效)
+ *
+ * @example Beeper_Start(200, 100, 3); // 鸣200ms,停100ms,重复3次
+ */
+void Beeper_Start(uint16_t on_ms, uint16_t off_ms, uint8_t repeat)
+{
+ if (repeat == 0) return;
+
+ // 如果已经在鸣响,可以选择停止并重新开始
+ if (g_beeper.is_active) {
+ Beeper_Stop(); // 停止当前,重新开始新的
+ // return; // 或者选择忽略新请求
+ }
+
+ // 保存参数
+ g_beeper.on_ms = on_ms;
+ g_beeper.off_ms = off_ms;
+ g_beeper.repeat = repeat;
+ g_beeper.repeat_done = 0;
+ g_beeper.is_active = 1;
+
+ // 开启蜂鸣器
+ Beeper_HW_On();
+
+ // 设置延时计数器(开启状态延时)
+ BeepAndLedCollDelay1mSCnt = on_ms;
+ g_beeper.state = BEEPER_STATE_ON;
+}
+
+/**
+ * @brief 停止鸣响
+ */
+void Beeper_Stop(void)
+{
+ // 关闭硬件
+ Beeper_HW_Off();
+
+ // 重置状态机
+ g_beeper.state = BEEPER_STATE_IDLE;
+ g_beeper.is_active = 0;
+ g_beeper.repeat = 0;
+ g_beeper.repeat_done = 0;
+ BeepAndLedCollDelay1mSCnt = 0;
+}
+
+/**
+ * @brief 蜂鸣器状态机更新(放在main.c的while(1)中循环调用)
+ * @note 必须在滴答定时器更新BeepAndLedCollDelay1mSCnt后才能正确工作
+ */
+void BeeperLoopHandler(void)
+{
+ if (!g_beeper.is_active) {
+ return;
+ }
+
+ switch (g_beeper.state) {
+ case BEEPER_STATE_ON:
+ // 蜂鸣器开启状态,等待计数器归零
+ if (BeepAndLedCollDelay1mSCnt == 0) {
+ // 延时结束,关闭蜂鸣器
+ Beeper_HW_Off();
+
+ g_beeper.repeat_done++;
+
+ // 检查是否完成所有重复
+ if (g_beeper.repeat_done >= g_beeper.repeat) {
+ // 全部完成,结束
+ g_beeper.is_active = 0;
+ g_beeper.state = BEEPER_STATE_IDLE;
+ } else {
+ // 还有下次,进入等待状态
+ BeepAndLedCollDelay1mSCnt = g_beeper.off_ms;
+ g_beeper.state = BEEPER_STATE_OFF;
+ }
+ }
+ break;
+
+ case BEEPER_STATE_OFF:
+ // 蜂鸣器关闭等待状态(间隔时间)
+ if (BeepAndLedCollDelay1mSCnt == 0) {
+ // 间隔结束,开启下一次鸣响
+ Beeper_HW_On();
+
+ BeepAndLedCollDelay1mSCnt = g_beeper.on_ms;
+ g_beeper.state = BEEPER_STATE_ON;
+ }
+ break;
+
+ case BEEPER_STATE_WAIT:
+ case BEEPER_STATE_IDLE:
+ default:
+ break;
+ }
+}
+
+/**
+ * @brief 查询是否正在鸣响
+ * @return true:正在鸣响, false:空闲
+ */
+bool Beeper_IsPlaying(void)
+{
+ return g_beeper.is_active;
+}
+
+/**
+ * @brief 手动开启蜂鸣器(不计入状态机)
+ */
+void Beeper_On(void)
+{
+ Beeper_HW_On();
+}
+
+/**
+ * @brief 手动关闭蜂鸣器(不计入状态机)
+ */
+void Beeper_Off(void)
+{
+ Beeper_HW_Off();
+}
+
+/**
+ * @brief 清除延时计数器(由滴答定时器调用)
+ * @note 这个函数放在滴答定时器的1ms中断中调用
+ */
+void Beeper_ClearDelay(void)
+{
+ if (BeepAndLedCollDelay1mSCnt > 0) {
+ BeepAndLedCollDelay1mSCnt--;
+ }
+}
+
diff --git a/Project/source/Module/BeepAndLed/BeepAndLed.h b/Project/source/Module/BeepAndLed/BeepAndLed.h
new file mode 100644
index 0000000..bd8fded
--- /dev/null
+++ b/Project/source/Module/BeepAndLed/BeepAndLed.h
@@ -0,0 +1,39 @@
+#ifndef __BEEPANDLED_H
+#define __BEEPANDLED_H
+
+#include
+#include
+#include "bsp.h"
+
+// ========== 蜂鸣器状态机状态定义 ==========
+typedef enum {
+ BEEPER_STATE_IDLE = 0, // 空闲
+ BEEPER_STATE_ON, // 蜂鸣器开启延时中
+ BEEPER_STATE_OFF, // 蜂鸣器关闭延时中
+ BEEPER_STATE_WAIT // 等待下一次鸣响
+} BeeperState_t;
+
+// ========== 蜂鸣器控制结构体 ==========
+typedef struct {
+ BeeperState_t state; // 当前状态
+ uint16_t on_ms; // 鸣响时间(ms)
+ uint16_t off_ms; // 间隔时间(ms)
+ uint8_t repeat; // 重复次数
+ uint8_t repeat_done; // 已完成次数
+ uint8_t is_active; // 是否激活
+} BeeperCtrl_t;
+
+// ========== 外部可访问变量 ==========
+extern uint32_t BeepAndLedCollDelay1mSCnt; // 延时计数器(在beepAndLed.c中定义)
+
+// ========== API函数 ==========
+void Beeper_Init(void); // 初始化
+void Beeper_Start(uint16_t on_ms, uint16_t off_ms, uint8_t repeat); // 开始鸣响(非阻塞)
+void Beeper_Stop(void); // 停止鸣响
+void BeeperLoopHandler(void); // 状态机更新(放在while(1)中)
+bool Beeper_IsPlaying(void); // 查询是否正在鸣响
+void Beeper_On(void); // 手动开启蜂鸣器
+void Beeper_Off(void); // 手动关闭蜂鸣器
+void Beeper_ClearDelay(void); // 清除延时计数器(供滴答定时器使用)
+#endif /* _BEEP_AND_LED_H_ */
+
diff --git a/Project/source/User/Inc/bsp.h b/Project/source/User/Inc/bsp.h
index fd2ddde..270cfe8 100644
--- a/Project/source/User/Inc/bsp.h
+++ b/Project/source/User/Inc/bsp.h
@@ -221,12 +221,12 @@
//< LED
#define LED_GREEN_PORTx (PortA)
-#define LED_GREEN_PINx (Pin09)
+#define LED_GREEN_PINx (Pin08)
#define LED_GREEN_ON() PORT_SetBits(LED_GREEN_PORTx, LED_GREEN_PINx)//拉高
#define LED_GREEN_OFF() PORT_ResetBits(LED_GREEN_PORTx, LED_GREEN_PINx)//拉低
#define LED_RED_PORTx (PortA)
-#define LED_RED_PINx (Pin08)
+#define LED_RED_PINx (Pin09)
#define LED_RED_ON() PORT_SetBits(LED_RED_PORTx, LED_RED_PINx)//拉高
#define LED_RED_OFF() PORT_ResetBits(LED_RED_PORTx, LED_RED_PINx)//拉低
diff --git a/Project/source/User/Inc/main.h b/Project/source/User/Inc/main.h
index eefb3d5..e0cc140 100644
--- a/Project/source/User/Inc/main.h
+++ b/Project/source/User/Inc/main.h
@@ -3,34 +3,25 @@
#include
#include "bsp.h"
-
-#define USE_FILE_SYSTEM 1
-#define SDCARD_BLOCK_MAX (10000)
-
#define OSC_CNT 40
#define SLOPE_CNT 20
-#define SLOPE_VPT 1000
#define PRESS_VPT 3
#define FOLLOW_VPT 10
-#define SHIELD_VPT 5000
+#define SHIELD_VPT 8000
#define EME_STOP_VPT 4000
-#define CENTRE_VPT 2000
+#define CENTRE_VPT 8000
+#define CENTRE_SHIELD_VPT 2000
#define STOP_TIME_MS 500
+#define CENT_TIME_MS 200
#define RUN_TIME_MS 0
#define EME_START_MS 0
#define EME_STOP_MS 2000
-#define SLOPE_START_MS 3000
-#define TRAVEL_TIME_MS 30000
-
-#define PEAK 1200 //1200mm
-#define VALLEY 720 //720mm
-
-#define BDC_STOP() (SET_TWIN_BIT0(),SET_TWIN_BIT1())
-#define BDC_DOWN() (SET_TWIN_BIT0(),CLR_TWIN_BIT1())
-#define BDC_UP() (SET_TWIN_BIT1(),CLR_TWIN_BIT0())
+#define BDC_STOP() (SET_TWIN_BIT0(),SET_TWIN_BIT1())
+#define BDC_DOWN() (SET_TWIN_BIT0(),CLR_TWIN_BIT1())
+#define BDC_UP() (SET_TWIN_BIT1(),CLR_TWIN_BIT0())
//#define BDC_STOP() Motor_Control(MOTOR_CMD_STOP)
//#define BDC_UP() Motor_Control(MOTOR_CMD_FORWARD)
@@ -47,7 +38,6 @@ typedef enum {
/*设备阈值*/
typedef struct{
- int32_t Slope_VPT;
int32_t Stop_VPT;
int32_t LeftUpVPT;//左上设备阈值
@@ -66,16 +56,8 @@ typedef struct{
int32_t RightLow_Org_AdZero;//右下设备原始AD零点
}ADTrack_t;
typedef struct{//电机参数
- bool InitialFlag;//初始标志位
bool RestFlag;
- bool CaliFlag;
- bool LoopOne;//循环一次标志位
int16_t Current_height;//当前高度mm
- int16_t CaliNum;//标校数量
- int32_t LU_HeightStress[488];//左上传感器对应高度应力
- int32_t LL_HeightStress[488];//左下传感器对应高度应力
- int32_t RU_HeightStress[488];//右上传感器对应高度应力
- int32_t RL_HeightStress[488];//右上传感器对应高度应力
}MotorPara_t;
/*数据读取状态机*/
typedef enum {
@@ -97,22 +79,9 @@ typedef enum {
APP_STATUS_IDLE,
APP_STATUS_ON,
APP_STATUS_OFF,
- APP_STATUS_MOTOR_INIT,
- APP_STATUS_WAIT_MOTOR_INIT,
- APP_STATUS_WAIT_MOTOR_CALI_UP,
- APP_STATUS_WAIT_MOTOR_CALI_DOWN,
- APP_STATUS_WAIT_STEADY,
APP_STATUS_ZERO_MARKING,
- APP_STATUS_HEIGHT_CONTROL,
}AppStatus_m;
-typedef struct{
- __IO uint16_t rPayLen;
- __IO bool HeaderFrame;
- __IO uint16_t RxLen;
- uint8_t RxBuff[10];
-}Uart1Rx_t;
-
typedef struct{
__IO uint16_t rPayLen;
__IO bool HeaderFrame;
@@ -124,25 +93,20 @@ typedef struct {
AppStatus_m Status;//状态
ReadStatus_m RStatus;
AppPara_T Para;
- Uart1Rx_t RxUart1Data;
Uart3Rx_t RxUart3Data;
ADTrack_t ADTrack;
MotorPara_t MotorPara;
uint32_t TD1mSDelayCnt;
- uint32_t Read1mSDelayCnt;
- uint32_t Uart1Delay1mSCnt;
+ uint32_t Read1mSDelayCnt;
uint32_t Uart3RxTimeOut1mSCnt;
uint32_t StopCollDelay1mSCnt;
uint32_t RunCollDelay1mSCnt;
+ uint32_t CentCollDelay1mSCnt;
uint32_t EmergencyDelay1mSCnt;
- uint32_t SlopeCollDelay1mSCnt;
- uint32_t CailUp1mSCnt;
- uint32_t HeightContRolCnt;
uint8_t FeedDogDlyCnt;
bool CaliZeroFlag;//校零标志位
- bool SideFlag;//侧压标志位
bool UpFlag;//上升标志位
bool DownFlag;//下降标志位
bool StopFlag;//停止标志位
@@ -165,8 +129,6 @@ typedef struct {
int32_t LeftLowCS1237_SlopeArray[SLOPE_CNT];
int32_t RightUpCS1237_SlopeArray[SLOPE_CNT];
int32_t RightLowCS1237_SlopeArray[SLOPE_CNT];
-
- bool WaitFlag;
}AppDetect_t;
extern AppDetect_t App;
diff --git a/Project/source/User/Src/main.c b/Project/source/User/Src/main.c
index 1c354b4..e464351 100644
--- a/Project/source/User/Src/main.c
+++ b/Project/source/User/Src/main.c
@@ -10,6 +10,7 @@
#include "CS1237_LEFTLOW.h"
#include "CS1237_RIGHTUP.h"
#include "CS1237_RIGHTLOW.h"
+#include "BeepAndLed.h"
#define MAIN_DBG_LOG(...) DBG_LOG(__VA_ARGS__)
#define MAIN_DBG_ARRAY(ARRAY, SIZE) DBG_ARRAY(ARRAY,SIZE)
@@ -19,30 +20,6 @@
AppDetect_t App;
-/**
- * @brief 蜂鸣器阻塞式鸣响
- * @param on_ms : 每次鸣响持续时间,单位毫秒
- * @param off_ms : 两次鸣响之间的间隔时间,单位毫秒(若只鸣一声可设0)
- * @param repeat : 鸣响次数(1~255),0 则直接返回(不响)
- */
-static void Beeper_Play_Blocking(uint16_t on_ms, uint16_t off_ms, uint8_t repeat)
-{
- if (repeat == 0) return;
-
- for (uint8_t i = 0; i < repeat; i++) {
- BUZZER_ON();
- LED_GREEN_OFF();
- LED_RED_ON();
- delay_1ms(on_ms);
- BUZZER_OFF();
- LED_GREEN_ON();
- LED_RED_OFF();
- // 最后一次鸣完不需要再间隔,否则会多延时
- if (i < repeat - 1) {
- delay_1ms(off_ms);
- }
- }
-}
static void show(uint8_t ch,int32_t ad)
{
if(App.Para.Layout.DBGWaveOut == true)
@@ -60,105 +37,42 @@ static void show(uint8_t ch,int32_t ad)
}
void LEFTUP_CS1237AinADataProcessCallBack(int32_t AD)
{
-// if(abs(AD - App.LeftUpCS1237_TrendArray[0]) > 2000000)
-// {
-// AD = App.LeftUpCS1237_TrendArray[0];
-// }
- if(App.MotorPara.CaliFlag == true)
+ for(int i = OSC_CNT-1; i > 0; i--)
{
- AD = AD + App.MotorPara.LU_HeightStress[(App.MotorPara.Current_height)-720];
- for(int i = OSC_CNT-1; i > 0; i--)
- {
- App.LeftUpCS1237_TrendArray[i] = App.LeftUpCS1237_TrendArray[i - 1];
- }
- App.LeftUpCS1237_TrendArray[0] = AD;
- }
- else{
-// for(int i = OSC_CNT-1; i > 0; i--)
-// {
-// App.LeftUpCS1237_TrendArray[i] = App.LeftUpCS1237_TrendArray[i - 1];
-// }
- App.LeftUpCS1237_TrendArray[0] = AD;
+ App.LeftUpCS1237_TrendArray[i] = App.LeftUpCS1237_TrendArray[i - 1];
}
+ App.LeftUpCS1237_TrendArray[0] = AD;
show(1,AD);
App.LeftUpCS1237ReadEndFlag = true;
}
void LEFTLOW_CS1237AinADataProcessCallBack(int32_t AD)
{
-
-// if(abs(AD - App.LeftLowCS1237_TrendArray[0]) > 2000000)
-// {
-// AD = App.LeftLowCS1237_TrendArray[0];
-// }
- if(App.MotorPara.CaliFlag == true)
+ for(int i = OSC_CNT-1; i > 0; i--)
{
- AD = AD + App.MotorPara.LL_HeightStress[(App.MotorPara.Current_height)-720];
- for(int i = OSC_CNT-1; i > 0; i--)
- {
- App.LeftLowCS1237_TrendArray[i] = App.LeftLowCS1237_TrendArray[i - 1];
- }
- App.LeftLowCS1237_TrendArray[0] = AD;
- }
- else
- {
-// for(int i = OSC_CNT-1; i > 0; i--)
-// {
-// App.LeftLowCS1237_TrendArray[i] = App.LeftLowCS1237_TrendArray[i - 1];
-// }
- App.LeftLowCS1237_TrendArray[0] = AD;
+ App.LeftLowCS1237_TrendArray[i] = App.LeftLowCS1237_TrendArray[i - 1];
}
+ App.LeftLowCS1237_TrendArray[0] = AD;
show(2,AD);
App.LeftLowCS1237ReadEndFlag = true;
}
void RIGHTUP_CS1237AinADataProcessCallBack(int32_t AD)
{
-// if(abs(AD - App.RightUpCS1237_TrendArray[0]) > 2000000)
-// {
-// AD = App.RightUpCS1237_TrendArray[0];
-// }
- if(App.MotorPara.CaliFlag == true)
+
+ for(int i = OSC_CNT-1; i > 0; i--)
{
- AD = AD + App.MotorPara.RU_HeightStress[(App.MotorPara.Current_height)-720];
- for(int i = OSC_CNT-1; i > 0; i--)
- {
- App.RightUpCS1237_TrendArray[i] = App.RightUpCS1237_TrendArray[i - 1];
- }
- App.RightUpCS1237_TrendArray[0] = AD;
- }
- else
- {
-// for(int i = OSC_CNT-1; i > 0; i--)
-// {
-// App.RightUpCS1237_TrendArray[i] = App.RightUpCS1237_TrendArray[i - 1];
-// }
- App.RightUpCS1237_TrendArray[0] = AD;
+ App.RightUpCS1237_TrendArray[i] = App.RightUpCS1237_TrendArray[i - 1];
}
+ App.RightUpCS1237_TrendArray[0] = AD;
show(3,AD);
App.RightUpCS1237ReadEndFlag = true;
}
void RIGHTLOW_CS1237AinADataProcessCallBack(int32_t AD)
{
-// if(abs(AD - App.RightLowCS1237_TrendArray[0]) > 2000000)
-// {
-// AD = App.RightLowCS1237_TrendArray[0];
-// }
- if(App.MotorPara.CaliFlag == true)
+ for(int i = OSC_CNT-1; i > 0; i--)
{
- AD = AD + App.MotorPara.RL_HeightStress[(App.MotorPara.Current_height)-720];
- for(int i = OSC_CNT-1; i > 0; i--)
- {
- App.RightLowCS1237_TrendArray[i] = App.RightLowCS1237_TrendArray[i - 1];
- }
- App.RightLowCS1237_TrendArray[0] = AD;
- }
- else
- {
-// for(int i = OSC_CNT-1; i > 0; i--)
-// {
-// App.RightLowCS1237_TrendArray[i] = App.RightLowCS1237_TrendArray[i - 1];
-// }
- App.RightLowCS1237_TrendArray[0] = AD;
+ App.RightLowCS1237_TrendArray[i] = App.RightLowCS1237_TrendArray[i - 1];
}
+ App.RightLowCS1237_TrendArray[0] = AD;
show(4,AD);
App.RightLowCS1237ReadEndFlag = true;
}
@@ -166,7 +80,6 @@ void GradeControl(ControlLevel_m level)
{
switch(level){
case LEVEL_1:{
- App.ADTrack.Slope_VPT = SLOPE_VPT;
App.ADTrack.LeftUpVPT = 5000;
App.ADTrack.LeftLowVPT = 5000;
App.ADTrack.RightUpVPT = 5000;
@@ -179,7 +92,18 @@ void GradeControl(ControlLevel_m level)
break;}
case LEVEL_2:{
- App.ADTrack.Slope_VPT = SLOPE_VPT;
+ App.ADTrack.LeftUpVPT = 7000;
+ App.ADTrack.LeftLowVPT = 7000;
+ App.ADTrack.RightUpVPT = 7000;
+ App.ADTrack.RightLowVPT = 7000;
+ App.ADTrack.LeftUpShieldVPT = SHIELD_VPT;
+ App.ADTrack.LeftLowShieldVPT = SHIELD_VPT;
+ App.ADTrack.RightUpShieldVPT = SHIELD_VPT;
+ App.ADTrack.RightLowShieldVPT = SHIELD_VPT;
+ App.ADTrack.Stop_VPT = 5000;
+ break;}
+
+ case LEVEL_3:{
App.ADTrack.LeftUpVPT = 10000;
App.ADTrack.LeftLowVPT = 10000;
App.ADTrack.RightUpVPT = 10000;
@@ -188,11 +112,22 @@ void GradeControl(ControlLevel_m level)
App.ADTrack.LeftLowShieldVPT = SHIELD_VPT;
App.ADTrack.RightUpShieldVPT = SHIELD_VPT;
App.ADTrack.RightLowShieldVPT = SHIELD_VPT;
- App.ADTrack.Stop_VPT = 8000;
+ App.ADTrack.Stop_VPT = 6000;
break;}
- case LEVEL_3:{
- App.ADTrack.Slope_VPT = SLOPE_VPT;
+ case LEVEL_4:{
+ App.ADTrack.LeftUpVPT = 15000;
+ App.ADTrack.LeftLowVPT = 15000;
+ App.ADTrack.RightUpVPT = 15000;
+ App.ADTrack.RightLowVPT = 15000;
+ App.ADTrack.LeftUpShieldVPT = SHIELD_VPT;
+ App.ADTrack.LeftLowShieldVPT = SHIELD_VPT;
+ App.ADTrack.RightUpShieldVPT = SHIELD_VPT;
+ App.ADTrack.RightLowShieldVPT = SHIELD_VPT;
+ App.ADTrack.Stop_VPT = 10000;
+ break;}
+
+ case LEVEL_5:{
App.ADTrack.LeftUpVPT = 20000;
App.ADTrack.LeftLowVPT = 20000;
App.ADTrack.RightUpVPT = 20000;
@@ -201,33 +136,7 @@ void GradeControl(ControlLevel_m level)
App.ADTrack.LeftLowShieldVPT = SHIELD_VPT;
App.ADTrack.RightUpShieldVPT = SHIELD_VPT;
App.ADTrack.RightLowShieldVPT = SHIELD_VPT;
- App.ADTrack.Stop_VPT = 14000;
- break;}
-
- case LEVEL_4:{
- App.ADTrack.Slope_VPT = SLOPE_VPT;
- App.ADTrack.LeftUpVPT = 25000;
- App.ADTrack.LeftLowVPT = 25000;
- App.ADTrack.RightUpVPT = 25000;
- App.ADTrack.RightLowVPT = 25000;
- App.ADTrack.LeftUpShieldVPT = SHIELD_VPT;
- App.ADTrack.LeftLowShieldVPT = SHIELD_VPT;
- App.ADTrack.RightUpShieldVPT = SHIELD_VPT;
- App.ADTrack.RightLowShieldVPT = SHIELD_VPT;
- App.ADTrack.Stop_VPT = 19000;
- break;}
-
- case LEVEL_5:{
- App.ADTrack.Slope_VPT = SLOPE_VPT;
- App.ADTrack.LeftUpVPT = 30000;
- App.ADTrack.LeftLowVPT = 30000;
- App.ADTrack.RightUpVPT = 30000;
- App.ADTrack.RightLowVPT = 30000;
- App.ADTrack.LeftUpShieldVPT = SHIELD_VPT;
- App.ADTrack.LeftLowShieldVPT = SHIELD_VPT;
- App.ADTrack.RightUpShieldVPT = SHIELD_VPT;
- App.ADTrack.RightLowShieldVPT = SHIELD_VPT;
- App.ADTrack.Stop_VPT = 25000;
+ App.ADTrack.Stop_VPT = 15000;
break;}
}
}
@@ -288,7 +197,6 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
// show(3, ru_slope);
// show(4, rl_slope);
-
for(int i = SLOPE_CNT-1; i > 0; i--)
{
App.LeftUpCS1237_SlopeArray[i] = App.LeftUpCS1237_SlopeArray[i - 1];
@@ -312,30 +220,31 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
int32_t RightDiffSum = abs(ru_diff[0]) + abs(ru_diff[1]) + abs(ru_diff[2]) + abs(rl_diff[0]) + abs(rl_diff[1]) + abs(rl_diff[2]);
int32_t LeftDiff = abs(Oll_diff1) + abs(Olu_diff1) + abs(Oll_diff2) + abs(Olu_diff2) + abs(Oll_diff3) + abs(Olu_diff3);
int32_t RightDiff = abs(Orl_diff1) + abs(Oru_diff1) + abs(Orl_diff2) + abs(Oru_diff2) + abs(Orl_diff3) + abs(Oru_diff3);
- int32_t LuSideDiff = lu_ad[0] - lu_ad[5];
- int32_t LlSideDiff = ll_ad[0] - ll_ad[5];
- int32_t RuSideDiff = ru_ad[0] - ru_ad[5];
- int32_t RlSideDiff = rl_ad[0] - rl_ad[5];
if(App.EmeFlag == true)
{
if(App.DownFlag == true && App.EmergencyDelay1mSCnt > 0)
{
BDC_UP();
+ LED_RED_ON();
+ LED_GREEN_OFF();
}
else if(App.UpFlag == true && App.EmergencyDelay1mSCnt > 0)
{
BDC_DOWN();
+ LED_RED_ON();
+ LED_GREEN_OFF();
}
else if(App.EmergencyDelay1mSCnt <= 0)
{
BDC_STOP();
+ LED_RED_OFF();
+ LED_GREEN_ON();
App.StopFlag = true;
App.DownFlag = false;
App.UpFlag = false;
App.EmeFlag = false;
App.StopCollDelay1mSCnt = STOP_TIME_MS;
- App.SlopeCollDelay1mSCnt = SLOPE_START_MS;
}
}
else if(App.StopFlag == true && App.StopCollDelay1mSCnt <= 0)
@@ -369,17 +278,29 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
&& (rl_ad[2] < App.ADTrack.RightLow_Org_AdZero-CENTRE_VPT)))
{
App.CentreRunFalg = true;
+ App.CentCollDelay1mSCnt = CENT_TIME_MS;
if(LeftDiff > RightDiff)
{
App.LeftRunFalg = true;
- if((Olu_diff1+Oru_diff1) < -(App.ADTrack.Stop_VPT)
- && ((Olu_diff2+Oru_diff2) < -(App.ADTrack.Stop_VPT))
- && ((Olu_diff3+Oru_diff3) < -(App.ADTrack.Stop_VPT))
+ if(((Olu_diff1+Oru_diff1) > (App.ADTrack.Stop_VPT))
+ && ((Olu_diff2+Oru_diff2) > (App.ADTrack.Stop_VPT))
+ && ((Olu_diff3+Oru_diff3) > (App.ADTrack.Stop_VPT))
+ && ((Oll_diff1+Orl_diff1) < -(App.ADTrack.Stop_VPT))
+ && ((Oll_diff2+Orl_diff2) < -(App.ADTrack.Stop_VPT))
+ && ((Oll_diff3+Orl_diff3) < -(App.ADTrack.Stop_VPT))
)
{
- if(App.MotorPara.Current_height < 1200)
+ if((abs(Olu_diff1) < (abs(Oll_diff1) + CENTRE_SHIELD_VPT))
+ && (abs(Oru_diff1) < (abs(Orl_diff1) + CENTRE_SHIELD_VPT))
+ && (abs(Olu_diff2) < (abs(Oll_diff2) + CENTRE_SHIELD_VPT))
+ && (abs(Oru_diff2) < (abs(Orl_diff2) + CENTRE_SHIELD_VPT))
+ && (abs(Olu_diff3) < (abs(Oll_diff3) + CENTRE_SHIELD_VPT))
+ && (abs(Oru_diff3) < (abs(Orl_diff3) + CENTRE_SHIELD_VPT))
+ )//判断是否不是正面压
{
BDC_UP();
+ LED_RED_ON();
+ LED_GREEN_OFF();
App.CaliZeroFlag = false;
App.UpFlag = true;
App.StopFlag = false;
@@ -388,14 +309,25 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
App.RunCollDelay1mSCnt = RUN_TIME_MS;
}
}
- if((Olu_diff1+Oru_diff1) > (App.ADTrack.Stop_VPT)
- && (Olu_diff2+Oru_diff2) > (App.ADTrack.Stop_VPT)
- && (Olu_diff3+Oru_diff3) > (App.ADTrack.Stop_VPT)
+ else if(((Olu_diff1+Oru_diff1) < -(App.ADTrack.Stop_VPT))
+ && ((Olu_diff2+Oru_diff2) < -(App.ADTrack.Stop_VPT))
+ && ((Olu_diff3+Oru_diff3) < -(App.ADTrack.Stop_VPT))
+ && ((Oll_diff1+Orl_diff1) > (App.ADTrack.Stop_VPT))
+ && ((Oll_diff2+Orl_diff2) > (App.ADTrack.Stop_VPT))
+ && ((Oll_diff3+Orl_diff3) > (App.ADTrack.Stop_VPT))
)
{
- if(App.MotorPara.Current_height > 730)
+ if((abs(Olu_diff1) > (abs(Oll_diff1) - CENTRE_SHIELD_VPT))
+ && (abs(Oru_diff1) > (abs(Orl_diff1) - CENTRE_SHIELD_VPT))
+ && (abs(Olu_diff2) > (abs(Oll_diff2) - CENTRE_SHIELD_VPT))
+ && (abs(Oru_diff2) > (abs(Orl_diff2) - CENTRE_SHIELD_VPT))
+ && (abs(Olu_diff3) > (abs(Oll_diff3) - CENTRE_SHIELD_VPT))
+ && (abs(Oru_diff3) > (abs(Orl_diff3) - CENTRE_SHIELD_VPT))
+ )//判断是否不是正面压
{
BDC_DOWN();
+ LED_RED_ON();
+ LED_GREEN_OFF();
App.CaliZeroFlag = false;
App.UpFlag = false;
App.StopFlag = false;
@@ -408,30 +340,52 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
else if(RightDiff > LeftDiff)
{
App.RightRunFalg = true;
- if((Olu_diff1+Oru_diff1) < -(App.ADTrack.Stop_VPT)
- && (Olu_diff2+Oru_diff2) < -(App.ADTrack.Stop_VPT)
- && (Olu_diff3+Oru_diff3) < -(App.ADTrack.Stop_VPT)
+ if(((Olu_diff1+Oru_diff1) > (App.ADTrack.Stop_VPT))
+ && ((Olu_diff2+Oru_diff2) > (App.ADTrack.Stop_VPT))
+ && ((Olu_diff3+Oru_diff3) > (App.ADTrack.Stop_VPT))
+ && ((Oll_diff1+Orl_diff1) < -(App.ADTrack.Stop_VPT))
+ && ((Oll_diff2+Orl_diff2) < -(App.ADTrack.Stop_VPT))
+ && ((Oll_diff3+Orl_diff3) < -(App.ADTrack.Stop_VPT))
)
{
- if(App.MotorPara.Current_height < 1200)
+ if((abs(Olu_diff1) < (abs(Oll_diff1) + CENTRE_SHIELD_VPT))
+ && (abs(Oru_diff1) < (abs(Orl_diff1) + CENTRE_SHIELD_VPT))
+ && (abs(Olu_diff2) < (abs(Oll_diff2) + CENTRE_SHIELD_VPT))
+ && (abs(Oru_diff2) < (abs(Orl_diff2) + CENTRE_SHIELD_VPT))
+ && (abs(Olu_diff3) < (abs(Oll_diff3) + CENTRE_SHIELD_VPT))
+ && (abs(Oru_diff3) < (abs(Orl_diff3) + CENTRE_SHIELD_VPT))
+ )//判断是否不是正面压
{
- BDC_UP();
- App.CaliZeroFlag = false;
- App.UpFlag = true;
- App.StopFlag = false;
- App.DownFlag = false;
- App.EmeFlag = false;
- App.RunCollDelay1mSCnt = RUN_TIME_MS;
+ BDC_UP();
+ LED_RED_ON();
+ LED_GREEN_OFF();
+ App.CaliZeroFlag = false;
+ App.UpFlag = true;
+ App.StopFlag = false;
+ App.DownFlag = false;
+ App.EmeFlag = false;
+ App.RunCollDelay1mSCnt = RUN_TIME_MS;
}
}
- if((Olu_diff1+Oru_diff1) > (App.ADTrack.Stop_VPT)
- && (Olu_diff2+Oru_diff2) > (App.ADTrack.Stop_VPT)
- && (Olu_diff3+Oru_diff3) > (App.ADTrack.Stop_VPT)
+ else if(((Olu_diff1+Oru_diff1) < -(App.ADTrack.Stop_VPT))
+ && ((Olu_diff2+Oru_diff2) < -(App.ADTrack.Stop_VPT))
+ && ((Olu_diff3+Oru_diff3) < -(App.ADTrack.Stop_VPT))
+ && ((Oll_diff1+Orl_diff1) > (App.ADTrack.Stop_VPT))
+ && ((Oll_diff2+Orl_diff2) > (App.ADTrack.Stop_VPT))
+ && ((Oll_diff3+Orl_diff3) > (App.ADTrack.Stop_VPT))
)
{
- if(App.MotorPara.Current_height > 730)
+ if((abs(Olu_diff1) > (abs(Oll_diff1) - CENTRE_SHIELD_VPT))
+ && (abs(Oru_diff1) > (abs(Orl_diff1) - CENTRE_SHIELD_VPT))
+ && (abs(Olu_diff2) > (abs(Oll_diff2) - CENTRE_SHIELD_VPT))
+ && (abs(Oru_diff2) > (abs(Orl_diff2) - CENTRE_SHIELD_VPT))
+ && (abs(Olu_diff3) > (abs(Oll_diff3) - CENTRE_SHIELD_VPT))
+ && (abs(Oru_diff3) > (abs(Orl_diff3) - CENTRE_SHIELD_VPT))
+ )//判断是否不是正面压
{
BDC_DOWN();
+ LED_RED_ON();
+ LED_GREEN_OFF();
App.CaliZeroFlag = false;
App.UpFlag = false;
App.StopFlag = false;
@@ -442,7 +396,7 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
}
}
}
- else if((LeftSlopeSum > RightSlopeSum && LeftDiffSum > RightDiffSum))//判断左边操作
+ else if(LeftSlopeSum > RightSlopeSum && LeftDiffSum > RightDiffSum && App.CentCollDelay1mSCnt <= 0)//判断左边操作
{
App.LeftRunFalg = true;
if((Olu_diff1 >= (App.ADTrack.LeftUpVPT*5/6)) //通过差值判断上下拉方向
@@ -459,37 +413,20 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
&& (App.LeftLowCS1237_SlopeArray[1] >= PRESS_VPT)
&& (App.LeftLowCS1237_SlopeArray[2] >= PRESS_VPT))
{
- if(App.CaliZeroFlag == true)//判断是否校零
+ if((abs(Oll_diff1) > abs(Orl_diff1) + App.ADTrack.LeftLowShieldVPT)//判断是否不是侧面推拉
+ && (abs(Olu_diff1) > abs(Orl_diff1) + App.ADTrack.LeftUpShieldVPT)
+ && (abs(Oll_diff1) > abs(Oru_diff1) + App.ADTrack.LeftLowShieldVPT)
+ && (abs(Olu_diff1) > abs(Oru_diff1) + App.ADTrack.LeftUpShieldVPT))
{
- if((abs(Oll_diff1) > abs(Orl_diff1) + App.ADTrack.LeftLowShieldVPT)//判断是否不是侧面推拉
- && (abs(Olu_diff1) > abs(Orl_diff1) + App.ADTrack.LeftUpShieldVPT)
- && (abs(Oll_diff1) > abs(Oru_diff1) + App.ADTrack.LeftLowShieldVPT)
- && (abs(Olu_diff1) > abs(Oru_diff1) + App.ADTrack.LeftUpShieldVPT))
- {
- if(App.MotorPara.Current_height > 730)
- {
- BDC_DOWN();
- App.CaliZeroFlag = false;
- App.UpFlag = false;
- App.DownFlag = true;
- App.StopFlag = false;
- App.EmeFlag = false;
- App.RunCollDelay1mSCnt = RUN_TIME_MS;
- }
- }
- }
- else
- {
- if(App.MotorPara.Current_height > 730)
- {
- BDC_DOWN();
- App.CaliZeroFlag = false;
- App.UpFlag = false;
- App.DownFlag = true;
- App.StopFlag = false;
- App.EmeFlag = false;
- App.RunCollDelay1mSCnt = RUN_TIME_MS;
- }
+ BDC_UP();
+ LED_RED_ON();
+ LED_GREEN_OFF();
+ App.CaliZeroFlag = false;
+ App.UpFlag = true;
+ App.DownFlag = false;
+ App.StopFlag = false;
+ App.EmeFlag = false;
+ App.RunCollDelay1mSCnt = RUN_TIME_MS;
}
}
}
@@ -508,42 +445,25 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
&& (App.LeftLowCS1237_SlopeArray[1] <= -PRESS_VPT)
&& (App.LeftLowCS1237_SlopeArray[2] <= -PRESS_VPT))
{
-// if(App.CaliZeroFlag == true)//判断是否校零
+ if((abs(Oll_diff1) > abs(Orl_diff1) + App.ADTrack.LeftLowShieldVPT)//判断是否不是侧面推拉
+ && (abs(Olu_diff1) > abs(Orl_diff1) + App.ADTrack.LeftUpShieldVPT)
+ && (abs(Oll_diff1) > abs(Oru_diff1) + App.ADTrack.LeftLowShieldVPT)
+ && (abs(Olu_diff1) > abs(Oru_diff1) + App.ADTrack.LeftUpShieldVPT))
{
- if((abs(Oll_diff1) > abs(Orl_diff1) + App.ADTrack.LeftLowShieldVPT)//判断是否不是侧面推拉
- && (abs(Olu_diff1) > abs(Orl_diff1) + App.ADTrack.LeftUpShieldVPT)
- && (abs(Oll_diff1) > abs(Oru_diff1) + App.ADTrack.LeftLowShieldVPT)
- && (abs(Olu_diff1) > abs(Oru_diff1) + App.ADTrack.LeftUpShieldVPT))
- {
- if(App.MotorPara.Current_height < 1200)
- {
- BDC_UP();
- App.CaliZeroFlag = false;
- App.UpFlag = true;
- App.DownFlag = false;
- App.StopFlag = false;
- App.EmeFlag = false;
- App.RunCollDelay1mSCnt = RUN_TIME_MS;
- }
- }
+ BDC_DOWN();
+ LED_RED_ON();
+ LED_GREEN_OFF();
+ App.CaliZeroFlag = false;
+ App.UpFlag = false;
+ App.DownFlag = true;
+ App.StopFlag = false;
+ App.EmeFlag = false;
+ App.RunCollDelay1mSCnt = RUN_TIME_MS;
}
-// else
-// {
-// if(App.MotorPara.Current_height < 1190)
-// {
-// BDC_UP();
-// App.CaliZeroFlag = false;
-// App.UpFlag = true;
-// App.DownFlag = false;
-// App.StopFlag = false;
-// App.EmeFlag = false;
-// App.RunCollDelay1mSCnt = RUN_TIME_MS;
-// }
-// }
}
}
}
- else if(LeftSlopeSum < RightSlopeSum && LeftDiffSum < RightDiffSum)//判断右边操作
+ else if(LeftSlopeSum < RightSlopeSum && LeftDiffSum < RightDiffSum && App.CentCollDelay1mSCnt <= 0)//判断右边操作
{
App.RightRunFalg = true;
if((Oru_diff1 >= (App.ADTrack.RightUpVPT*5/6)) //通过差值判断上下拉方向
@@ -560,38 +480,21 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
&& (App.RightLowCS1237_SlopeArray[1] >= PRESS_VPT)
&& (App.RightLowCS1237_SlopeArray[2] >= PRESS_VPT))
{
-// if(App.CaliZeroFlag == true)//判断是否校零
+ if((abs(Orl_diff1) > abs(Oll_diff1) + App.ADTrack.RightLowShieldVPT)//判断是否不是侧面推拉
+ && (abs(Oru_diff1) > abs(Oll_diff1) + App.ADTrack.RightUpShieldVPT)
+ && (abs(Orl_diff1) > abs(Olu_diff1) + App.ADTrack.RightLowShieldVPT)
+ && (abs(Oru_diff1) > abs(Olu_diff1) + App.ADTrack.RightUpShieldVPT))
{
- if((abs(Orl_diff1) > abs(Oll_diff1) + App.ADTrack.RightLowShieldVPT)//判断是否不是侧面推拉
- && (abs(Oru_diff1) > abs(Oll_diff1) + App.ADTrack.RightUpShieldVPT)
- && (abs(Orl_diff1) > abs(Olu_diff1) + App.ADTrack.RightLowShieldVPT)
- && (abs(Oru_diff1) > abs(Olu_diff1) + App.ADTrack.RightUpShieldVPT))
- {
- if(App.MotorPara.Current_height > 730)
- {
- BDC_DOWN();
- App.CaliZeroFlag = false;
- App.DownFlag = true;
- App.StopFlag = false;
- App.UpFlag = false;
- App.EmeFlag = false;
- App.RunCollDelay1mSCnt = RUN_TIME_MS;
- }
- }
+ BDC_UP();
+ LED_RED_ON();
+ LED_GREEN_OFF();
+ App.CaliZeroFlag = false;
+ App.UpFlag = true;
+ App.StopFlag = false;
+ App.DownFlag = false;
+ App.EmeFlag = false;
+ App.RunCollDelay1mSCnt = RUN_TIME_MS;
}
-// else
-// {
-// if(App.MotorPara.Current_height > 730)
-// {
-// BDC_DOWN();
-// App.CaliZeroFlag = false;
-// App.DownFlag = true;
-// App.StopFlag = false;
-// App.UpFlag = false;
-// App.EmeFlag = false;
-// App.RunCollDelay1mSCnt = RUN_TIME_MS;
-// }
-// }
}
}
else if((Oru_diff1 <= -(App.ADTrack.RightUpVPT*5/6)) //通过差值判断上下拉方向
@@ -608,43 +511,26 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
&& (App.RightLowCS1237_SlopeArray[1] <= -PRESS_VPT)
&& (App.RightLowCS1237_SlopeArray[2] <= -PRESS_VPT))
{
-// if(App.CaliZeroFlag == true)//判断是否校零
+ if((abs(Orl_diff1) > abs(Oll_diff1) + App.ADTrack.RightLowShieldVPT)//判断是否不是侧面推拉
+ && (abs(Oru_diff1) > abs(Oll_diff1) + App.ADTrack.RightUpShieldVPT)
+ && (abs(Orl_diff1) > abs(Olu_diff1) + App.ADTrack.RightLowShieldVPT)
+ && (abs(Oru_diff1) > abs(Olu_diff1) + App.ADTrack.RightUpShieldVPT))
{
- if((abs(Oru_diff1) > abs(Olu_diff1) + App.ADTrack.RightUpShieldVPT)//判断是否不是侧面推拉
- && (abs(Oru_diff1) > abs(Oll_diff1) + App.ADTrack.RightUpShieldVPT)
- && (abs(Orl_diff1) > abs(Olu_diff1) + App.ADTrack.RightLowShieldVPT)
- && (abs(Oru_diff1) > abs(Olu_diff1) + App.ADTrack.RightUpShieldVPT))
- {
- if(App.MotorPara.Current_height < 1200)
- {
- BDC_UP();
- App.CaliZeroFlag = false;
- App.UpFlag = true;
- App.StopFlag = false;
- App.DownFlag = false;
- App.EmeFlag = false;
- App.RunCollDelay1mSCnt = RUN_TIME_MS;
- }
- }
+ BDC_DOWN();
+ LED_RED_ON();
+ LED_GREEN_OFF();
+ App.CaliZeroFlag = false;
+ App.DownFlag = true;
+ App.StopFlag = false;
+ App.UpFlag = false;
+ App.EmeFlag = false;
+ App.RunCollDelay1mSCnt = RUN_TIME_MS;
}
-// else
-// {
-// if(App.MotorPara.Current_height < 1190)
-// {
-// BDC_UP();
-// App.CaliZeroFlag = false;
-// App.UpFlag = true;
-// App.StopFlag = false;
-// App.DownFlag = false;
-// App.EmeFlag = false;
-// App.RunCollDelay1mSCnt = RUN_TIME_MS;
-// }
-// }
}
}
}
}
- else if(App.DownFlag == true && App.RunCollDelay1mSCnt <= 0)
+ else if(App.UpFlag == true && App.RunCollDelay1mSCnt <= 0)
{
if(App.LeftRunFalg == true)
{
@@ -661,19 +547,22 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
&& (Oll_diff5 > -App.ADTrack.Stop_VPT)
&& (Olu_diff6 < App.ADTrack.Stop_VPT)
&& (Oll_diff6 > -App.ADTrack.Stop_VPT))
- || ((App.CentreRunFalg == true)
- && ((Olu_diff1 + Oru_diff1) < (App.ADTrack.Stop_VPT*2/3))
+ || (((Olu_diff1 + Oru_diff1) < (App.ADTrack.Stop_VPT*2/3))
&& ((Olu_diff2 + Oru_diff2) < (App.ADTrack.Stop_VPT*2/3))
- && ((Olu_diff3 + Oru_diff3) < (App.ADTrack.Stop_VPT*2/3)))
+ && ((Olu_diff3 + Oru_diff3) < (App.ADTrack.Stop_VPT*2/3))
+ && ((Oll_diff1 + Orl_diff1) > -(App.ADTrack.Stop_VPT*2/3))
+ && ((Oll_diff2 + Orl_diff2) > -(App.ADTrack.Stop_VPT*2/3))
+ && ((Oll_diff3 + Orl_diff3) > -(App.ADTrack.Stop_VPT*2/3)))
)
{
BDC_STOP();
+ LED_RED_OFF();
+ LED_GREEN_ON();
App.StopFlag = true;
App.DownFlag = false;
App.UpFlag = false;
App.EmeFlag = false;
App.StopCollDelay1mSCnt = STOP_TIME_MS;
- App.SlopeCollDelay1mSCnt = SLOPE_START_MS;
App.EmergencyDelay1mSCnt = EME_START_MS;
}
// else if((abs(Oll_diff1) + EME_STOP_VPT) < abs(Orl_diff1)
@@ -704,19 +593,22 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
&& (Orl_diff5 > -App.ADTrack.Stop_VPT)
&& (Oru_diff6 < App.ADTrack.Stop_VPT)
&& (Orl_diff6 > -App.ADTrack.Stop_VPT))
- || ((App.CentreRunFalg == true)
- && ((Olu_diff1 + Oru_diff1) < (App.ADTrack.Stop_VPT*2/3))
+ || (((Olu_diff1 + Oru_diff1) < (App.ADTrack.Stop_VPT*2/3))
&& ((Olu_diff2 + Oru_diff2) < (App.ADTrack.Stop_VPT*2/3))
- && ((Olu_diff3 + Oru_diff3) < (App.ADTrack.Stop_VPT*2/3)))
+ && ((Olu_diff3 + Oru_diff3) < (App.ADTrack.Stop_VPT*2/3))
+ && ((Oll_diff1 + Orl_diff1) > -(App.ADTrack.Stop_VPT*2/3))
+ && ((Oll_diff2 + Orl_diff2) > -(App.ADTrack.Stop_VPT*2/3))
+ && ((Oll_diff3 + Orl_diff3) > -(App.ADTrack.Stop_VPT*2/3)))
)
{
BDC_STOP();
+ LED_RED_OFF();
+ LED_GREEN_ON();
App.StopFlag = true;
App.DownFlag = false;
App.UpFlag = false;
App.EmeFlag = false;
App.StopCollDelay1mSCnt = STOP_TIME_MS;
- App.SlopeCollDelay1mSCnt = SLOPE_START_MS;
App.EmergencyDelay1mSCnt = EME_START_MS;
}
// else if(abs(Oll_diff1) > (abs(Orl_diff1) + EME_STOP_VPT)
@@ -733,7 +625,7 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
// }
}
}
- else if(App.UpFlag == true && App.RunCollDelay1mSCnt <= 0)
+ else if(App.DownFlag == true && App.RunCollDelay1mSCnt <= 0)
{
if(App.LeftRunFalg == true)
{
@@ -750,19 +642,22 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
&& (Oll_diff5 < App.ADTrack.Stop_VPT)
&& (Olu_diff6 > -App.ADTrack.Stop_VPT)
&& (Oll_diff6 < App.ADTrack.Stop_VPT))
- || ((App.CentreRunFalg == true)
- && ((Olu_diff1 + Oru_diff1) > -(App.ADTrack.Stop_VPT*2/3))
+ || (((Olu_diff1 + Oru_diff1) > -(App.ADTrack.Stop_VPT*2/3))
&& ((Olu_diff2 + Oru_diff2) > -(App.ADTrack.Stop_VPT*2/3))
- && ((Olu_diff3 + Oru_diff3) > -(App.ADTrack.Stop_VPT*2/3)))
+ && ((Olu_diff3 + Oru_diff3) > -(App.ADTrack.Stop_VPT*2/3))
+ && ((Oll_diff1 + Orl_diff1) < (App.ADTrack.Stop_VPT*2/3))
+ && ((Oll_diff2 + Orl_diff2) < (App.ADTrack.Stop_VPT*2/3))
+ && ((Oll_diff3 + Orl_diff3) < (App.ADTrack.Stop_VPT*2/3)))
)
{
BDC_STOP();
+ LED_RED_OFF();
+ LED_GREEN_ON();
App.StopFlag = true;
App.DownFlag = false;
App.UpFlag = false;
App.EmeFlag = false;
App.StopCollDelay1mSCnt = STOP_TIME_MS;
- App.SlopeCollDelay1mSCnt = SLOPE_START_MS;
App.EmergencyDelay1mSCnt = EME_START_MS;
}
// else if((abs(Oll_diff1) + EME_STOP_VPT) < abs(Orl_diff1)
@@ -793,19 +688,22 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
&& (Orl_diff5 < App.ADTrack.Stop_VPT)
&& (Oru_diff6 > -App.ADTrack.Stop_VPT)
&& (Orl_diff6 < App.ADTrack.Stop_VPT))
- || ((App.CentreRunFalg == true)
- && ((Olu_diff1 + Oru_diff1) > -(App.ADTrack.Stop_VPT*2/3))
+ || (((Olu_diff1 + Oru_diff1) > -(App.ADTrack.Stop_VPT*2/3))
&& ((Olu_diff2 + Oru_diff2) > -(App.ADTrack.Stop_VPT*2/3))
- && ((Olu_diff3 + Oru_diff3) > -(App.ADTrack.Stop_VPT*2/3)))
+ && ((Olu_diff3 + Oru_diff3) > -(App.ADTrack.Stop_VPT*2/3))
+ && ((Oll_diff1 + Orl_diff1) < (App.ADTrack.Stop_VPT*2/3))
+ && ((Oll_diff2 + Orl_diff2) < (App.ADTrack.Stop_VPT*2/3))
+ && ((Oll_diff3 + Orl_diff3) < (App.ADTrack.Stop_VPT*2/3)))
)
{
BDC_STOP();
+ LED_RED_OFF();
+ LED_GREEN_ON();
App.StopFlag = true;
App.DownFlag = false;
App.UpFlag = false;
App.EmeFlag = false;
App.StopCollDelay1mSCnt = STOP_TIME_MS;
- App.SlopeCollDelay1mSCnt = SLOPE_START_MS;
App.EmergencyDelay1mSCnt = EME_START_MS;
}
// else if(abs(Oll_diff1) > (abs(Orl_diff1) + EME_STOP_VPT)
@@ -858,9 +756,7 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
&& App.RightLowCS1237_SlopeArray[2] > -FOLLOW_VPT)
{
if(App.StopFlag == true
- && App.StopCollDelay1mSCnt <= 0
- && App.MotorPara.Current_height <= 1200
- && App.MotorPara.Current_height >= 722){
+ && App.StopCollDelay1mSCnt <= 0){
App.ADTrack.LeftUp_Org_AdZero = lu_ad[0];
App.ADTrack.LeftLow_Org_AdZero = ll_ad[0];
App.ADTrack.RightUp_Org_AdZero = ru_ad[0];
@@ -888,7 +784,7 @@ static void AppInit(void)
DBG_LOG("\r\n\r\n");
DBG_LOG("****************************************************\r\n");
DBG_LOG("** **\r\n");
- DBG_LOG("** Acc_Support_29V **\r\n");
+ DBG_LOG("** SingleColumn_Trolley **\r\n");
DBG_LOG("** SoftWare V:%d.%d **\r\n", SOFTWARE_VERSION / 10, SOFTWARE_VERSION % 10);
DBG_LOG("** HardWare V:%d.%d **\r\n", HARDWARE_VERSION / 10, HARDWARE_VERSION % 10);
DBG_LOG("** Compile: %s %s **\r\n", __DATE__, __TIME__);
@@ -901,18 +797,15 @@ static void AppInit(void)
RIGHTUP_CS1237_Init();
RIGHTLOW_CS1237_Init();
- BDC_STOP();
+ Beeper_Init();
-// App.Status = APP_STATUS_WAIT;
- App.Status = APP_STATUS_MOTOR_INIT;
- App.MotorPara.InitialFlag = false;
-// App.TD1mSDelayCnt = 1000;
-// App.Status = APP_STATUS_UP1;
-// App.TD1mSDelayCnt = TRAVEL_TIME_MS;
+ BDC_STOP();
+ LED_RED_OFF();
+ LED_GREEN_ON();
+ App.Status = APP_STATUS_ZERO_MARKING;
+ App.TD1mSDelayCnt = 2000;
App.RStatus = READ_STATUS_START;
GradeControl(App.Para.Layout.ControlLevel);//等级控制
-
- App.WaitFlag = false;
}
static void ReadLoopHandler(void)
{
@@ -1000,8 +893,7 @@ static void ReadLoopHandler(void)
if(App.LeftUpCS1237ReadEndFlag == true &&
App.LeftLowCS1237ReadEndFlag == true &&
App.RightUpCS1237ReadEndFlag == true &&
- App.RightLowCS1237ReadEndFlag == true &&
- App.WaitFlag == true)
+ App.RightLowCS1237ReadEndFlag == true)
{
#if(USE_AGC == 1)
SupportControlHandle(App.LeftUpCS1237_TrendArray, App.LeftLowCS1237_TrendArray, App.RightUpCS1237_TrendArray, App.RightLowCS1237_TrendArray);
@@ -1026,39 +918,7 @@ static void AppLoopHandler(void)
App.Status = APP_STATUS_IDLE;
break;}
-
- case APP_STATUS_MOTOR_INIT:{
- Beeper_Play_Blocking(200,200,2);
- BDC_UP();
- Ddl_Delay1ms(1000);
- BDC_DOWN();
- App.DownFlag = true;
- App.StopFlag = false;
- App.Status = APP_STATUS_WAIT_MOTOR_INIT;
- App.TD1mSDelayCnt = TRAVEL_TIME_MS;
- break;}
-
- case APP_STATUS_WAIT_MOTOR_INIT:{
- if(App.TD1mSDelayCnt <= 0)
- {
- BDC_STOP();
- App.StopFlag = true;
- App.DownFlag = false;
- App.UpFlag = false;
- App.Status = APP_STATUS_IDLE;
- }
- if(App.MotorPara.Current_height <= 722 && App.MotorPara.Current_height >= 720)
- {
- BDC_STOP();
- App.StopFlag = true;
- App.DownFlag = false;
- App.UpFlag = false;
- App.MotorPara.CaliFlag = false;
- App.TD1mSDelayCnt = 1000;
- App.Status = APP_STATUS_ZERO_MARKING;
- }
- break;}
-
+
case APP_STATUS_ZERO_MARKING:{
if(App.TD1mSDelayCnt <= 0)
{
@@ -1072,126 +932,18 @@ static void AppLoopHandler(void)
App.ADTrack.RightUp_Org_AdZero,
App.ADTrack.RightLow_Org_AdZero);
- App.Status = APP_STATUS_WAIT_MOTOR_CALI_UP;
- App.MotorPara.InitialFlag = true;
- App.MotorPara.CaliNum = 0;
- App.TD1mSDelayCnt = TRAVEL_TIME_MS;
- App.StopFlag = false;
- App.UpFlag = true;
- BDC_UP();
- App.CailUp1mSCnt = 0;
- App.MotorPara.LoopOne = false;
- }
- break;}
-
- case APP_STATUS_WAIT_MOTOR_CALI_UP:{
- if(App.MotorPara.Current_height >= 1200 && App.CailUp1mSCnt >= 17000)
- {
- App.CailUp1mSCnt = 0;
- BDC_STOP();
- App.StopFlag = true;
- App.DownFlag = false;
- App.UpFlag = false;
- Ddl_Delay1ms(1000);
- App.DownFlag = true;
- App.StopFlag = false;
- App.Status = APP_STATUS_WAIT_MOTOR_CALI_DOWN;
- BDC_DOWN();
- }
- else if(App.MotorPara.CaliNum >= 480 && App.MotorPara.LoopOne == true)
- {
- BDC_STOP();
- App.StopFlag = true;
- App.DownFlag = false;
- App.UpFlag = false;
- App.MotorPara.LoopOne = false;
- App.MotorPara.InitialFlag = false;
- App.MotorPara.CaliFlag = true;
- DBG_LOG("===================LU Data monitoring====================\r\n");
- weightedMovingAverageWithEnhance(App.MotorPara.LU_HeightStress,480,7,380,480,4,0);
- DBG_LOG("===================LL Data monitoring====================\r\n");
- weightedMovingAverageWithEnhance(App.MotorPara.LL_HeightStress,480,7,380,480,4,0);
- DBG_LOG("===================RU Data monitoring====================\r\n");
- weightedMovingAverageWithEnhance(App.MotorPara.RU_HeightStress,480,7,380,480,4,0);
- DBG_LOG("===================RL Data monitoring====================\r\n");
- weightedMovingAverageWithEnhance(App.MotorPara.RL_HeightStress,480,7,380,480,4,0);
- DBG_LOG("Motor Cali Ok\r\n");
- App.TD1mSDelayCnt = 1000;
- App.Status = APP_STATUS_WAIT_STEADY;
- }
- break;}
-
- case APP_STATUS_WAIT_MOTOR_CALI_DOWN:{
- if(App.MotorPara.Current_height <= 725)
- {
- BDC_STOP();
- App.StopFlag = true;
- App.DownFlag = false;
- App.UpFlag = false;
- App.MotorPara.LoopOne = true;
- Ddl_Delay1ms(1000);
- App.UpFlag = true;
- App.StopFlag = false;
- App.Status = APP_STATUS_WAIT_MOTOR_CALI_UP;
- BDC_UP();
- App.CailUp1mSCnt = 0;
- }
- else if(App.MotorPara.CaliNum >= 480 && App.MotorPara.LoopOne == true)
- {
- BDC_STOP();
- App.StopFlag = true;
- App.DownFlag = false;
- App.UpFlag = false;
- App.MotorPara.LoopOne = false;
- App.MotorPara.InitialFlag = false;
- App.MotorPara.CaliFlag = true;
- DBG_LOG("===================LU Data monitoring====================\r\n");
- weightedMovingAverageWithEnhance(App.MotorPara.LU_HeightStress,480,7,380,480,4,0);
- DBG_LOG("===================LL Data monitoring====================\r\n");
- weightedMovingAverageWithEnhance(App.MotorPara.LL_HeightStress,480,7,380,480,4,0);
- DBG_LOG("===================RU Data monitoring====================\r\n");
- weightedMovingAverageWithEnhance(App.MotorPara.RU_HeightStress,480,7,380,480,4,0);
- DBG_LOG("===================RL Data monitoring====================\r\n");
- weightedMovingAverageWithEnhance(App.MotorPara.RL_HeightStress,480,7,380,480,4,0);
- DBG_LOG("Motor Cali Ok\r\n");
- App.TD1mSDelayCnt = 1000;
- App.Status = APP_STATUS_WAIT_STEADY;
- }
- break;}
-
- case APP_STATUS_WAIT_STEADY:{
- if(App.TD1mSDelayCnt <= 0)
- {
- App.SideFlag = false;
App.CaliZeroFlag = false;
+ App.StopFlag = true;
App.UpFlag = false;
App.DownFlag = false;
App.EmeFlag = false;
- App.StopFlag = true;
- App.WaitFlag = true;
- App.Status = APP_STATUS_HEIGHT_CONTROL;
- Beeper_Play_Blocking(1000,0,1);
- }
- break;}
-
- case APP_STATUS_HEIGHT_CONTROL:{
- if(App.MotorPara.Current_height < 722
- && App.MotorPara.RestFlag == false
- && App.HeightContRolCnt >= 500)
- {
- App.HeightContRolCnt = 0;
- BDC_UP();
- Ddl_Delay1ms(500);
- BDC_STOP();
- }
- else if(App.MotorPara.Current_height > 1200
- && App.MotorPara.RestFlag == false
- && App.HeightContRolCnt >= 500)
- {
- App.HeightContRolCnt = 0;
- BDC_DOWN();
- Ddl_Delay1ms(400);
+
BDC_STOP();
+ LED_RED_OFF();
+ LED_GREEN_ON();
+ App.Status = APP_STATUS_IDLE;
+
+ Beeper_Start(200,200,2);
}
break;}
}
@@ -1202,8 +954,6 @@ static void App1mSRoutine(void)
App.TD1mSDelayCnt--;
if(App.Read1mSDelayCnt > 0)
App.Read1mSDelayCnt--;
- if(App.Uart1Delay1mSCnt > 0)
- App.Uart1Delay1mSCnt--;
if(App.Uart3RxTimeOut1mSCnt > 0)
App.Uart3RxTimeOut1mSCnt--;
if(App.StopCollDelay1mSCnt > 0)
@@ -1212,18 +962,8 @@ static void App1mSRoutine(void)
App.RunCollDelay1mSCnt--;
if(App.EmergencyDelay1mSCnt > 0)
App.EmergencyDelay1mSCnt--;
- if(App.SlopeCollDelay1mSCnt > 0)
- App.SlopeCollDelay1mSCnt--;
- if(App.MotorPara.InitialFlag == true)
- App.CailUp1mSCnt++;
- if((App.MotorPara.Current_height < 722 || App.MotorPara.Current_height > 1200))
- {
- App.HeightContRolCnt++;
- }
- else
- {
- App.HeightContRolCnt = 0;
- }
+ if(App.CentCollDelay1mSCnt > 0)
+ App.CentCollDelay1mSCnt--;
App.FeedDogDlyCnt++;
}
void FeedDogHandler(void)
@@ -1257,6 +997,7 @@ int main(void)
ReadLoopHandler();
DcmotorLoopHandler();
AdcLoopHander();
+ BeeperLoopHandler();
AppLoopHandler();
}
}
@@ -1276,6 +1017,7 @@ void SysTick_IrqHandler(void)
RIGHTUP_CS12371mSRoutine();
RIGHTLOW_CS12371mSRoutine();
Dcmotor1msRoutine();
+ Beeper_ClearDelay();
Adc1mSRoutine();
}
@@ -1322,12 +1064,7 @@ void Usart3RxIrqCallback(void)
}
else
{
-// if(App.RxUart3Data.RxLen == 1 && Data != 0x01)
-// {
-// App.RxUart3Data.HeaderFrame = false;
-// return;
-// }
- // 如果RxLen小于128,则将数据添加到RxBuff中
+ // 如果RxLen小于128,则将数据添加到RxBuff中
if(App.RxUart3Data.RxLen < 128) {
App.RxUart3Data.RxBuff[App.RxUart3Data.RxLen++] = Data;
}
@@ -1336,30 +1073,17 @@ void Usart3RxIrqCallback(void)
if(App.RxUart3Data.RxBuff[0] == 0x01 && App.RxUart3Data.RxBuff[1] == 0x04 && App.MotorPara.RestFlag == false)
{
App.MotorPara.RestFlag = true;
- Beeper_Play_Blocking(50,50,5);
+ Beeper_Start(1500,0,1);
}
else if(App.RxUart3Data.RxBuff[0] == 0x01 && App.RxUart3Data.RxBuff[1] == 0x01)
{
- App.MotorPara.RestFlag = false;
- int16_t h = ((App.RxUart3Data.RxBuff[2]<<8) & 0xff00) + (App.RxUart3Data.RxBuff[3] & 0x00ff);
- if(h >=720 && h <= 1208)
+ if(App.MotorPara.RestFlag == true)
{
- App.MotorPara.Current_height = h;
- }
- if(App.MotorPara.InitialFlag == true && h >=720 && h <= 1208)
- {//缓存每个高度点对于零点应力的差值,对不同高度点的应力进行补偿
- if(App.MotorPara.LU_HeightStress[(App.MotorPara.Current_height)-720] == 0
- || App.MotorPara.LL_HeightStress[(App.MotorPara.Current_height)-720] == 0
- || App.MotorPara.RU_HeightStress[(App.MotorPara.Current_height)-720] == 0
- || App.MotorPara.RL_HeightStress[(App.MotorPara.Current_height)-720] == 0)
- {
- App.MotorPara.CaliNum++;
- }
- App.MotorPara.LU_HeightStress[(App.MotorPara.Current_height)-720] = App.ADTrack.LeftUp_Org_AdZero - App.LeftUpCS1237_TrendArray[0];
- App.MotorPara.LL_HeightStress[(App.MotorPara.Current_height)-720] = App.ADTrack.LeftLow_Org_AdZero - App.LeftLowCS1237_TrendArray[0];
- App.MotorPara.RU_HeightStress[(App.MotorPara.Current_height)-720] = App.ADTrack.RightUp_Org_AdZero - App.RightUpCS1237_TrendArray[0];
- App.MotorPara.RL_HeightStress[(App.MotorPara.Current_height)-720] = App.ADTrack.RightLow_Org_AdZero - App.RightLowCS1237_TrendArray[0];
+ App.MotorPara.RestFlag = false;
+ Beeper_Start(200,200,2);
}
+ int16_t h = ((App.RxUart3Data.RxBuff[2]<<8) & 0xff00) + (App.RxUart3Data.RxBuff[3] & 0x00ff);
+ App.MotorPara.Current_height = h;
}
memset(App.RxUart3Data.RxBuff, 0, sizeof(App.RxUart3Data.RxBuff));
App.RxUart3Data.RxLen = 0;