Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c6d9a834b8 | |||
| 41021cf95c | |||
| 8200e7b8aa |
@@ -0,0 +1,166 @@
|
|||||||
|
$PACKAGES
|
||||||
|
BUZ-TH_BD12.0-P7.60-D0.6-FD ! BUZ-TH_BD12.0-P7.60-D0.6-FD ! '2.7kHz' ; BUZZER
|
||||||
|
C0603 ! C0603 ! 100nF ; C1 C5 C9 C11 C14 C16 C17 C20 C22 C24 C29 C30 C31 C35 ,
|
||||||
|
C37 C38 C40 C43 C44 C45 C47 C48 C49 C52
|
||||||
|
C0603 ! C0603 ! 100pF ; C27 C28 C33 C34 C41 C42 C50 C51
|
||||||
|
C0603 ! C0603 ! 10uF ; C13 C15 C19 C21 C23 C25 C32 C36 C39 C46
|
||||||
|
C0603 ! C0603 ! 47pF ; C2
|
||||||
|
C0805 ! C0805 ! 100nF ; C8
|
||||||
|
C0805 ! C0805 ! 22uF ; C4 C10 C12 C18
|
||||||
|
C1206 ! C1206 ! '2.2uF' ; C7
|
||||||
|
CAP-TH_BD8.0-P3.50-D0.6-FD ! CAP-TH_BD8.0-P3.50-D0.6-FD ! 470uF ; C3
|
||||||
|
CAP-TH_BD8.0-P3.50-D0.6-FD ! CAP-TH_BD8.0-P3.50-D0.6-FD ! 47uF ; C6
|
||||||
|
,
|
||||||
|
CONN-TH_4P-P1.25_HCTL_HC-1.25-4A ! CONN-TH_4P-P1.25_HCTL_HC-1.25-4A ! '{Value}' ,
|
||||||
|
; LED
|
||||||
|
,
|
||||||
|
CONN-TH_5P-P1.25_HCTL_HC-1.25-5A ! CONN-TH_5P-P1.25_HCTL_HC-1.25-5A ! '{Value}' ,
|
||||||
|
; CN1 CN2
|
||||||
|
,
|
||||||
|
CONN-TH_5P-P1.25_HCTL_HC-1.25-5AW ! CONN-TH_5P-P1.25_HCTL_HC-1.25-5AW ! '{Value}' ,
|
||||||
|
; CN4 CN5 CN6 CN7
|
||||||
|
,
|
||||||
|
CONN-TH_7P-P1.25_HCTL_HC-1.25-7A ! CONN-TH_7P-P1.25_HCTL_HC-1.25-7A ! '{Value}' ,
|
||||||
|
; DEBUG
|
||||||
|
HDR-TH_2P-P2.54-V-M ! HDR-TH_2P-P2.54-V-M ! '{Value}' ; H1 H4
|
||||||
|
HDR-TH_6P-P2.54-V-M ! HDR-TH_6P-P2.54-V-M ! '{Value}' ; H2 H3
|
||||||
|
IND-SMD_L7.1-W6.6 ! IND-SMD_L7.1-W6.6 ! 47uH ; L1
|
||||||
|
LED0603-RD ! LED0603-RD ! '{Value}' ; GREEN RED
|
||||||
|
,
|
||||||
|
LQFP-48_L7.0-W7.0-P0.50-LS9.0-BL ! LQFP-48_L7.0-W7.0-P0.50-LS9.0-BL ! '{Value}' ,
|
||||||
|
; U6
|
||||||
|
M3 ! M3 ! '{Value}' ; U8 U9 U10 U11
|
||||||
|
R0603 ! R0603 ! '1.5kΩ' ; R20 R22
|
||||||
|
R0603 ! R0603 ! '100Ω' ; R12 R13 R16 R17 R18 R19 R27 R28
|
||||||
|
R0603 ! R0603 ! '10kΩ' ; R10 R14 R29
|
||||||
|
R0603 ! R0603 ! '1kΩ' ; R9 R23 R26
|
||||||
|
R0603 ! R0603 ! '2.2kΩ' ; R3 R4 R21 R24
|
||||||
|
R0603 ! R0603 ! '20kΩ' ; R6
|
||||||
|
R0603 ! R0603 ! '22Ω' ; R1
|
||||||
|
R0603 ! R0603 ! '300kΩ' ; R2
|
||||||
|
R0603 ! R0603 ! '30mΩ' ; R5
|
||||||
|
R0603 ! R0603 ! '4.7kΩ' ; R15
|
||||||
|
R0603 ! R0603 ! '510Ω' ; R7 R8
|
||||||
|
R0805 ! R0805 ! '0Ω' ; R11
|
||||||
|
RJ45-TH_RJ48-56-10P10C_MZ ! RJ45-TH_RJ48-56-10P10C_MZ ! '{Value}' ; RJ1 RJ2
|
||||||
|
SMA_L4.3-W2.6-LS5.0-FD ! SMA_L4.3-W2.6-LS5.0-FD ! '{Value}' ; D1
|
||||||
|
SMA_L4.3-W2.6-LS5.2-RD ! SMA_L4.3-W2.6-LS5.2-RD ! '{Value}' ; D3 D5
|
||||||
|
SMA_L4.4-W2.6-LS5.0-BI ! SMA_L4.4-W2.6-LS5.0-BI ! '{Value}' ; D4
|
||||||
|
SOD-123FL_L2.7-W1.8-LS3.8-RD ! SOD-123FL_L2.7-W1.8-LS3.8-RD ! '{Value}' ; D2
|
||||||
|
SOD-323_L1.8-W1.3-LS2.5-RD ! SOD-323_L1.8-W1.3-LS2.5-RD ! '{Value}' ; D6
|
||||||
|
,
|
||||||
|
SOIC-8_L4.9-W3.9-P1.27-LS6.0-BL-EP ! SOIC-8_L4.9-W3.9-P1.27-LS6.0-BL-EP ! '{Value}' ,
|
||||||
|
; U1
|
||||||
|
SOIC-8_L5.0-W4.0-P1.27-LS6.0-BL ! SOIC-8_L5.0-W4.0-P1.27-LS6.0-BL ! '{Value}' ,
|
||||||
|
; U4 U7 U12 U13
|
||||||
|
,
|
||||||
|
SOT-23-3_L2.9-W1.3-P1.90-LS2.4-BR ! SOT-23-3_L2.9-W1.3-P1.90-LS2.4-BR ! '{Value}' ,
|
||||||
|
; Q2 Q3 Q4
|
||||||
|
SOT-89_L4.5-W2.5-P1.50-LS4.2-BR ! SOT-89_L4.5-W2.5-P1.50-LS4.2-BR ! '{Value}' ,
|
||||||
|
; U2 U3
|
||||||
|
,
|
||||||
|
SOT-89-3_L4.5-W2.5-P1.50-LS4.2-BR ! SOT-89-3_L4.5-W2.5-P1.50-LS4.2-BR ! '{Value}' ,
|
||||||
|
; Q1
|
||||||
|
Test-Point-0.5mm ! Test-Point-0.5mm ! '{Value}' ; 12.8V
|
||||||
|
,
|
||||||
|
TSSOP-20_L6.5-W4.4-P0.65-LS6.4-BL ! TSSOP-20_L6.5-W4.4-P0.65-LS6.4-BL ! '{Value}' ,
|
||||||
|
; U5
|
||||||
|
$A_PROPERTIES
|
||||||
|
$NETS
|
||||||
|
'+5V' ; RJ1.P6 RJ2.P6
|
||||||
|
'$1N110513' ; C1.2 R1.1
|
||||||
|
'$1N110514' ; C1.1 D1.2 L1.1 U1.1
|
||||||
|
'$1N110520' ; R1.2 U1.8
|
||||||
|
'$1N110523' ; C2.1 R2.1 R6.2 U1.5
|
||||||
|
'$1N116128' ; R15.1 U6.44
|
||||||
|
'$1N116244' ; C43.2 U6.22
|
||||||
|
'$1N125934' ; H3.6 U6.38
|
||||||
|
'$1N125936' ; H3.5 U6.39
|
||||||
|
'$1N125938' ; H3.4 U6.40
|
||||||
|
'$1N125940' ; H3.3 U6.41
|
||||||
|
'$1N125942' ; H3.2 U6.42
|
||||||
|
'$1N125944' ; H3.1 U6.43
|
||||||
|
'$1N126001' ; H2.2 U6.2
|
||||||
|
'$1N126003' ; H2.3 U6.3
|
||||||
|
'$1N126005' ; H2.4 U6.4
|
||||||
|
'$1N126007' ; H2.5 U6.5
|
||||||
|
'$1N126009' ; H2.6 U6.6
|
||||||
|
'$1N140888' ; CN6.2 R18.1
|
||||||
|
'$1N170439' ; BUZZER.2 D6.2 Q2.3
|
||||||
|
'$1N170441' ; Q2.1 R9.2 R10.2
|
||||||
|
'$1N170456' ; LED.4 R8.1 RED.2
|
||||||
|
'$1N170459' ; GREEN.2 LED.1 R7.1
|
||||||
|
'$1N170464' ; CN4.3 R16.1
|
||||||
|
'$1N170465' ; CN4.2 R12.1
|
||||||
|
'$1N170478' ; R14.1 U5.10
|
||||||
|
'$1N96636' ; CN5.3 R17.1
|
||||||
|
'$1N96637' ; CN5.2 R13.1
|
||||||
|
'$1N96922' ; CN6.3 R27.1
|
||||||
|
'$1N97208' ; CN7.3 R28.1
|
||||||
|
'$1N97209' ; CN7.2 R19.1
|
||||||
|
'AVCC_5V' ; C9.2 C10.2 C21.2 C22.1 C24.1 C25.1 C32.2 C35.1 C39.2 C40.1 C46.2 ,
|
||||||
|
C47.1 CN4.1 CN5.1 CN6.1 CN7.1 U2.2 U4.1 U4.7 U5.19 U7.1 U7.7 U12.1 ,
|
||||||
|
U12.7 U13.1 U13.7
|
||||||
|
'I2C_INT1' ; CN1.4 U6.10
|
||||||
|
'I2C_INT2' ; CN2.4 U6.11
|
||||||
|
'I2C_SCL' ; CN1.2 CN2.2 R4.1 U6.12
|
||||||
|
'I2C_SDA' ; CN1.3 CN2.3 R3.1 U6.13
|
||||||
|
'IO_BIT0' ; Q3.2 R20.1 R23.2 U6.25
|
||||||
|
'IO_BIT1' ; Q4.2 R22.1 R26.2 U6.26
|
||||||
|
'IO_DOUT1' ; U5.1 U6.21
|
||||||
|
'IO_DOUT2' ; U5.4 U6.19
|
||||||
|
'IO_DOUT3' ; U5.9 U6.14
|
||||||
|
'IO_DOUT4' ; U5.7 U6.16
|
||||||
|
'IO_SCLK1' ; U5.3 U6.20
|
||||||
|
'IO_SCLK2' ; U5.5 U6.18
|
||||||
|
'IO_SCLK3' ; U5.8 U6.15
|
||||||
|
'IO_SCLK4' ; U5.6 U6.17
|
||||||
|
'RJ45-RX' ; H2.1 RJ1.P3 RJ2.P3 U6.1
|
||||||
|
'RJ45-TX' ; RJ1.P5 RJ2.P5
|
||||||
|
'UART1_RXD' ; DEBUG.6 U6.32
|
||||||
|
'UART1_TXD' ; DEBUG.5 U6.33
|
||||||
|
'VCC_12V8' ; 12.8V.1 C2.2 C3.1 C4.2 C5.2 C13.2 C14.2 C15.2 C16.2 C19.2 C20.2 ,
|
||||||
|
D2.1 L1.2 Q1.3 R2.2 U2.3 U3.3
|
||||||
|
'VCC_3V3' ; C17.2 C18.2 C23.1 C29.2 C36.1 C37.2 C38.2 C49.2 C52.2 CN1.1 CN2.1 ,
|
||||||
|
DEBUG.7 Q1.2 Q3.1 Q4.1 R3.2 R4.2 R7.2 R8.2 R14.2 R15.2 R20.2 R22.2 ,
|
||||||
|
R29.1 U5.2 U6.9 U6.24 U6.36 U6.48
|
||||||
|
'VCC_5V' ; BUZZER.1 C11.2 C12.2 D6.1 R21.2 R24.2 U3.2
|
||||||
|
AGND ; C9.1 C10.1 C21.1 C22.2 C24.2 C25.2 C27.1 C28.1 C32.1 C33.2 C34.2 C35.2 ,
|
||||||
|
C39.1 C40.2 C41.1 C42.1 C46.1 C47.2 C50.2 C51.2 CN4.4 CN4.5 CN5.4 ,
|
||||||
|
CN5.5 CN6.4 CN6.5 CN7.4 CN7.5 R11.2 U4.2 U7.2 U12.2 U13.2
|
||||||
|
AINN1 ; C27.2 C30.1 R12.2 U4.3
|
||||||
|
AINN2 ; C28.2 C31.1 R13.2 U7.3
|
||||||
|
AINN3 ; C41.2 C44.1 R18.2 U12.3
|
||||||
|
AINN4 ; C42.2 C45.1 R19.2 U13.3
|
||||||
|
AINP1 ; C30.2 C33.1 R16.2 U4.4
|
||||||
|
AINP2 ; C31.2 C34.1 R17.2 U7.4
|
||||||
|
AINP3 ; C44.2 C50.1 R27.2 U12.4
|
||||||
|
AINP4 ; C45.2 C51.1 R28.2 U13.4
|
||||||
|
BIT0 ; H4.1 Q3.3 R21.1 RJ1.P8 RJ2.P8
|
||||||
|
BIT1 ; H4.2 Q4.3 R24.1 RJ1.P9 RJ2.P9
|
||||||
|
BIT2 ; RJ1.P7 RJ2.P7
|
||||||
|
BIT3 ; RJ1.P2 RJ2.P2
|
||||||
|
BUZZ ; R9.1 U6.28
|
||||||
|
DOUT1 ; U4.6 U5.20
|
||||||
|
DOUT2 ; U5.17 U7.6
|
||||||
|
DOUT3 ; U5.12 U12.6
|
||||||
|
DOUT4 ; U5.14 U13.6
|
||||||
|
GND ; C3.2 C4.1 C5.1 C6.2 C7.1 C8.1 C11.1 C12.1 C13.1 C14.1 C15.1 C16.1 C17.1 ,
|
||||||
|
C18.1 C19.1 C20.1 C23.2 C29.1 C36.2 C37.1 C38.1 C43.1 C48.1 C49.1 ,
|
||||||
|
C52.1 CN1.5 CN2.5 D1.1 D2.2 D4.1 DEBUG.1 H1.2 Q1.1 Q2.2 R6.1 R10.1 ,
|
||||||
|
R11.1 R23.1 R26.1 RJ1.P4 RJ1.P10 RJ2.P4 RJ2.P10 U1.4 U2.1 U3.1 U5.11 ,
|
||||||
|
U6.8 U6.23 U6.35 U6.47 U8.1 U9.1 U10.1 U11.1
|
||||||
|
GREEN ; GREEN.1 LED.2 U6.30
|
||||||
|
ILIM ; R5.2 U1.2 U1.9
|
||||||
|
NRST ; C48.2 DEBUG.2 H1.1 R29.2 U6.7
|
||||||
|
POWER ; C6.1 C7.2 C8.2 D3.1 D5.1 R5.1 U1.3
|
||||||
|
RED ; LED.3 RED.1 U6.29
|
||||||
|
SCLK1 ; U4.5 U5.18
|
||||||
|
SCLK2 ; U5.16 U7.5
|
||||||
|
SCLK3 ; U5.13 U12.5
|
||||||
|
SCLK4 ; U5.15 U13.5
|
||||||
|
SWCLK ; DEBUG.3 U6.37
|
||||||
|
SWDIO ; DEBUG.4 U6.34
|
||||||
|
VIN ; D3.2 D4.2 D5.2 RJ1.P1 RJ2.P1
|
||||||
|
$SCHEDULE
|
||||||
|
$END
|
||||||
@@ -145,7 +145,7 @@
|
|||||||
<SetRegEntry>
|
<SetRegEntry>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
<Key>CMSIS_AGDI</Key>
|
<Key>CMSIS_AGDI</Key>
|
||||||
<Name>-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)</Name>
|
<Name>-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)</Name>
|
||||||
</SetRegEntry>
|
</SetRegEntry>
|
||||||
<SetRegEntry>
|
<SetRegEntry>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
@@ -153,24 +153,7 @@
|
|||||||
<Name>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))</Name>
|
<Name>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))</Name>
|
||||||
</SetRegEntry>
|
</SetRegEntry>
|
||||||
</TargetDriverDllRegistry>
|
</TargetDriverDllRegistry>
|
||||||
<Breakpoint>
|
<Breakpoint/>
|
||||||
<Bp>
|
|
||||||
<Number>0</Number>
|
|
||||||
<Type>0</Type>
|
|
||||||
<LineNumber>504</LineNumber>
|
|
||||||
<EnabledFlag>1</EnabledFlag>
|
|
||||||
<Address>32426</Address>
|
|
||||||
<ByteObject>0</ByteObject>
|
|
||||||
<HtxType>0</HtxType>
|
|
||||||
<ManyObjects>0</ManyObjects>
|
|
||||||
<SizeOfObject>0</SizeOfObject>
|
|
||||||
<BreakByAccess>0</BreakByAccess>
|
|
||||||
<BreakIfRCount>1</BreakIfRCount>
|
|
||||||
<Filename>..\source\User\Src\main.c</Filename>
|
|
||||||
<ExecCommand></ExecCommand>
|
|
||||||
<Expression>\\BombSensor\../source/User/Src/main.c\504</Expression>
|
|
||||||
</Bp>
|
|
||||||
</Breakpoint>
|
|
||||||
<WatchWindow1>
|
<WatchWindow1>
|
||||||
<Ww>
|
<Ww>
|
||||||
<count>0</count>
|
<count>0</count>
|
||||||
@@ -461,8 +444,8 @@
|
|||||||
<OPTTT>
|
<OPTTT>
|
||||||
<gFlags>0</gFlags>
|
<gFlags>0</gFlags>
|
||||||
<BeepAtEnd>1</BeepAtEnd>
|
<BeepAtEnd>1</BeepAtEnd>
|
||||||
<RunSim>1</RunSim>
|
<RunSim>0</RunSim>
|
||||||
<RunTarget>0</RunTarget>
|
<RunTarget>1</RunTarget>
|
||||||
<RunAbUc>0</RunAbUc>
|
<RunAbUc>0</RunAbUc>
|
||||||
</OPTTT>
|
</OPTTT>
|
||||||
<OPTHX>
|
<OPTHX>
|
||||||
@@ -510,8 +493,8 @@
|
|||||||
</OPTFL>
|
</OPTFL>
|
||||||
<CpuCode>255</CpuCode>
|
<CpuCode>255</CpuCode>
|
||||||
<DebugOpt>
|
<DebugOpt>
|
||||||
<uSim>1</uSim>
|
<uSim>0</uSim>
|
||||||
<uTrg>0</uTrg>
|
<uTrg>1</uTrg>
|
||||||
<sLdApp>1</sLdApp>
|
<sLdApp>1</sLdApp>
|
||||||
<sGomain>1</sGomain>
|
<sGomain>1</sGomain>
|
||||||
<sRbreak>1</sRbreak>
|
<sRbreak>1</sRbreak>
|
||||||
@@ -520,7 +503,7 @@
|
|||||||
<sRfunc>1</sRfunc>
|
<sRfunc>1</sRfunc>
|
||||||
<sRbox>1</sRbox>
|
<sRbox>1</sRbox>
|
||||||
<tLdApp>1</tLdApp>
|
<tLdApp>1</tLdApp>
|
||||||
<tGomain>0</tGomain>
|
<tGomain>1</tGomain>
|
||||||
<tRbreak>1</tRbreak>
|
<tRbreak>1</tRbreak>
|
||||||
<tRwatch>1</tRwatch>
|
<tRwatch>1</tRwatch>
|
||||||
<tRmem>1</tRmem>
|
<tRmem>1</tRmem>
|
||||||
@@ -534,7 +517,7 @@
|
|||||||
<bEvRecOn>1</bEvRecOn>
|
<bEvRecOn>1</bEvRecOn>
|
||||||
<bSchkAxf>0</bSchkAxf>
|
<bSchkAxf>0</bSchkAxf>
|
||||||
<bTchkAxf>0</bTchkAxf>
|
<bTchkAxf>0</bTchkAxf>
|
||||||
<nTsel>-1</nTsel>
|
<nTsel>0</nTsel>
|
||||||
<sDll></sDll>
|
<sDll></sDll>
|
||||||
<sDllPa></sDllPa>
|
<sDllPa></sDllPa>
|
||||||
<sDlgDll></sDlgDll>
|
<sDlgDll></sDlgDll>
|
||||||
@@ -545,8 +528,15 @@
|
|||||||
<tDlgDll></tDlgDll>
|
<tDlgDll></tDlgDll>
|
||||||
<tDlgPa></tDlgPa>
|
<tDlgPa></tDlgPa>
|
||||||
<tIfile></tIfile>
|
<tIfile></tIfile>
|
||||||
<pMon></pMon>
|
<pMon>BIN\UL2CM3.DLL</pMon>
|
||||||
</DebugOpt>
|
</DebugOpt>
|
||||||
|
<TargetDriverDllRegistry>
|
||||||
|
<SetRegEntry>
|
||||||
|
<Number>0</Number>
|
||||||
|
<Key>UL2CM3</Key>
|
||||||
|
<Name>UL2CM3(-S0 -C0 -P0 -FD1FFF8000 -FC1000 -FN2 -FF0HC32F460_512K -FS00 -FL080000 -FF1HC32F460_otp -FS13000C00 -FL13FC -FP0($$Device:HC32F460PETB$FlashARM\HC32F460_512K.FLM) -FP1($$Device:HC32F460PETB$FlashARM\HC32F460_otp.FLM))</Name>
|
||||||
|
</SetRegEntry>
|
||||||
|
</TargetDriverDllRegistry>
|
||||||
<Breakpoint/>
|
<Breakpoint/>
|
||||||
<Tracepoint>
|
<Tracepoint>
|
||||||
<THDelay>0</THDelay>
|
<THDelay>0</THDelay>
|
||||||
@@ -590,6 +580,13 @@
|
|||||||
<pszMrulep></pszMrulep>
|
<pszMrulep></pszMrulep>
|
||||||
<pSingCmdsp></pSingCmdsp>
|
<pSingCmdsp></pSingCmdsp>
|
||||||
<pMultCmdsp></pMultCmdsp>
|
<pMultCmdsp></pMultCmdsp>
|
||||||
|
<DebugDescription>
|
||||||
|
<Enable>1</Enable>
|
||||||
|
<EnableFlashSeq>1</EnableFlashSeq>
|
||||||
|
<EnableLog>0</EnableLog>
|
||||||
|
<Protocol>2</Protocol>
|
||||||
|
<DbgClock>1000000</DbgClock>
|
||||||
|
</DebugDescription>
|
||||||
</TargetOption>
|
</TargetOption>
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
* Auto generated Run-Time-Environment Configuration File
|
* Auto generated Run-Time-Environment Configuration File
|
||||||
* *** Do not modify ! ***
|
* *** Do not modify ! ***
|
||||||
*
|
*
|
||||||
* Project: 'BombSensor'
|
* Project: 'HC32F460'
|
||||||
* Target: 'Release'
|
* Target: 'Release'
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
#include "BeepAndLed.h"
|
#include "BeepAndLed.h"
|
||||||
#include "beepAndLed.h"
|
#include "beepAndLed.h"
|
||||||
#include "main.h" // 包含BUZZER_ON/OFF, LED等宏定义
|
#include "main.h" // 包含BUZZER_ON/OFF, LED等宏定义
|
||||||
|
|
||||||
// ========== 变量定义 ==========
|
// ========== 变量定义 ==========
|
||||||
static BeeperCtrl_t g_beeper = {
|
static BeeperCtrl_t g_beeper = {
|
||||||
.state = BEEPER_STATE_IDLE,
|
.state = BEEPER_STATE_IDLE,
|
||||||
.is_active = 0,
|
.is_active = 0,
|
||||||
@@ -12,28 +12,28 @@ static BeeperCtrl_t g_beeper = {
|
|||||||
.off_ms = 0
|
.off_ms = 0
|
||||||
};
|
};
|
||||||
|
|
||||||
// 延时计数器(供滴答定时器使用)
|
// 延时计数器(供滴答定时器使用)
|
||||||
uint32_t BeepAndLedCollDelay1mSCnt = 0;
|
uint32_t BeepAndLedCollDelay1mSCnt = 0;
|
||||||
|
|
||||||
// ========== 硬件控制函数(根据您的实际宏定义修改)==========
|
// ========== 硬件控制函数(根据您的实际宏定义修改)==========
|
||||||
static void Beeper_HW_On(void)
|
static void Beeper_HW_On(void)
|
||||||
{
|
{
|
||||||
BUZZER_ON(); // 请替换为您的实际宏
|
BUZZER_ON(); // 请替换为您的实际宏
|
||||||
LED_GREEN_OFF(); // 请替换为您的实际宏
|
LED_GREEN_OFF(); // 请替换为您的实际宏
|
||||||
LED_RED_ON(); // 请替换为您的实际宏
|
LED_RED_ON(); // 请替换为您的实际宏
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Beeper_HW_Off(void)
|
static void Beeper_HW_Off(void)
|
||||||
{
|
{
|
||||||
BUZZER_OFF(); // 请替换为您的实际宏
|
BUZZER_OFF(); // 请替换为您的实际宏
|
||||||
LED_GREEN_ON(); // 请替换为您的实际宏
|
LED_GREEN_ON(); // 请替换为您的实际宏
|
||||||
LED_RED_OFF(); // 请替换为您的实际宏
|
LED_RED_OFF(); // 请替换为您的实际宏
|
||||||
}
|
}
|
||||||
|
|
||||||
// ========== 实现函数 ==========
|
// ========== 实现函数 ==========
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 蜂鸣器初始化
|
* @brief 蜂鸣器初始化
|
||||||
*/
|
*/
|
||||||
void Beeper_Init(void)
|
void Beeper_Init(void)
|
||||||
{
|
{
|
||||||
@@ -41,47 +41,47 @@ void Beeper_Init(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 开始鸣响(非阻塞)
|
* @brief 开始鸣响(非阻塞)
|
||||||
* @param on_ms 鸣响时间(ms)
|
* @param on_ms 鸣响时间(ms)
|
||||||
* @param off_ms 间隔时间(ms)
|
* @param off_ms 间隔时间(ms)
|
||||||
* @param repeat 重复次数(0表示无效)
|
* @param repeat 重复次数(0表示无效)
|
||||||
*
|
*
|
||||||
* @example Beeper_Start(200, 100, 3); // 鸣200ms,停100ms,重复3次
|
* @example Beeper_Start(200, 100, 3); // 鸣200ms,停100ms,重复3次
|
||||||
*/
|
*/
|
||||||
void Beeper_Start(uint16_t on_ms, uint16_t off_ms, uint8_t repeat)
|
void Beeper_Start(uint16_t on_ms, uint16_t off_ms, uint8_t repeat)
|
||||||
{
|
{
|
||||||
if (repeat == 0) return;
|
if (repeat == 0) return;
|
||||||
|
|
||||||
// 如果已经在鸣响,可以选择停止并重新开始
|
// 如果已经在鸣响,可以选择停止并重新开始
|
||||||
if (g_beeper.is_active) {
|
if (g_beeper.is_active) {
|
||||||
Beeper_Stop(); // 停止当前,重新开始新的
|
Beeper_Stop(); // 停止当前,重新开始新的
|
||||||
// return; // 或者选择忽略新请求
|
// return; // 或者选择忽略新请求
|
||||||
}
|
}
|
||||||
|
|
||||||
// 保存参数
|
// 保存参数
|
||||||
g_beeper.on_ms = on_ms;
|
g_beeper.on_ms = on_ms;
|
||||||
g_beeper.off_ms = off_ms;
|
g_beeper.off_ms = off_ms;
|
||||||
g_beeper.repeat = repeat;
|
g_beeper.repeat = repeat;
|
||||||
g_beeper.repeat_done = 0;
|
g_beeper.repeat_done = 0;
|
||||||
g_beeper.is_active = 1;
|
g_beeper.is_active = 1;
|
||||||
|
|
||||||
// 开启蜂鸣器
|
// 开启蜂鸣器
|
||||||
Beeper_HW_On();
|
Beeper_HW_On();
|
||||||
|
|
||||||
// 设置延时计数器(开启状态延时)
|
// 设置延时计数器(开启状态延时)
|
||||||
BeepAndLedCollDelay1mSCnt = on_ms;
|
BeepAndLedCollDelay1mSCnt = on_ms;
|
||||||
g_beeper.state = BEEPER_STATE_ON;
|
g_beeper.state = BEEPER_STATE_ON;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 停止鸣响
|
* @brief 停止鸣响
|
||||||
*/
|
*/
|
||||||
void Beeper_Stop(void)
|
void Beeper_Stop(void)
|
||||||
{
|
{
|
||||||
// 关闭硬件
|
// 关闭硬件
|
||||||
Beeper_HW_Off();
|
Beeper_HW_Off();
|
||||||
|
|
||||||
// 重置状态机
|
// 重置状态机
|
||||||
g_beeper.state = BEEPER_STATE_IDLE;
|
g_beeper.state = BEEPER_STATE_IDLE;
|
||||||
g_beeper.is_active = 0;
|
g_beeper.is_active = 0;
|
||||||
g_beeper.repeat = 0;
|
g_beeper.repeat = 0;
|
||||||
@@ -90,8 +90,8 @@ void Beeper_Stop(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 蜂鸣器状态机更新(放在main.c的while(1)中循环调用)
|
* @brief 蜂鸣器状态机更新(放在main.c的while(1)中循环调用)
|
||||||
* @note 必须在滴答定时器更新BeepAndLedCollDelay1mSCnt后才能正确工作
|
* @note 必须在滴答定时器更新BeepAndLedCollDelay1mSCnt后才能正确工作
|
||||||
*/
|
*/
|
||||||
void BeeperLoopHandler(void)
|
void BeeperLoopHandler(void)
|
||||||
{
|
{
|
||||||
@@ -101,20 +101,20 @@ void BeeperLoopHandler(void)
|
|||||||
|
|
||||||
switch (g_beeper.state) {
|
switch (g_beeper.state) {
|
||||||
case BEEPER_STATE_ON:
|
case BEEPER_STATE_ON:
|
||||||
// 蜂鸣器开启状态,等待计数器归零
|
// 蜂鸣器开启状态,等待计数器归零
|
||||||
if (BeepAndLedCollDelay1mSCnt == 0) {
|
if (BeepAndLedCollDelay1mSCnt == 0) {
|
||||||
// 延时结束,关闭蜂鸣器
|
// 延时结束,关闭蜂鸣器
|
||||||
Beeper_HW_Off();
|
Beeper_HW_Off();
|
||||||
|
|
||||||
g_beeper.repeat_done++;
|
g_beeper.repeat_done++;
|
||||||
|
|
||||||
// 检查是否完成所有重复
|
// 检查是否完成所有重复
|
||||||
if (g_beeper.repeat_done >= g_beeper.repeat) {
|
if (g_beeper.repeat_done >= g_beeper.repeat) {
|
||||||
// 全部完成,结束
|
// 全部完成,结束
|
||||||
g_beeper.is_active = 0;
|
g_beeper.is_active = 0;
|
||||||
g_beeper.state = BEEPER_STATE_IDLE;
|
g_beeper.state = BEEPER_STATE_IDLE;
|
||||||
} else {
|
} else {
|
||||||
// 还有下次,进入等待状态
|
// 还有下次,进入等待状态
|
||||||
BeepAndLedCollDelay1mSCnt = g_beeper.off_ms;
|
BeepAndLedCollDelay1mSCnt = g_beeper.off_ms;
|
||||||
g_beeper.state = BEEPER_STATE_OFF;
|
g_beeper.state = BEEPER_STATE_OFF;
|
||||||
}
|
}
|
||||||
@@ -122,9 +122,9 @@ void BeeperLoopHandler(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case BEEPER_STATE_OFF:
|
case BEEPER_STATE_OFF:
|
||||||
// 蜂鸣器关闭等待状态(间隔时间)
|
// 蜂鸣器关闭等待状态(间隔时间)
|
||||||
if (BeepAndLedCollDelay1mSCnt == 0) {
|
if (BeepAndLedCollDelay1mSCnt == 0) {
|
||||||
// 间隔结束,开启下一次鸣响
|
// 间隔结束,开启下一次鸣响
|
||||||
Beeper_HW_On();
|
Beeper_HW_On();
|
||||||
|
|
||||||
BeepAndLedCollDelay1mSCnt = g_beeper.on_ms;
|
BeepAndLedCollDelay1mSCnt = g_beeper.on_ms;
|
||||||
@@ -140,8 +140,8 @@ void BeeperLoopHandler(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 查询是否正在鸣响
|
* @brief 查询是否正在鸣响
|
||||||
* @return true:正在鸣响, false:空闲
|
* @return true:正在鸣响, false:空闲
|
||||||
*/
|
*/
|
||||||
bool Beeper_IsPlaying(void)
|
bool Beeper_IsPlaying(void)
|
||||||
{
|
{
|
||||||
@@ -149,7 +149,7 @@ bool Beeper_IsPlaying(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 手动开启蜂鸣器(不计入状态机)
|
* @brief 手动开启蜂鸣器(不计入状态机)
|
||||||
*/
|
*/
|
||||||
void Beeper_On(void)
|
void Beeper_On(void)
|
||||||
{
|
{
|
||||||
@@ -157,7 +157,7 @@ void Beeper_On(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 手动关闭蜂鸣器(不计入状态机)
|
* @brief 手动关闭蜂鸣器(不计入状态机)
|
||||||
*/
|
*/
|
||||||
void Beeper_Off(void)
|
void Beeper_Off(void)
|
||||||
{
|
{
|
||||||
@@ -165,8 +165,8 @@ void Beeper_Off(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 清除延时计数器(由滴答定时器调用)
|
* @brief 清除延时计数器(由滴答定时器调用)
|
||||||
* @note 这个函数放在滴答定时器的1ms中断中调用
|
* @note 这个函数放在滴答定时器的1ms中断中调用
|
||||||
*/
|
*/
|
||||||
void Beeper_ClearDelay(void)
|
void Beeper_ClearDelay(void)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -5,35 +5,35 @@
|
|||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include "bsp.h"
|
#include "bsp.h"
|
||||||
|
|
||||||
// ========== 蜂鸣器状态机状态定义 ==========
|
// ========== 蜂鸣器状态机状态定义 ==========
|
||||||
typedef enum {
|
typedef enum {
|
||||||
BEEPER_STATE_IDLE = 0, // 空闲
|
BEEPER_STATE_IDLE = 0, // 空闲
|
||||||
BEEPER_STATE_ON, // 蜂鸣器开启延时中
|
BEEPER_STATE_ON, // 蜂鸣器开启延时中
|
||||||
BEEPER_STATE_OFF, // 蜂鸣器关闭延时中
|
BEEPER_STATE_OFF, // 蜂鸣器关闭延时中
|
||||||
BEEPER_STATE_WAIT // 等待下一次鸣响
|
BEEPER_STATE_WAIT // 等待下一次鸣响
|
||||||
} BeeperState_t;
|
} BeeperState_t;
|
||||||
|
|
||||||
// ========== 蜂鸣器控制结构体 ==========
|
// ========== 蜂鸣器控制结构体 ==========
|
||||||
typedef struct {
|
typedef struct {
|
||||||
BeeperState_t state; // 当前状态
|
BeeperState_t state; // 当前状态
|
||||||
uint16_t on_ms; // 鸣响时间(ms)
|
uint16_t on_ms; // 鸣响时间(ms)
|
||||||
uint16_t off_ms; // 间隔时间(ms)
|
uint16_t off_ms; // 间隔时间(ms)
|
||||||
uint8_t repeat; // 重复次数
|
uint8_t repeat; // 重复次数
|
||||||
uint8_t repeat_done; // 已完成次数
|
uint8_t repeat_done; // 已完成次数
|
||||||
uint8_t is_active; // 是否激活
|
uint8_t is_active; // 是否激活
|
||||||
} BeeperCtrl_t;
|
} BeeperCtrl_t;
|
||||||
|
|
||||||
// ========== 外部可访问变量 ==========
|
// ========== 外部可访问变量 ==========
|
||||||
extern uint32_t BeepAndLedCollDelay1mSCnt; // 延时计数器(在beepAndLed.c中定义)
|
extern uint32_t BeepAndLedCollDelay1mSCnt; // 延时计数器(在beepAndLed.c中定义)
|
||||||
|
|
||||||
// ========== API函数 ==========
|
// ========== API函数 ==========
|
||||||
void Beeper_Init(void); // 初始化
|
void Beeper_Init(void); // 初始化
|
||||||
void Beeper_Start(uint16_t on_ms, uint16_t off_ms, uint8_t repeat); // 开始鸣响(非阻塞)
|
void Beeper_Start(uint16_t on_ms, uint16_t off_ms, uint8_t repeat); // 开始鸣响(非阻塞)
|
||||||
void Beeper_Stop(void); // 停止鸣响
|
void Beeper_Stop(void); // 停止鸣响
|
||||||
void BeeperLoopHandler(void); // 状态机更新(放在while(1)中)
|
void BeeperLoopHandler(void); // 状态机更新(放在while(1)中)
|
||||||
bool Beeper_IsPlaying(void); // 查询是否正在鸣响
|
bool Beeper_IsPlaying(void); // 查询是否正在鸣响
|
||||||
void Beeper_On(void); // 手动开启蜂鸣器
|
void Beeper_On(void); // 手动开启蜂鸣器
|
||||||
void Beeper_Off(void); // 手动关闭蜂鸣器
|
void Beeper_Off(void); // 手动关闭蜂鸣器
|
||||||
void Beeper_ClearDelay(void); // 清除延时计数器(供滴答定时器使用)
|
void Beeper_ClearDelay(void); // 清除延时计数器(供滴答定时器使用)
|
||||||
#endif /* _BEEP_AND_LED_H_ */
|
#endif /* _BEEP_AND_LED_H_ */
|
||||||
|
|
||||||
|
|||||||
@@ -28,22 +28,22 @@
|
|||||||
|
|
||||||
/*Definition of conversion time corresponding to repeatability setting*/
|
/*Definition of conversion time corresponding to repeatability setting*/
|
||||||
/*
|
/*
|
||||||
10Hz //建立时间300ms
|
10Hz //建立时间300ms
|
||||||
40Hz //建立时间75ms
|
40Hz //建立时间75ms
|
||||||
640Hz //建立时间6.25ms
|
640Hz //建立时间6.25ms
|
||||||
1280Hz //建立时间3.125ms
|
1280Hz //建立时间3.125ms
|
||||||
*/
|
*/
|
||||||
#define tCon_10Hz 300 /* ms. */
|
#define tCon_10Hz 300 /* ms. */
|
||||||
#define tCon_40Hz 75 /* ms. */
|
#define tCon_40Hz 75 /* ms. */
|
||||||
#define tCon_640Hz 7 /* ms. */
|
#define tCon_640Hz 7 /* ms. */
|
||||||
#define tCon_1280Hz 4 /* ms. */
|
#define tCon_1280Hz 4 /* ms. */
|
||||||
|
|
||||||
#define PORT_A 1 //采集通道A
|
#define PORT_A 1 //采集通道A
|
||||||
//#define PORT_B 1 //采集通道B
|
//#define PORT_B 1 //采集通道B
|
||||||
#define PORT_TEMP 0 //采集温度
|
#define PORT_TEMP 0 //采集温度
|
||||||
#define PORT_JUMP 0 //内短采集
|
#define PORT_JUMP 0 //内短采集
|
||||||
#define PACK_NUM 1 //一次采集的数据包数量
|
#define PACK_NUM 1 //一次采集的数据包数量
|
||||||
#define FILTER_NUM 0 //滤波数
|
#define FILTER_NUM 0 //滤波数
|
||||||
|
|
||||||
typedef enum{
|
typedef enum{
|
||||||
LLCS1237_STATUS_IDLE,
|
LLCS1237_STATUS_IDLE,
|
||||||
@@ -59,10 +59,10 @@ typedef struct{
|
|||||||
LeftLowCS1237Status_m Status;
|
LeftLowCS1237Status_m Status;
|
||||||
uint32_t CS1237Delay1mSCnt;
|
uint32_t CS1237Delay1mSCnt;
|
||||||
|
|
||||||
int32_t AinA_AD;//AINAad数据
|
int32_t AinA_AD;//AINAad数据
|
||||||
//int32_t AinB_AD;//AINBad数据
|
//int32_t AinB_AD;//AINBad数据
|
||||||
int32_t Temp_AD;//温度ad数据
|
int32_t Temp_AD;//温度ad数据
|
||||||
int32_t Jump_AD;//内短ad数据
|
int32_t Jump_AD;//内短ad数据
|
||||||
}
|
}
|
||||||
LEFTLOW_CS1237Var_t;
|
LEFTLOW_CS1237Var_t;
|
||||||
|
|
||||||
|
|||||||
@@ -30,22 +30,22 @@
|
|||||||
|
|
||||||
/*Definition of conversion time corresponding to repeatability setting*/
|
/*Definition of conversion time corresponding to repeatability setting*/
|
||||||
/*
|
/*
|
||||||
10Hz //建立时间300ms
|
10Hz //建立时间300ms
|
||||||
40Hz //建立时间75ms
|
40Hz //建立时间75ms
|
||||||
640Hz //建立时间6.25ms
|
640Hz //建立时间6.25ms
|
||||||
1280Hz //建立时间3.125ms
|
1280Hz //建立时间3.125ms
|
||||||
*/
|
*/
|
||||||
#define tCon_10Hz 300 /* ms. */
|
#define tCon_10Hz 300 /* ms. */
|
||||||
#define tCon_40Hz 75 /* ms. */
|
#define tCon_40Hz 75 /* ms. */
|
||||||
#define tCon_640Hz 7 /* ms. */
|
#define tCon_640Hz 7 /* ms. */
|
||||||
#define tCon_1280Hz 4 /* ms. */
|
#define tCon_1280Hz 4 /* ms. */
|
||||||
|
|
||||||
#define PORT_A 1 //采集通道A
|
#define PORT_A 1 //采集通道A
|
||||||
//#define PORT_B 1 //采集通道B
|
//#define PORT_B 1 //采集通道B
|
||||||
#define PORT_TEMP 0 //采集温度
|
#define PORT_TEMP 0 //采集温度
|
||||||
#define PORT_JUMP 0 //内短采集
|
#define PORT_JUMP 0 //内短采集
|
||||||
#define PACK_NUM 1 //一次采集的数据包数量
|
#define PACK_NUM 1 //一次采集的数据包数量
|
||||||
#define FILTER_NUM 0 //滤波数
|
#define FILTER_NUM 0 //滤波数
|
||||||
|
|
||||||
typedef enum{
|
typedef enum{
|
||||||
LUCS1237_STATUS_IDLE,
|
LUCS1237_STATUS_IDLE,
|
||||||
@@ -61,10 +61,10 @@ typedef struct{
|
|||||||
LeftUpCS1237Status_m Status;
|
LeftUpCS1237Status_m Status;
|
||||||
uint32_t CS1237Delay1mSCnt;
|
uint32_t CS1237Delay1mSCnt;
|
||||||
|
|
||||||
int32_t AinA_AD;//AINAad数据
|
int32_t AinA_AD;//AINAad数据
|
||||||
//int32_t AinB_AD;//AINBad数据
|
//int32_t AinB_AD;//AINBad数据
|
||||||
int32_t Temp_AD;//温度ad数据
|
int32_t Temp_AD;//温度ad数据
|
||||||
int32_t Jump_AD;//内短ad数据
|
int32_t Jump_AD;//内短ad数据
|
||||||
}
|
}
|
||||||
LEFTUP_CS1237Var_t;
|
LEFTUP_CS1237Var_t;
|
||||||
|
|
||||||
|
|||||||
@@ -28,22 +28,22 @@
|
|||||||
|
|
||||||
/*Definition of conversion time corresponding to repeatability setting*/
|
/*Definition of conversion time corresponding to repeatability setting*/
|
||||||
/*
|
/*
|
||||||
10Hz //建立时间300ms
|
10Hz //建立时间300ms
|
||||||
40Hz //建立时间75ms
|
40Hz //建立时间75ms
|
||||||
640Hz //建立时间6.25ms
|
640Hz //建立时间6.25ms
|
||||||
1280Hz //建立时间3.125ms
|
1280Hz //建立时间3.125ms
|
||||||
*/
|
*/
|
||||||
#define tCon_10Hz 300 /* ms. */
|
#define tCon_10Hz 300 /* ms. */
|
||||||
#define tCon_40Hz 75 /* ms. */
|
#define tCon_40Hz 75 /* ms. */
|
||||||
#define tCon_640Hz 7 /* ms. */
|
#define tCon_640Hz 7 /* ms. */
|
||||||
#define tCon_1280Hz 4 /* ms. */
|
#define tCon_1280Hz 4 /* ms. */
|
||||||
|
|
||||||
#define PORT_A 1 //采集通道A
|
#define PORT_A 1 //采集通道A
|
||||||
//#define PORT_B 1 //采集通道B
|
//#define PORT_B 1 //采集通道B
|
||||||
#define PORT_TEMP 0 //采集温度
|
#define PORT_TEMP 0 //采集温度
|
||||||
#define PORT_JUMP 0 //内短采集
|
#define PORT_JUMP 0 //内短采集
|
||||||
#define PACK_NUM 1 //一次采集的数据包数量
|
#define PACK_NUM 1 //一次采集的数据包数量
|
||||||
#define FILTER_NUM 0 //滤波数
|
#define FILTER_NUM 0 //滤波数
|
||||||
|
|
||||||
typedef enum{
|
typedef enum{
|
||||||
RLCS1237_STATUS_IDLE,
|
RLCS1237_STATUS_IDLE,
|
||||||
@@ -59,10 +59,10 @@ typedef struct{
|
|||||||
RightLowCS1237Status_m Status;
|
RightLowCS1237Status_m Status;
|
||||||
uint32_t CS1237Delay1mSCnt;
|
uint32_t CS1237Delay1mSCnt;
|
||||||
|
|
||||||
int32_t AinA_AD;//AINAad数据
|
int32_t AinA_AD;//AINAad数据
|
||||||
//int32_t AinB_AD;//AINBad数据
|
//int32_t AinB_AD;//AINBad数据
|
||||||
int32_t Temp_AD;//温度ad数据
|
int32_t Temp_AD;//温度ad数据
|
||||||
int32_t Jump_AD;//内短ad数据
|
int32_t Jump_AD;//内短ad数据
|
||||||
}
|
}
|
||||||
RIGHTLOW_CS1237Var_t;
|
RIGHTLOW_CS1237Var_t;
|
||||||
|
|
||||||
|
|||||||
@@ -30,22 +30,22 @@
|
|||||||
|
|
||||||
/*Definition of conversion time corresponding to repeatability setting*/
|
/*Definition of conversion time corresponding to repeatability setting*/
|
||||||
/*
|
/*
|
||||||
10Hz //建立时间300ms
|
10Hz //建立时间300ms
|
||||||
40Hz //建立时间75ms
|
40Hz //建立时间75ms
|
||||||
640Hz //建立时间6.25ms
|
640Hz //建立时间6.25ms
|
||||||
1280Hz //建立时间3.125ms
|
1280Hz //建立时间3.125ms
|
||||||
*/
|
*/
|
||||||
#define tCon_10Hz 300 /* ms. */
|
#define tCon_10Hz 300 /* ms. */
|
||||||
#define tCon_40Hz 75 /* ms. */
|
#define tCon_40Hz 75 /* ms. */
|
||||||
#define tCon_640Hz 7 /* ms. */
|
#define tCon_640Hz 7 /* ms. */
|
||||||
#define tCon_1280Hz 4 /* ms. */
|
#define tCon_1280Hz 4 /* ms. */
|
||||||
|
|
||||||
#define PORT_A 1 //采集通道A
|
#define PORT_A 1 //采集通道A
|
||||||
//#define PORT_B 1 //采集通道B
|
//#define PORT_B 1 //采集通道B
|
||||||
#define PORT_TEMP 0 //采集温度
|
#define PORT_TEMP 0 //采集温度
|
||||||
#define PORT_JUMP 0 //内短采集
|
#define PORT_JUMP 0 //内短采集
|
||||||
#define PACK_NUM 1 //一次采集的数据包数量
|
#define PACK_NUM 1 //一次采集的数据包数量
|
||||||
#define FILTER_NUM 0 //滤波数
|
#define FILTER_NUM 0 //滤波数
|
||||||
|
|
||||||
typedef enum{
|
typedef enum{
|
||||||
RUCS1237_STATUS_IDLE,
|
RUCS1237_STATUS_IDLE,
|
||||||
@@ -61,10 +61,10 @@ typedef struct{
|
|||||||
RightUpCS1237Status_m Status;
|
RightUpCS1237Status_m Status;
|
||||||
uint32_t CS1237Delay1mSCnt;
|
uint32_t CS1237Delay1mSCnt;
|
||||||
|
|
||||||
int32_t AinA_AD;//AINAad数据
|
int32_t AinA_AD;//AINAad数据
|
||||||
//int32_t AinB_AD;//AINBad数据
|
//int32_t AinB_AD;//AINBad数据
|
||||||
int32_t Temp_AD;//温度ad数据
|
int32_t Temp_AD;//温度ad数据
|
||||||
int32_t Jump_AD;//内短ad数据
|
int32_t Jump_AD;//内短ad数据
|
||||||
}
|
}
|
||||||
RIGHTUP_CS1237Var_t;
|
RIGHTUP_CS1237Var_t;
|
||||||
|
|
||||||
|
|||||||
@@ -303,11 +303,11 @@ void Sx1276LoRaInit(void (*RxCallBack)(uint8_t *rBuff, uint8_t rlen))
|
|||||||
//SpreadingFactor
|
//SpreadingFactor
|
||||||
if( LoRaPara.SpreadFactor == SX1276_SF_64){
|
if( LoRaPara.SpreadFactor == SX1276_SF_64){
|
||||||
SX1276LoRaSetNbTrigPeaks(5);
|
SX1276LoRaSetNbTrigPeaks(5);
|
||||||
SX1276LoRaSetLowDatarateOptimize(true); //低数据速率设置
|
SX1276LoRaSetLowDatarateOptimize(true); //低数据速率设置
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
SX1276LoRaSetNbTrigPeaks(3);
|
SX1276LoRaSetNbTrigPeaks(3);
|
||||||
SX1276LoRaSetLowDatarateOptimize(false); //低数据速率设置
|
SX1276LoRaSetLowDatarateOptimize(false); //低数据速率设置
|
||||||
}
|
}
|
||||||
LoRaPara.RegBuff.RegModemConfig2 = (LoRaPara.RegBuff.RegModemConfig2 & RFLR_MODEMCONFIG2_SF_MASK ) | LoRaPara.SpreadFactor;
|
LoRaPara.RegBuff.RegModemConfig2 = (LoRaPara.RegBuff.RegModemConfig2 & RFLR_MODEMCONFIG2_SF_MASK ) | LoRaPara.SpreadFactor;
|
||||||
//PacketCrcOn
|
//PacketCrcOn
|
||||||
@@ -449,8 +449,8 @@ void Sx1276LoRaWakeup(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
//配置本层参数的函数
|
//配置本层参数的函数
|
||||||
//频道表
|
//频道表
|
||||||
const uint32_t gdwSx1276ChannelTbl[SX1276_CHANNEL_MAX]={
|
const uint32_t gdwSx1276ChannelTbl[SX1276_CHANNEL_MAX]={
|
||||||
FREQ_CENT-FREQ_DEV*8, FREQ_CENT-FREQ_DEV*7, FREQ_CENT-FREQ_DEV*6, FREQ_CENT-FREQ_DEV*5,
|
FREQ_CENT-FREQ_DEV*8, FREQ_CENT-FREQ_DEV*7, FREQ_CENT-FREQ_DEV*6, FREQ_CENT-FREQ_DEV*5,
|
||||||
FREQ_CENT-FREQ_DEV*4, FREQ_CENT-FREQ_DEV*3, FREQ_CENT-FREQ_DEV*2, FREQ_CENT-FREQ_DEV*1,
|
FREQ_CENT-FREQ_DEV*4, FREQ_CENT-FREQ_DEV*3, FREQ_CENT-FREQ_DEV*2, FREQ_CENT-FREQ_DEV*1,
|
||||||
|
|||||||
@@ -636,7 +636,7 @@ typedef enum{
|
|||||||
SX1276_IH_ON= (1)
|
SX1276_IH_ON= (1)
|
||||||
}Sx1276ImplicitHeaderOnType;
|
}Sx1276ImplicitHeaderOnType;
|
||||||
|
|
||||||
//可变速率
|
//可变速率
|
||||||
typedef struct _AutoSfType{
|
typedef struct _AutoSfType{
|
||||||
Sx1276SpreadFactorType Sf;
|
Sx1276SpreadFactorType Sf;
|
||||||
uint8_t ucRssiMin, ucRssiMax;
|
uint8_t ucRssiMin, ucRssiMax;
|
||||||
@@ -743,13 +743,13 @@ typedef struct {
|
|||||||
//Down Link:
|
//Down Link:
|
||||||
//CH0-47:500.3-509.7MHz
|
//CH0-47:500.3-509.7MHz
|
||||||
|
|
||||||
#define USE_915MHZ 0//=1使用915 =0使用433
|
#define USE_915MHZ 0//=1使用915 =0使用433
|
||||||
|
|
||||||
#if (USE_915MHZ == 1)
|
#if (USE_915MHZ == 1)
|
||||||
//中心频率,不定义则默认为449000000Hz
|
//中心频率,不定义则默认为449000000Hz
|
||||||
#define FREQ_CENT 915000000ul
|
#define FREQ_CENT 915000000ul
|
||||||
//860MHz-1GHz使用PA功放,不定义则默认不使用
|
//860MHz-1GHz使用PA功放,不定义则默认不使用
|
||||||
//SX127x不定义,HOPERF模块需要定义
|
//SX127x不定义,HOPERF模块需要定义
|
||||||
#define USE_LORA_860_PA
|
#define USE_LORA_860_PA
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -5,10 +5,10 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 全局变量
|
// 全局变量
|
||||||
volatile MotorState g_motorState = MOTOR_STOPPED;
|
volatile MotorState g_motorState = MOTOR_STOPPED;
|
||||||
volatile MotorCommand g_motorCmd = MOTOR_CMD_STOP;
|
volatile MotorCommand g_motorCmd = MOTOR_CMD_STOP;
|
||||||
volatile MotorDirection g_motorDirection = DIR_STOPPED; // 新增运行方向标志位
|
volatile MotorDirection g_motorDirection = DIR_STOPPED; // 新增运行方向标志位
|
||||||
volatile uint16_t g_motorSpeed = 0;
|
volatile uint16_t g_motorSpeed = 0;
|
||||||
volatile uint16_t g_accelTimer = 0;
|
volatile uint16_t g_accelTimer = 0;
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@ void DCMOTORDBGOnOff(uint8_t OnOff)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if(MCU == HC32F460JETA)
|
#if(MCU == HC32F460JETA)
|
||||||
#if(0) //旧版本PCB
|
#if(0) //旧版本PCB
|
||||||
/* Timer4 CNT */
|
/* Timer4 CNT */
|
||||||
#define TIMER4_UNIT (M4_TMR41)
|
#define TIMER4_UNIT (M4_TMR41)
|
||||||
#define TIMER4_CNT_CYCLE_VAL (500u) /* Timer4 counter cycle value */
|
#define TIMER4_CNT_CYCLE_VAL (500u) /* Timer4 counter cycle value */
|
||||||
@@ -50,7 +50,7 @@ void DCMOTORDBGOnOff(uint8_t OnOff)
|
|||||||
#define TIMER4_PWM_L_PIN (Pin13)
|
#define TIMER4_PWM_L_PIN (Pin13)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if(1) //V2.1版本PCB
|
#if(1) //V2.1版本PCB
|
||||||
/* Timer4 CNT */
|
/* Timer4 CNT */
|
||||||
#define TIMER4_UNIT (M4_TMR41)
|
#define TIMER4_UNIT (M4_TMR41)
|
||||||
#define TIMER4_CNT_CYCLE_VAL (500u) /* Timer4 counter cycle value */
|
#define TIMER4_CNT_CYCLE_VAL (500u) /* Timer4 counter cycle value */
|
||||||
@@ -76,22 +76,22 @@ uint16_t init_adc_val;
|
|||||||
uint16_t AdcInitCnt = 0;
|
uint16_t AdcInitCnt = 0;
|
||||||
|
|
||||||
|
|
||||||
#define Adc 0.80566 //3.3/4096=0.00080566 //ADC分辨率
|
#define Adc 0.80566 //3.3/4096=0.00080566 //ADC分辨率
|
||||||
|
|
||||||
uint16_t g_adc_val[ADC_CH_NUM];
|
uint16_t g_adc_val[ADC_CH_NUM];
|
||||||
extern uint16_t m_au16Adc1SaValue[ADC_CH_NUM * ADC_COLL];
|
extern uint16_t m_au16Adc1SaValue[ADC_CH_NUM * ADC_COLL];
|
||||||
|
|
||||||
/************************************* 第二部分 电压电流温度采集 **********************************************/
|
/************************************* 第二部分 电压电流温度采集 **********************************************/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Rt = Rp *exp(B*(1/T1-1/T2))
|
Rt = Rp *exp(B*(1/T1-1/T2))
|
||||||
|
|
||||||
Rt 是热敏电阻在T1温度下的阻值;
|
Rt 是热敏电阻在T1温度下的阻值;
|
||||||
Rp是热敏电阻在T2常温下的标称阻值;
|
Rp是热敏电阻在T2常温下的标称阻值;
|
||||||
exp是e的n次方,e是自然常数,就是自然对数的底数,近似等于 2.7182818;
|
exp是e的n次方,e是自然常数,就是自然对数的底数,近似等于 2.7182818;
|
||||||
B值是热敏电阻的重要参数,教程中用到的热敏电阻B值为3380;
|
B值是热敏电阻的重要参数,教程中用到的热敏电阻B值为3380;
|
||||||
这里T1和T2指的是开尔文温度,T2是常温25℃,即(273.15+25)K
|
这里T1和T2指的是开尔文温度,T2是常温25℃,即(273.15+25)K
|
||||||
T1就是所求的温度
|
T1就是所求的温度
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const float Rp = 10000.0f; /* 10K */
|
const float Rp = 10000.0f; /* 10K */
|
||||||
@@ -100,12 +100,12 @@ const float Bx = 3380.0f; /* B */
|
|||||||
const float Ka = 273.15f;
|
const float Ka = 273.15f;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 计算温度值
|
* @brief 计算温度值
|
||||||
* @param para: 温度采集对应ADC通道的值(已滤波)
|
* @param para: 温度采集对应ADC通道的值(已滤波)
|
||||||
* @note 计算温度分为两步:
|
* @note 计算温度分为两步:
|
||||||
1.根据ADC采集到的值计算当前对应的Rt
|
1.根据ADC采集到的值计算当前对应的Rt
|
||||||
2.根据Rt计算对应的温度值
|
2.根据Rt计算对应的温度值
|
||||||
* @retval 温度值
|
* @retval 温度值
|
||||||
*/
|
*/
|
||||||
float get_temp(uint16_t para)
|
float get_temp(uint16_t para)
|
||||||
{
|
{
|
||||||
@@ -113,97 +113,97 @@ float get_temp(uint16_t para)
|
|||||||
float temp;
|
float temp;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
第一步:
|
第一步:
|
||||||
Rt = 3.3 * 4700 / VTEMP - 4700 ,其中VTEMP就是温度检测通道采集回来的电压值,VTEMP = ADC值* 3.3/4096
|
Rt = 3.3 * 4700 / VTEMP - 4700 ,其中VTEMP就是温度检测通道采集回来的电压值,VTEMP = ADC值* 3.3/4096
|
||||||
由此我们可以计算出当前Rt的值:Rt = 3.3f * 4700.0f / (para * 3.3f / 4096.0f ) - 4700.0f;
|
由此我们可以计算出当前Rt的值:Rt = 3.3f * 4700.0f / (para * 3.3f / 4096.0f ) - 4700.0f;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Rt = 3.3f * 4700.0f / (para * 3.3f / 4096.0f ) - 4700.0f; /* 根据当前ADC值计算出Rt的值 */
|
Rt = 3.3f * 4700.0f / (para * 3.3f / 4096.0f ) - 4700.0f; /* 根据当前ADC值计算出Rt的值 */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
第二步:
|
第二步:
|
||||||
根据当前Rt的值来计算对应温度值:Rt = Rp *exp(B*(1/T1-1/T2))
|
根据当前Rt的值来计算对应温度值:Rt = Rp *exp(B*(1/T1-1/T2))
|
||||||
*/
|
*/
|
||||||
|
|
||||||
temp = Rt / Rp; /* 解出exp(B*(1/T1-1/T2)) ,即temp = exp(B*(1/T1-1/T2)) */
|
temp = Rt / Rp; /* 解出exp(B*(1/T1-1/T2)) ,即temp = exp(B*(1/T1-1/T2)) */
|
||||||
temp = log(temp); /* 解出B*(1/T1-1/T2) ,即temp = B*(1/T1-1/T2) */
|
temp = log(temp); /* 解出B*(1/T1-1/T2) ,即temp = B*(1/T1-1/T2) */
|
||||||
temp /= Bx; /* 解出1/T1-1/T2 ,即temp = 1/T1-1/T2 */
|
temp /= Bx; /* 解出1/T1-1/T2 ,即temp = 1/T1-1/T2 */
|
||||||
temp += (1.0f / T2); /* 解出1/T1 ,即temp = 1/T1 */
|
temp += (1.0f / T2); /* 解出1/T1 ,即temp = 1/T1 */
|
||||||
temp = 1.0f / (temp); /* 解出T1 ,即temp = T1 */
|
temp = 1.0f / (temp); /* 解出T1 ,即temp = T1 */
|
||||||
temp -= Ka; /* 计算T1对应的摄氏度 */
|
temp -= Ka; /* 计算T1对应的摄氏度 */
|
||||||
return temp; /* 返回温度值 */
|
return temp; /* 返回温度值 */
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 计算ADC的平均值(滤波)
|
* @brief 计算ADC的平均值(滤波)
|
||||||
* @param * p :存放ADC值的指针地址
|
* @param * p :存放ADC值的指针地址
|
||||||
* @note 此函数对电压、温度、电流对应的ADC值进行滤波,
|
* @note 此函数对电压、温度、电流对应的ADC值进行滤波,
|
||||||
* p[0]-p[2]对应的分别是电压、温度和电流
|
* p[0]-p[2]对应的分别是电压、温度和电流
|
||||||
* @retval 无
|
* @retval 无
|
||||||
*/
|
*/
|
||||||
void calc_adc_val(uint16_t * p)
|
void calc_adc_val(uint16_t * p)
|
||||||
{
|
{
|
||||||
uint32_t temp[3] = {0,0,0};
|
uint32_t temp[3] = {0,0,0};
|
||||||
int i;
|
int i;
|
||||||
for(i=0;i<ADC_COLL;i++) /* 循环ADC_COLL次取值,累加 */
|
for(i=0;i<ADC_COLL;i++) /* 循环ADC_COLL次取值,累加 */
|
||||||
{
|
{
|
||||||
temp[0] += m_au16Adc1SaValue[0+i*ADC_CH_NUM];
|
temp[0] += m_au16Adc1SaValue[0+i*ADC_CH_NUM];
|
||||||
temp[1] += m_au16Adc1SaValue[1+i*ADC_CH_NUM];
|
temp[1] += m_au16Adc1SaValue[1+i*ADC_CH_NUM];
|
||||||
temp[2] += m_au16Adc1SaValue[2+i*ADC_CH_NUM];
|
temp[2] += m_au16Adc1SaValue[2+i*ADC_CH_NUM];
|
||||||
}
|
}
|
||||||
temp[0] /= ADC_COLL; /* 取平均值 */
|
temp[0] /= ADC_COLL; /* 取平均值 */
|
||||||
temp[1] /= ADC_COLL;
|
temp[1] /= ADC_COLL;
|
||||||
temp[2] /= ADC_COLL;
|
temp[2] /= ADC_COLL;
|
||||||
p[0] = temp[0]; /* 存入电压ADC通道平均值 */
|
p[0] = temp[0]; /* 存入电压ADC通道平均值 */
|
||||||
p[1] = temp[1]; /* 存入温度ADC通道平均值 */
|
p[1] = temp[1]; /* 存入温度ADC通道平均值 */
|
||||||
p[2] = temp[2]; /* 存入电流ADC通道平均值 */
|
p[2] = temp[2]; /* 存入电流ADC通道平均值 */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/************************************* 第三部分 编码器测速 ****************************************************/
|
/************************************* 第三部分 编码器测速 ****************************************************/
|
||||||
|
|
||||||
Motor_TypeDef g_motor_data; /*电机参数变量*/
|
Motor_TypeDef g_motor_data; /*电机参数变量*/
|
||||||
ENCODE_TypeDef g_encode; /*编码器参数变量*/
|
ENCODE_TypeDef g_encode; /*编码器参数变量*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 电机速度计算
|
* @brief 电机速度计算
|
||||||
* @param encode_now:当前编码器总的计数值
|
* @param encode_now:当前编码器总的计数值
|
||||||
* ms:计算速度的间隔,中断1ms进入一次,例如ms = 5即5ms计算一次速度
|
* ms:计算速度的间隔,中断1ms进入一次,例如ms = 5即5ms计算一次速度
|
||||||
* @retval 无
|
* @retval 无
|
||||||
*/
|
*/
|
||||||
void speed_computer(int32_t encode_now, uint8_t ms)
|
void speed_computer(int32_t encode_now, uint8_t ms)
|
||||||
{
|
{
|
||||||
uint8_t i = 0, j = 0;
|
uint8_t i = 0, j = 0;
|
||||||
float temp = 0.0;
|
float temp = 0.0;
|
||||||
static uint8_t sp_count = 0, k = 0;
|
static uint8_t sp_count = 0, k = 0;
|
||||||
static float speed_arr[10] = {0.0}; /* 存储速度进行滤波运算 */
|
static float speed_arr[10] = {0.0}; /* 存储速度进行滤波运算 */
|
||||||
|
|
||||||
if (sp_count == ms) /* 计算一次速度 */
|
if (sp_count == ms) /* 计算一次速度 */
|
||||||
{
|
{
|
||||||
/* 计算电机转速
|
/* 计算电机转速
|
||||||
第一步 :计算ms毫秒内计数变化量
|
第一步 :计算ms毫秒内计数变化量
|
||||||
第二步 ;计算1min内计数变化量:g_encode.speed * ((1000 / ms) * 60 ,
|
第二步 ;计算1min内计数变化量:g_encode.speed * ((1000 / ms) * 60 ,
|
||||||
第三步 :除以编码器旋转一圈的计数次数(倍频倍数 * 编码器分辨率)
|
第三步 :除以编码器旋转一圈的计数次数(倍频倍数 * 编码器分辨率)
|
||||||
第四步 :除以减速比即可得出电机转速
|
第四步 :除以减速比即可得出电机转速
|
||||||
*/
|
*/
|
||||||
g_encode.encode_now = encode_now; /* 取出编码器当前计数值 */
|
g_encode.encode_now = encode_now; /* 取出编码器当前计数值 */
|
||||||
g_encode.speed = (g_encode.encode_now - g_encode.encode_old); /* 计算编码器计数值的变化量 */
|
g_encode.speed = (g_encode.encode_now - g_encode.encode_old); /* 计算编码器计数值的变化量 */
|
||||||
|
|
||||||
speed_arr[k++] = (float)(g_encode.speed * ((1000 / ms) * 60.0) / REDUCTION_RATIO / ROTO_RATIO ); /* 保存电机转速 */
|
speed_arr[k++] = (float)(g_encode.speed * ((1000 / ms) * 60.0) / REDUCTION_RATIO / ROTO_RATIO ); /* 保存电机转速 */
|
||||||
|
|
||||||
g_encode.encode_old = g_encode.encode_now; /* 保存当前编码器的值 */
|
g_encode.encode_old = g_encode.encode_now; /* 保存当前编码器的值 */
|
||||||
|
|
||||||
/* 累计10次速度值,后续进行滤波*/
|
/* 累计10次速度值,后续进行滤波*/
|
||||||
if (k == 10)
|
if (k == 10)
|
||||||
{
|
{
|
||||||
for (i = 10; i >= 1; i--) /* 冒泡排序*/
|
for (i = 10; i >= 1; i--) /* 冒泡排序*/
|
||||||
{
|
{
|
||||||
for (j = 0; j < (i - 1); j++)
|
for (j = 0; j < (i - 1); j++)
|
||||||
{
|
{
|
||||||
if (speed_arr[j] > speed_arr[j + 1]) /* 数值比较 */
|
if (speed_arr[j] > speed_arr[j + 1]) /* 数值比较 */
|
||||||
{
|
{
|
||||||
temp = speed_arr[j]; /* 数值换位 */
|
temp = speed_arr[j]; /* 数值换位 */
|
||||||
speed_arr[j] = speed_arr[j + 1];
|
speed_arr[j] = speed_arr[j + 1];
|
||||||
speed_arr[j + 1] = temp;
|
speed_arr[j + 1] = temp;
|
||||||
}
|
}
|
||||||
@@ -212,17 +212,17 @@ void speed_computer(int32_t encode_now, uint8_t ms)
|
|||||||
|
|
||||||
temp = 0.0;
|
temp = 0.0;
|
||||||
|
|
||||||
for (i = 2; i < 8; i++) /* 去除两边高低数据 */
|
for (i = 2; i < 8; i++) /* 去除两边高低数据 */
|
||||||
{
|
{
|
||||||
temp += speed_arr[i]; /* 将中间数值累加 */
|
temp += speed_arr[i]; /* 将中间数值累加 */
|
||||||
}
|
}
|
||||||
|
|
||||||
temp = (float)(temp / 6); /*求速度平均值*/
|
temp = (float)(temp / 6); /*求速度平均值*/
|
||||||
|
|
||||||
/* 一阶低通滤波
|
/* 一阶低通滤波
|
||||||
* 公式为:Y(n)= qX(n) + (1-q)Y(n-1)
|
* 公式为:Y(n)= qX(n) + (1-q)Y(n-1)
|
||||||
* 其中X(n)为本次采样值;Y(n-1)为上次滤波输出值;Y(n)为本次滤波输出值,q为滤波系数
|
* 其中X(n)为本次采样值;Y(n-1)为上次滤波输出值;Y(n)为本次滤波输出值,q为滤波系数
|
||||||
* q值越小则上一次输出对本次输出影响越大,整体曲线越平稳,但是对于速度变化的响应也会越慢
|
* q值越小则上一次输出对本次输出影响越大,整体曲线越平稳,但是对于速度变化的响应也会越慢
|
||||||
*/
|
*/
|
||||||
g_motor_data.speed = (float)( ((float)0.48 * temp) + (g_motor_data.speed * (float)0.52) );
|
g_motor_data.speed = (float)( ((float)0.48 * temp) + (g_motor_data.speed * (float)0.52) );
|
||||||
k = 0;
|
k = 0;
|
||||||
@@ -233,70 +233,70 @@ void speed_computer(int32_t encode_now, uint8_t ms)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: get_current
|
* 函数名称: get_current
|
||||||
* 功能描述: 获取工作电流函数
|
* 功能描述: 获取工作电流函数
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 电流值
|
* 返 回 值: 电流值
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
float get_current(void)
|
float get_current(void)
|
||||||
{
|
{
|
||||||
return g_motor_data.current; /* 返回工作电流值 */
|
return g_motor_data.current; /* 返回工作电流值 */
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: get_volatage
|
* 函数名称: get_volatage
|
||||||
* 功能描述: 获取工作电压函数
|
* 功能描述: 获取工作电压函数
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 电压值
|
* 返 回 值: 电压值
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
float get_volatage(void)
|
float get_volatage(void)
|
||||||
{
|
{
|
||||||
return g_motor_data.volatage; /* 返回工作电压值 */
|
return g_motor_data.volatage; /* 返回工作电压值 */
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: get_Temperature
|
* 函数名称: get_Temperature
|
||||||
* 功能描述: 获取工作温度函数
|
* 功能描述: 获取工作温度函数
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 温度值
|
* 返 回 值: 温度值
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
float get_Temperature(void)
|
float get_Temperature(void)
|
||||||
{
|
{
|
||||||
return g_motor_data.current; /* 返回工作温度值 */
|
return g_motor_data.current; /* 返回工作温度值 */
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: get_speed
|
* 函数名称: get_speed
|
||||||
* 功能描述: 获取电机实际转速值函数
|
* 功能描述: 获取电机实际转速值函数
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 电压值
|
* 返 回 值: 电压值
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
float get_speed(void)
|
float get_speed(void)
|
||||||
{
|
{
|
||||||
return g_motor_data.speed; /* 返回电机实际转速值 */
|
return g_motor_data.speed; /* 返回电机实际转速值 */
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: get_location
|
* 函数名称: get_location
|
||||||
* 功能描述: 获取电机实际位置函数
|
* 功能描述: 获取电机实际位置函数
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 电压值
|
* 返 回 值: 电压值
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
float get_location(void)
|
float get_location(void)
|
||||||
{
|
{
|
||||||
return g_motor_data.speed; /* 返回电机实际位置 */
|
return g_motor_data.speed; /* 返回电机实际位置 */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: Adc1mSRoutine
|
* 函数名称: Adc1mSRoutine
|
||||||
* 功能描述: Adc 1毫秒服务函数
|
* 功能描述: Adc 1毫秒服务函数
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
bool AdcInitStatus = false; //ADC初始化状态标志位
|
bool AdcInitStatus = false; //ADC初始化状态标志位
|
||||||
volatile bool AdcInitSta = false; //ADC电流电压采集初始化标志位
|
volatile bool AdcInitSta = false; //ADC电流电压采集初始化标志位
|
||||||
uint16_t AdcDly = 0; //ADC采样定时计数
|
uint16_t AdcDly = 0; //ADC采样定时计数
|
||||||
void Adc1mSRoutine(void)
|
void Adc1mSRoutine(void)
|
||||||
{
|
{
|
||||||
if(AdcInitStatus == false)
|
if(AdcInitStatus == false)
|
||||||
@@ -311,17 +311,17 @@ void Adc1mSRoutine(void)
|
|||||||
|
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: AdcLoopHander
|
* 函数名称: AdcLoopHander
|
||||||
* 功能描述: Adc主循环函数
|
* 功能描述: Adc主循环函数
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
void AdcLoopHander(void)
|
void AdcLoopHander(void)
|
||||||
{
|
{
|
||||||
uint32_t temp = 0;
|
uint32_t temp = 0;
|
||||||
int i;
|
int i;
|
||||||
float temp_c = 0.0;
|
float temp_c = 0.0;
|
||||||
//开机等待电流数据稳定1秒,采集稳定电流值为初始值
|
//开机等待电流数据稳定1秒,采集稳定电流值为初始值
|
||||||
if((AdcInitStatus == true) && (AdcInitSta == false))
|
if((AdcInitStatus == true) && (AdcInitSta == false))
|
||||||
{
|
{
|
||||||
ADC_Start();
|
ADC_Start();
|
||||||
@@ -335,19 +335,19 @@ void AdcLoopHander(void)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
while(DMA_GetChFlag(M4_DMA1, DmaCh0Sta) != DmaTransferComplete);
|
while(DMA_GetChFlag(M4_DMA1, DmaCh0Sta) != DmaTransferComplete);
|
||||||
for(i=0;i<ADC_COLL;i++) /* 循环ADC_COLL次取值,累加 */
|
for(i=0;i<ADC_COLL;i++) /* 循环ADC_COLL次取值,累加 */
|
||||||
{
|
{
|
||||||
init_adc_val += m_au16Adc1SaValue[2+i*ADC_CH_NUM];
|
init_adc_val += m_au16Adc1SaValue[2+i*ADC_CH_NUM];
|
||||||
if(i > 0)
|
if(i > 0)
|
||||||
{
|
{
|
||||||
init_adc_val /= 2; /* 取平均值 */
|
init_adc_val /= 2; /* 取平均值 */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DCMOTOR_DBG_LOG("init_adc_val %d.\n", init_adc_val);
|
DCMOTOR_DBG_LOG("init_adc_val %d.\n", init_adc_val);
|
||||||
AdcInitSta = true;
|
AdcInitSta = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//计算ADC采样值并滤波
|
//计算ADC采样值并滤波
|
||||||
if(AdcDly == 0)
|
if(AdcDly == 0)
|
||||||
{
|
{
|
||||||
float BatVoltage = 0;
|
float BatVoltage = 0;
|
||||||
@@ -356,7 +356,7 @@ void AdcLoopHander(void)
|
|||||||
{
|
{
|
||||||
while(DMA_GetChFlag(M4_DMA1, DmaCh0Sta) != DmaTransferComplete);
|
while(DMA_GetChFlag(M4_DMA1, DmaCh0Sta) != DmaTransferComplete);
|
||||||
DMA_Cmd(M4_DMA1, Disable);
|
DMA_Cmd(M4_DMA1, Disable);
|
||||||
calc_adc_val(g_adc_val); /* 计算ADC的平均值 */
|
calc_adc_val(g_adc_val); /* 计算ADC的平均值 */
|
||||||
|
|
||||||
// DCMOTOR_DBG_LOG("ADC1_IN1 value %d.\t Temp:%.1fC \r\n", g_adc_val[0u], get_temp((float)g_adc_val[0]*Adc));
|
// DCMOTOR_DBG_LOG("ADC1_IN1 value %d.\t Temp:%.1fC \r\n", g_adc_val[0u], get_temp((float)g_adc_val[0]*Adc));
|
||||||
// DCMOTOR_DBG_LOG("ADC2_IN2 value %d.\t Valtage:%.1fV \r\n", g_adc_val[1u], (float)g_adc_val[1]*ADC2VBUS);
|
// DCMOTOR_DBG_LOG("ADC2_IN2 value %d.\t Valtage:%.1fV \r\n", g_adc_val[1u], (float)g_adc_val[1]*ADC2VBUS);
|
||||||
@@ -365,8 +365,8 @@ void AdcLoopHander(void)
|
|||||||
|
|
||||||
// g_motor_data.current = temp_c;
|
// g_motor_data.current = temp_c;
|
||||||
|
|
||||||
g_motor_data.current = (float)((g_motor_data.current * (float)0.60) + ((float)0.40 * temp_c)); /* 一阶低通滤波 */
|
g_motor_data.current = (float)((g_motor_data.current * (float)0.60) + ((float)0.40 * temp_c)); /* 一阶低通滤波 */
|
||||||
if (abs(g_motor_data.current) <= 20) /* 过滤掉微弱浮动电流 */
|
if (abs(g_motor_data.current) <= 20) /* 过滤掉微弱浮动电流 */
|
||||||
{
|
{
|
||||||
g_motor_data.current = 0.0;
|
g_motor_data.current = 0.0;
|
||||||
}
|
}
|
||||||
@@ -429,7 +429,7 @@ void Timer41_Init(uint8_t dir)
|
|||||||
/* Timer4 OCO : Initialize OCO configuration structure */
|
/* Timer4 OCO : Initialize OCO configuration structure */
|
||||||
stcOcoInit.enOccrBufMode = OccrBufTrsfByCntZero;
|
stcOcoInit.enOccrBufMode = OccrBufTrsfByCntZero;
|
||||||
stcOcoInit.enOcmrBufMode = OcmrBufTrsfByCntZero;
|
stcOcoInit.enOcmrBufMode = OcmrBufTrsfByCntZero;
|
||||||
stcOcoInit.enPortLevel = E_OC_Port; /*输出低电平到OC端口*/
|
stcOcoInit.enPortLevel = E_OC_Port; /*输出低电平到OC端口*/
|
||||||
stcOcoInit.enOcoIntCmd = Disable;
|
stcOcoInit.enOcoIntCmd = Disable;
|
||||||
TIMER4_OCO_Init(TIMER4_UNIT, TIMER4_OCO_HIGH_CH, &stcOcoInit); /* Initialize OCO high channel */
|
TIMER4_OCO_Init(TIMER4_UNIT, TIMER4_OCO_HIGH_CH, &stcOcoInit); /* Initialize OCO high channel */
|
||||||
TIMER4_OCO_Init(TIMER4_UNIT, enOcoLowCh, &stcOcoInit); /* Initialize OCO low channel */
|
TIMER4_OCO_Init(TIMER4_UNIT, enOcoLowCh, &stcOcoInit); /* Initialize OCO low channel */
|
||||||
@@ -504,14 +504,14 @@ void Timer41_Init(uint8_t dir)
|
|||||||
PORT_SetFunc(TIMER4_PWM_L_PORT, TIMER4_PWM_L_PIN, Func_Tim4, Disable);
|
PORT_SetFunc(TIMER4_PWM_L_PORT, TIMER4_PWM_L_PIN, Func_Tim4, Disable);
|
||||||
|
|
||||||
/* Timer4 PWM: Initialize PWM configuration structure */
|
/* Timer4 PWM: Initialize PWM configuration structure */
|
||||||
//重载定时器中断
|
//重载定时器中断
|
||||||
stcPwmInit.enRtIntMaskCmd = Enable;
|
stcPwmInit.enRtIntMaskCmd = Enable;
|
||||||
//计数时钟分频
|
//计数时钟分频
|
||||||
stcPwmInit.enClkDiv = PwmPlckDiv1; /*滤波计数器和死区计数器的计数时钟分频*/
|
stcPwmInit.enClkDiv = PwmPlckDiv1; /*滤波计数器和死区计数器的计数时钟分频*/
|
||||||
//PWM输出极性控制
|
//PWM输出极性控制
|
||||||
stcPwmInit.enOutputState = E_PWM_OS; /*输出PWMH信号不改变电平,输出PWML信号反转*/
|
stcPwmInit.enOutputState = E_PWM_OS; /*输出PWMH信号不改变电平,输出PWML信号反转*/
|
||||||
//PWM输出模式
|
//PWM输出模式
|
||||||
stcPwmInit.enMode = PwmThroughMode; /*直通模式*/
|
stcPwmInit.enMode = PwmThroughMode; /*直通模式*/
|
||||||
TIMER4_PWM_Init(TIMER4_UNIT, TIMER4_PWM_CH, &stcPwmInit); /* Initialize timer4 pwm */
|
TIMER4_PWM_Init(TIMER4_UNIT, TIMER4_PWM_CH, &stcPwmInit); /* Initialize timer4 pwm */
|
||||||
|
|
||||||
/* Clear && Start CNT */
|
/* Clear && Start CNT */
|
||||||
@@ -549,8 +549,8 @@ void Timer41_Init(void)
|
|||||||
stcCntInit.enClk = Timer4CntPclk;
|
stcCntInit.enClk = Timer4CntPclk;
|
||||||
stcCntInit.enClkDiv = Timer4CntPclkDiv4; /* CNT clock divide */
|
stcCntInit.enClkDiv = Timer4CntPclkDiv4; /* CNT clock divide */
|
||||||
stcCntInit.u16Cycle = TIMER4_CNT_CYCLE_VAL;
|
stcCntInit.u16Cycle = TIMER4_CNT_CYCLE_VAL;
|
||||||
// stcCntInit.enCntMode = Timer4CntSawtoothWave; //锯齿波模式
|
// stcCntInit.enCntMode = Timer4CntSawtoothWave; //锯齿波模式
|
||||||
stcCntInit.enCntMode = Timer4CntTriangularWave; //三角波模式Timer4CntTriangularWave
|
stcCntInit.enCntMode = Timer4CntTriangularWave; //三角波模式Timer4CntTriangularWave
|
||||||
stcCntInit.enZeroIntCmd = Disable;
|
stcCntInit.enZeroIntCmd = Disable;
|
||||||
stcCntInit.enPeakIntCmd = Disable;
|
stcCntInit.enPeakIntCmd = Disable;
|
||||||
stcCntInit.enZeroIntMsk = Timer4CntIntMask0;
|
stcCntInit.enZeroIntMsk = Timer4CntIntMask0;
|
||||||
@@ -560,7 +560,7 @@ void Timer41_Init(void)
|
|||||||
/* Timer4 OCO : Initialize OCO configuration structure */
|
/* Timer4 OCO : Initialize OCO configuration structure */
|
||||||
stcOcoInit.enOccrBufMode = OccrBufDisable;
|
stcOcoInit.enOccrBufMode = OccrBufDisable;
|
||||||
stcOcoInit.enOcmrBufMode = OcmrBufDisable;
|
stcOcoInit.enOcmrBufMode = OcmrBufDisable;
|
||||||
stcOcoInit.enPortLevel = OcPortLevelHigh; /*输出高电平到OC端口*/
|
stcOcoInit.enPortLevel = OcPortLevelHigh; /*输出高电平到OC端口*/
|
||||||
stcOcoInit.enOcoIntCmd = Disable;
|
stcOcoInit.enOcoIntCmd = Disable;
|
||||||
TIMER4_OCO_Init(TIMER4_UNIT, TIMER4_OCO_HIGH_CH, &stcOcoInit); /* Initialize OCO high channel */
|
TIMER4_OCO_Init(TIMER4_UNIT, TIMER4_OCO_HIGH_CH, &stcOcoInit); /* Initialize OCO high channel */
|
||||||
TIMER4_OCO_Init(TIMER4_UNIT, enOcoLowCh, &stcOcoInit); /* Initialize OCO low channel */
|
TIMER4_OCO_Init(TIMER4_UNIT, enOcoLowCh, &stcOcoInit); /* Initialize OCO low channel */
|
||||||
@@ -629,14 +629,14 @@ void Timer41_Init(void)
|
|||||||
PORT_SetFunc(TIMER4_PWM_L_PORT, TIMER4_PWM_L_PIN, Func_Tim4, Disable);
|
PORT_SetFunc(TIMER4_PWM_L_PORT, TIMER4_PWM_L_PIN, Func_Tim4, Disable);
|
||||||
|
|
||||||
/* Timer4 PWM: Initialize PWM configuration structure */
|
/* Timer4 PWM: Initialize PWM configuration structure */
|
||||||
//重载定时器中断
|
//重载定时器中断
|
||||||
stcPwmInit.enRtIntMaskCmd = Enable;
|
stcPwmInit.enRtIntMaskCmd = Enable;
|
||||||
//计数时钟分频
|
//计数时钟分频
|
||||||
stcPwmInit.enClkDiv = PwmPlckDiv1; /*滤波计数器和死区计数器的计数时钟分频*/
|
stcPwmInit.enClkDiv = PwmPlckDiv1; /*滤波计数器和死区计数器的计数时钟分频*/
|
||||||
//PWM输出极性控制
|
//PWM输出极性控制
|
||||||
stcPwmInit.enOutputState = PwmHPwmLReverse; /*输出PWMH信号不改变电平,输出PWML信号反转*/
|
stcPwmInit.enOutputState = PwmHPwmLReverse; /*输出PWMH信号不改变电平,输出PWML信号反转*/
|
||||||
//PWM输出模式
|
//PWM输出模式
|
||||||
stcPwmInit.enMode = PwmThroughMode; /*直通模式*/
|
stcPwmInit.enMode = PwmThroughMode; /*直通模式*/
|
||||||
TIMER4_PWM_Init(TIMER4_UNIT, TIMER4_PWM_CH, &stcPwmInit); /* Initialize timer4 pwm */
|
TIMER4_PWM_Init(TIMER4_UNIT, TIMER4_PWM_CH, &stcPwmInit); /* Initialize timer4 pwm */
|
||||||
|
|
||||||
/* Clear && Start CNT */
|
/* Clear && Start CNT */
|
||||||
@@ -795,9 +795,9 @@ void Timer61B_Init(void)
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 电机初始化
|
* @brief 电机初始化
|
||||||
* @param 无
|
* @param 无
|
||||||
* @retval 无
|
* @retval 无
|
||||||
*/
|
*/
|
||||||
void dcmotor_init(void)
|
void dcmotor_init(void)
|
||||||
{
|
{
|
||||||
@@ -814,30 +814,30 @@ void dcmotor_init(void)
|
|||||||
|
|
||||||
// PORT_Init(PortA, Pin03, &stcPortInit);
|
// PORT_Init(PortA, Pin03, &stcPortInit);
|
||||||
// PORT_SetBits(PortA, Pin03);
|
// PORT_SetBits(PortA, Pin03);
|
||||||
// /* SD拉低,关闭输出 */
|
// /* SD拉低,关闭输出 */
|
||||||
//
|
//
|
||||||
Timer41_Init();
|
Timer41_Init();
|
||||||
|
|
||||||
dcmotor_stop(); /* 停止电机 */
|
dcmotor_stop(); /* 停止电机 */
|
||||||
dcmotor_dir(0); /* 设置正转 */
|
dcmotor_dir(0); /* 设置正转 */
|
||||||
dcmotor_speed(0); /* 速度设置为0 */
|
dcmotor_speed(0); /* 速度设置为0 */
|
||||||
dcmotor_start(); /* 开启电机 */
|
dcmotor_start(); /* 开启电机 */
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 电机开启
|
* @brief 电机开启
|
||||||
* @param 无
|
* @param 无
|
||||||
* @retval 无
|
* @retval 无
|
||||||
*/
|
*/
|
||||||
void dcmotor_start(void)
|
void dcmotor_start(void)
|
||||||
{
|
{
|
||||||
ENABLE_MOTOR; /* 拉高SD引脚,开启电机 */
|
ENABLE_MOTOR; /* 拉高SD引脚,开启电机 */
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 电机停止
|
* @brief 电机停止
|
||||||
* @param 无
|
* @param 无
|
||||||
* @retval 无
|
* @retval 无
|
||||||
*/
|
*/
|
||||||
void dcmotor_stop(void)
|
void dcmotor_stop(void)
|
||||||
{
|
{
|
||||||
@@ -854,10 +854,10 @@ void dcmotor_stop(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 电机旋转方向设置
|
* @brief 电机旋转方向设置
|
||||||
* @param para:方向 0正转,1反转
|
* @param para:方向 0正转,1反转
|
||||||
* @note 以电机正面,顺时针方向旋转为正转
|
* @note 以电机正面,顺时针方向旋转为正转
|
||||||
* @retval 无
|
* @retval 无
|
||||||
*/
|
*/
|
||||||
void dcmotor_dir(uint8_t para)
|
void dcmotor_dir(uint8_t para)
|
||||||
{
|
{
|
||||||
@@ -865,14 +865,14 @@ void dcmotor_dir(uint8_t para)
|
|||||||
Timer6_StopCount(M4_TMR61);
|
Timer6_StopCount(M4_TMR61);
|
||||||
Timer6_DeInit(M4_TMR61);
|
Timer6_DeInit(M4_TMR61);
|
||||||
|
|
||||||
if (para == 0) /* 正转 */
|
if (para == 0) /* 正转 */
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
Timer61A_Init();
|
Timer61A_Init();
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (para == 1) /* 反转 */
|
else if (para == 1) /* 反转 */
|
||||||
{
|
{
|
||||||
Timer61B_Init();
|
Timer61B_Init();
|
||||||
}
|
}
|
||||||
@@ -883,12 +883,12 @@ void dcmotor_dir(uint8_t para)
|
|||||||
#if(TIMER == TIMER4)
|
#if(TIMER == TIMER4)
|
||||||
TIMER4_OCO_WriteOccr(TIMER4_UNIT, TIMER4_OCO_HIGH_CH, 0);
|
TIMER4_OCO_WriteOccr(TIMER4_UNIT, TIMER4_OCO_HIGH_CH, 0);
|
||||||
TIMER4_OCO_WriteOccr(TIMER4_UNIT, enOcoLowCh, 0u);
|
TIMER4_OCO_WriteOccr(TIMER4_UNIT, enOcoLowCh, 0u);
|
||||||
if (para == 0) /* 正转 */
|
if (para == 0) /* 正转 */
|
||||||
{
|
{
|
||||||
TIMER4_OCO_WriteOccr(TIMER4_UNIT, TIMER4_OCO_HIGH_CH, 0);
|
TIMER4_OCO_WriteOccr(TIMER4_UNIT, TIMER4_OCO_HIGH_CH, 0);
|
||||||
TIMER4_OCO_WriteOccr(TIMER4_UNIT, enOcoLowCh, 0u);
|
TIMER4_OCO_WriteOccr(TIMER4_UNIT, enOcoLowCh, 0u);
|
||||||
}
|
}
|
||||||
else if (para == 1) /* 反转 */
|
else if (para == 1) /* 反转 */
|
||||||
{
|
{
|
||||||
TIMER4_OCO_WriteOccr(TIMER4_UNIT, TIMER4_OCO_HIGH_CH, 0);
|
TIMER4_OCO_WriteOccr(TIMER4_UNIT, TIMER4_OCO_HIGH_CH, 0);
|
||||||
TIMER4_OCO_WriteOccr(TIMER4_UNIT, enOcoLowCh, 0u);
|
TIMER4_OCO_WriteOccr(TIMER4_UNIT, enOcoLowCh, 0u);
|
||||||
@@ -898,9 +898,9 @@ void dcmotor_dir(uint8_t para)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 电机速度设置
|
* @brief 电机速度设置
|
||||||
* @param para:比较寄存器值
|
* @param para:比较寄存器值
|
||||||
* @retval 无
|
* @retval 无
|
||||||
*/
|
*/
|
||||||
void dcmotor_speed(uint16_t para)
|
void dcmotor_speed(uint16_t para)
|
||||||
{
|
{
|
||||||
@@ -914,14 +914,14 @@ void dcmotor_speed(uint16_t para)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if(TIMER == TIMER4)
|
#if(TIMER == TIMER4)
|
||||||
TIMER4_OCO_WriteOccr(TIMER4_UNIT, TIMER4_OCO_HIGH_CH, g_motorSpeed); //正转
|
TIMER4_OCO_WriteOccr(TIMER4_UNIT, TIMER4_OCO_HIGH_CH, g_motorSpeed); //正转
|
||||||
TIMER4_OCO_WriteOccr(TIMER4_UNIT, enOcoLowCh, g_motorSpeed); //反转
|
TIMER4_OCO_WriteOccr(TIMER4_UNIT, enOcoLowCh, g_motorSpeed); //反转
|
||||||
#endif
|
#endif
|
||||||
dcmotor_stop();
|
dcmotor_stop();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(Motor_GetDirection() == DIR_REVERSE) //反转
|
if(Motor_GetDirection() == DIR_REVERSE) //反转
|
||||||
{
|
{
|
||||||
#if(TIMER == TIMER6)
|
#if(TIMER == TIMER6)
|
||||||
Timer6_SetGeneralCmpValue(M4_TMR61, Timer6GenCompareA, g_motorSpeed); //Set General Compare RegisterA Value
|
Timer6_SetGeneralCmpValue(M4_TMR61, Timer6GenCompareA, g_motorSpeed); //Set General Compare RegisterA Value
|
||||||
@@ -929,12 +929,12 @@ void dcmotor_speed(uint16_t para)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if(TIMER == TIMER4)
|
#if(TIMER == TIMER4)
|
||||||
TIMER4_OCO_WriteOccr(TIMER4_UNIT, enOcoLowCh, g_motorSpeed); //反转
|
TIMER4_OCO_WriteOccr(TIMER4_UNIT, enOcoLowCh, g_motorSpeed); //反转
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
DCMOTOR_DBG_LOG("REVERSE\tnewSpeed = %d\r\n", g_motorSpeed);
|
DCMOTOR_DBG_LOG("REVERSE\tnewSpeed = %d\r\n", g_motorSpeed);
|
||||||
}
|
}
|
||||||
else if(Motor_GetDirection() == DIR_FORWARD) //正转
|
else if(Motor_GetDirection() == DIR_FORWARD) //正转
|
||||||
{
|
{
|
||||||
#if(TIMER == TIMER6)
|
#if(TIMER == TIMER6)
|
||||||
Timer6_SetGeneralCmpValue(M4_TMR61, Timer6GenCompareA, 10000-g_motorSpeed); //Set General Compare RegisterA Value
|
Timer6_SetGeneralCmpValue(M4_TMR61, Timer6GenCompareA, 10000-g_motorSpeed); //Set General Compare RegisterA Value
|
||||||
@@ -942,7 +942,7 @@ void dcmotor_speed(uint16_t para)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if(TIMER == TIMER4)
|
#if(TIMER == TIMER4)
|
||||||
TIMER4_OCO_WriteOccr(TIMER4_UNIT, TIMER4_OCO_HIGH_CH, g_motorSpeed); //正转
|
TIMER4_OCO_WriteOccr(TIMER4_UNIT, TIMER4_OCO_HIGH_CH, g_motorSpeed); //正转
|
||||||
#endif
|
#endif
|
||||||
DCMOTOR_DBG_LOG("FORWARD\tnewSpeed = %d\r\n", g_motorSpeed);
|
DCMOTOR_DBG_LOG("FORWARD\tnewSpeed = %d\r\n", g_motorSpeed);
|
||||||
}
|
}
|
||||||
@@ -951,10 +951,10 @@ void dcmotor_speed(uint16_t para)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 电机控制
|
* @brief 电机控制
|
||||||
* @param para: pwm比较值 ,正数电机为正转,负数为反转
|
* @param para: pwm比较值 ,正数电机为正转,负数为反转
|
||||||
* @note 根据传入的参数控制电机的转向和速度
|
* @note 根据传入的参数控制电机的转向和速度
|
||||||
* @retval 无
|
* @retval 无
|
||||||
*/
|
*/
|
||||||
void motor_pwm_set(float para)
|
void motor_pwm_set(float para)
|
||||||
{
|
{
|
||||||
@@ -969,7 +969,7 @@ void motor_pwm_set(float para)
|
|||||||
if (val > 0)
|
if (val > 0)
|
||||||
{
|
{
|
||||||
g_motorDirection = DIR_FORWARD;
|
g_motorDirection = DIR_FORWARD;
|
||||||
dcmotor_dir(0); /* 正转 */
|
dcmotor_dir(0); /* 正转 */
|
||||||
#if(TIMER == TIMER6)
|
#if(TIMER == TIMER6)
|
||||||
dcmotor_speed(10000-val);
|
dcmotor_speed(10000-val);
|
||||||
#endif
|
#endif
|
||||||
@@ -981,7 +981,7 @@ void motor_pwm_set(float para)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
g_motorDirection = DIR_REVERSE;
|
g_motorDirection = DIR_REVERSE;
|
||||||
dcmotor_dir(1); /* 反转 */
|
dcmotor_dir(1); /* 反转 */
|
||||||
#if(TIMER == TIMER6)
|
#if(TIMER == TIMER6)
|
||||||
dcmotor_speed(-val);
|
dcmotor_speed(-val);
|
||||||
#endif
|
#endif
|
||||||
@@ -996,9 +996,9 @@ void motor_pwm_set(float para)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 设置电机方向
|
// 设置电机方向
|
||||||
void Motor_SetDirection(uint8_t dir) {
|
void Motor_SetDirection(uint8_t dir) {
|
||||||
// 更新方向标志位
|
// 更新方向标志位
|
||||||
if (dir == 0) {
|
if (dir == 0) {
|
||||||
g_motorDirection = DIR_FORWARD;
|
g_motorDirection = DIR_FORWARD;
|
||||||
// Up();
|
// Up();
|
||||||
@@ -1012,32 +1012,32 @@ void Motor_SetDirection(uint8_t dir) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 电机控制接口
|
// 电机控制接口
|
||||||
void Motor_Control(MotorCommand cmd) {
|
void Motor_Control(MotorCommand cmd) {
|
||||||
g_motorCmd = cmd;
|
g_motorCmd = cmd;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取电机当前方向
|
// 获取电机当前方向
|
||||||
MotorDirection Motor_GetDirection(void) {
|
MotorDirection Motor_GetDirection(void) {
|
||||||
return g_motorDirection;
|
return g_motorDirection;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 设置电机速度
|
// 设置电机速度
|
||||||
void Motor_SetSpeed(uint16_t speed) {
|
void Motor_SetSpeed(uint16_t speed) {
|
||||||
g_motorSpeed = (speed > MAX_SPEED) ? MAX_SPEED : speed;
|
g_motorSpeed = (speed > MAX_SPEED) ? MAX_SPEED : speed;
|
||||||
|
|
||||||
// 当速度为零时,更新方向状态为停止
|
// 当速度为零时,更新方向状态为停止
|
||||||
if (g_motorSpeed == 0) {
|
if (g_motorSpeed == 0) {
|
||||||
g_motorDirection = DIR_STOPPED;
|
g_motorDirection = DIR_STOPPED;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(Motor_GetDirection() == DIR_REVERSE) //反转
|
if(Motor_GetDirection() == DIR_REVERSE) //反转
|
||||||
{
|
{
|
||||||
// Adt_SetCompareValue(M0P_ADTIM4, AdtCompareC, PWM_PERIOD - g_motorSpeed);
|
// Adt_SetCompareValue(M0P_ADTIM4, AdtCompareC, PWM_PERIOD - g_motorSpeed);
|
||||||
// DBG_LOG("REVERSE\tnewSpeed = %d\r\n", g_motorSpeed);
|
// DBG_LOG("REVERSE\tnewSpeed = %d\r\n", g_motorSpeed);
|
||||||
}
|
}
|
||||||
else if(Motor_GetDirection() == DIR_FORWARD) //正转
|
else if(Motor_GetDirection() == DIR_FORWARD) //正转
|
||||||
{
|
{
|
||||||
// Adt_SetCompareValue(M0P_ADTIM5, AdtCompareC, g_motorSpeed);
|
// Adt_SetCompareValue(M0P_ADTIM5, AdtCompareC, g_motorSpeed);
|
||||||
// DBG_LOG("FORWARD\tnewSpeed = %d\r\n", g_motorSpeed);
|
// DBG_LOG("FORWARD\tnewSpeed = %d\r\n", g_motorSpeed);
|
||||||
@@ -1145,27 +1145,27 @@ void DcmotorLoopHandler(void)
|
|||||||
{
|
{
|
||||||
Dcmotor1msStatus = false;
|
Dcmotor1msStatus = false;
|
||||||
|
|
||||||
// 电机状态机处理
|
// 电机状态机处理
|
||||||
switch (g_motorState) {
|
switch (g_motorState) {
|
||||||
case MOTOR_STOPPED:
|
case MOTOR_STOPPED:
|
||||||
// Motor_SetSpeed(0);
|
// Motor_SetSpeed(0);
|
||||||
// motor_pwm_set(0);
|
// motor_pwm_set(0);
|
||||||
dcmotor_speed(0);
|
dcmotor_speed(0);
|
||||||
|
|
||||||
// 检测新命令
|
// 检测新命令
|
||||||
if (g_motorCmd == MOTOR_CMD_FORWARD) {
|
if (g_motorCmd == MOTOR_CMD_FORWARD) {
|
||||||
Motor_SetDirection(0); // 设置正转方向
|
Motor_SetDirection(0); // 设置正转方向
|
||||||
g_motorState = MOTOR_ACCELERATING;
|
g_motorState = MOTOR_ACCELERATING;
|
||||||
accelCounter = 0;
|
accelCounter = 0;
|
||||||
// Motor_SetSpeed(ACCEL_STEP); // 初始速度
|
// Motor_SetSpeed(ACCEL_STEP); // 初始速度
|
||||||
// motor_pwm_set(ACCEL_STEP);
|
// motor_pwm_set(ACCEL_STEP);
|
||||||
dcmotor_speed(ACCEL_STEP);
|
dcmotor_speed(ACCEL_STEP);
|
||||||
}
|
}
|
||||||
else if (g_motorCmd == MOTOR_CMD_REVERSE) {
|
else if (g_motorCmd == MOTOR_CMD_REVERSE) {
|
||||||
Motor_SetDirection(1); // 设置反转方向
|
Motor_SetDirection(1); // 设置反转方向
|
||||||
g_motorState = MOTOR_ACCELERATING;
|
g_motorState = MOTOR_ACCELERATING;
|
||||||
accelCounter = 0;
|
accelCounter = 0;
|
||||||
// Motor_SetSpeed(ACCEL_STEP); // 初始速度
|
// Motor_SetSpeed(ACCEL_STEP); // 初始速度
|
||||||
// motor_pwm_set(ACCEL_STEP);
|
// motor_pwm_set(ACCEL_STEP);
|
||||||
dcmotor_speed(ACCEL_STEP);
|
dcmotor_speed(ACCEL_STEP);
|
||||||
TIMER4_CNT_ClearCountVal(TIMER4_UNIT);
|
TIMER4_CNT_ClearCountVal(TIMER4_UNIT);
|
||||||
@@ -1174,40 +1174,40 @@ void DcmotorLoopHandler(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case MOTOR_ACCELERATING:
|
case MOTOR_ACCELERATING:
|
||||||
// 加速过程
|
// 加速过程
|
||||||
if (++accelCounter >= ACCEL_INTERVAL) {
|
if (++accelCounter >= ACCEL_INTERVAL) {
|
||||||
accelCounter = 0;
|
accelCounter = 0;
|
||||||
uint16_t newSpeed = g_motorSpeed + ACCEL_STEP;
|
uint16_t newSpeed = g_motorSpeed + ACCEL_STEP;
|
||||||
|
|
||||||
if (newSpeed >= MAX_SPEED) {
|
if (newSpeed >= MAX_SPEED) {
|
||||||
newSpeed = MAX_SPEED;
|
newSpeed = MAX_SPEED;
|
||||||
g_motorState = MOTOR_RUNNING; // 达到最大速度,进入匀速
|
g_motorState = MOTOR_RUNNING; // 达到最大速度,进入匀速
|
||||||
}
|
}
|
||||||
// Motor_SetSpeed(newSpeed);
|
// Motor_SetSpeed(newSpeed);
|
||||||
// motor_pwm_set(newSpeed);
|
// motor_pwm_set(newSpeed);
|
||||||
dcmotor_speed(newSpeed);
|
dcmotor_speed(newSpeed);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检查停止命令
|
// 检查停止命令
|
||||||
if (g_motorCmd == MOTOR_CMD_STOP) {
|
if (g_motorCmd == MOTOR_CMD_STOP) {
|
||||||
g_motorState = MOTOR_DECELERATING;
|
g_motorState = MOTOR_DECELERATING;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MOTOR_RUNNING:
|
case MOTOR_RUNNING:
|
||||||
// 检查停止命令
|
// 检查停止命令
|
||||||
if (g_motorCmd == MOTOR_CMD_STOP) {
|
if (g_motorCmd == MOTOR_CMD_STOP) {
|
||||||
g_motorState = MOTOR_DECELERATING;
|
g_motorState = MOTOR_DECELERATING;
|
||||||
}
|
}
|
||||||
// 检查方向改变命令
|
// 检查方向改变命令
|
||||||
else if ((g_motorCmd == MOTOR_CMD_FORWARD && g_motorDirection != DIR_FORWARD) ||
|
else if ((g_motorCmd == MOTOR_CMD_FORWARD && g_motorDirection != DIR_FORWARD) ||
|
||||||
(g_motorCmd == MOTOR_CMD_REVERSE && g_motorDirection != DIR_REVERSE)) {
|
(g_motorCmd == MOTOR_CMD_REVERSE && g_motorDirection != DIR_REVERSE)) {
|
||||||
g_motorState = MOTOR_DECELERATING; // 需要先减速停止
|
g_motorState = MOTOR_DECELERATING; // 需要先减速停止
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MOTOR_DECELERATING:
|
case MOTOR_DECELERATING:
|
||||||
// 减速过程
|
// 减速过程
|
||||||
if (++accelCounter >= ACCEL_INTERVAL) {
|
if (++accelCounter >= ACCEL_INTERVAL) {
|
||||||
accelCounter = 0;
|
accelCounter = 0;
|
||||||
// if (g_motorSpeed > DECEL_STEP) {
|
// if (g_motorSpeed > DECEL_STEP) {
|
||||||
@@ -1219,7 +1219,7 @@ void DcmotorLoopHandler(void)
|
|||||||
// Motor_SetSpeed(0);
|
// Motor_SetSpeed(0);
|
||||||
// motor_pwm_set(0);
|
// motor_pwm_set(0);
|
||||||
dcmotor_speed(0);
|
dcmotor_speed(0);
|
||||||
g_motorState = MOTOR_STOPPED; // 减速完成,进入停止状态
|
g_motorState = MOTOR_STOPPED; // 减速完成,进入停止状态
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
#ifndef __DCMOTOR_H
|
#ifndef __DCMOTOR_H
|
||||||
#define __DCMOTOR_H
|
#define __DCMOTOR_H
|
||||||
|
|
||||||
#define ADC_CH_NUM 3 /* 需要转换的通道数目 */
|
#define ADC_CH_NUM 3 /* 需要转换的通道数目 */
|
||||||
#define ADC_COLL 100 /* 单采集次数 */
|
#define ADC_COLL 100 /* 单采集次数 */
|
||||||
#define ADC_SUM ADC_CH_NUM * ADC_COLL /* 总采集次数 */
|
#define ADC_SUM ADC_CH_NUM * ADC_COLL /* 总采集次数 */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -20,26 +20,26 @@
|
|||||||
#define TIMER4 0
|
#define TIMER4 0
|
||||||
#define TIMER6 1
|
#define TIMER6 1
|
||||||
|
|
||||||
#define TIMER TIMER4 //HC32F460单片机PWM输出控制定时器选择
|
#define TIMER TIMER4 //HC32F460单片机PWM输出控制定时器选择
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// 电机控制参数
|
// 电机控制参数
|
||||||
#define PWM_PERIOD TIM_PERIOD // PWM周期值 (ARR)
|
#define PWM_PERIOD TIM_PERIOD // PWM周期值 (ARR)
|
||||||
#define MAX_SPEED 480 // 最大速度(PWM占空比)
|
#define MAX_SPEED 480 // 最大速度(PWM占空比)
|
||||||
#define ACCEL_STEP 10 // 加速步进值
|
#define ACCEL_STEP 10 // 加速步进值
|
||||||
#define DECEL_STEP 10 // 减速步进值
|
#define DECEL_STEP 10 // 减速步进值
|
||||||
#define ACCEL_INTERVAL 10 // 加减速间隔(ms)
|
#define ACCEL_INTERVAL 10 // 加减速间隔(ms)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 电机控制命令
|
// 电机控制命令
|
||||||
typedef enum {
|
typedef enum {
|
||||||
MOTOR_CMD_STOP,
|
MOTOR_CMD_STOP,
|
||||||
MOTOR_CMD_FORWARD,
|
MOTOR_CMD_FORWARD,
|
||||||
MOTOR_CMD_REVERSE
|
MOTOR_CMD_REVERSE
|
||||||
} MotorCommand;
|
} MotorCommand;
|
||||||
|
|
||||||
// 电机运行状态机
|
// 电机运行状态机
|
||||||
typedef enum {
|
typedef enum {
|
||||||
MOTOR_STOPPED,
|
MOTOR_STOPPED,
|
||||||
MOTOR_ACCELERATING,
|
MOTOR_ACCELERATING,
|
||||||
@@ -48,7 +48,7 @@ typedef enum {
|
|||||||
} MotorState;
|
} MotorState;
|
||||||
|
|
||||||
|
|
||||||
// 电机转动方向
|
// 电机转动方向
|
||||||
typedef enum {
|
typedef enum {
|
||||||
DIR_STOPPED,
|
DIR_STOPPED,
|
||||||
DIR_FORWARD,
|
DIR_FORWARD,
|
||||||
@@ -57,19 +57,19 @@ typedef enum {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/************************************* 第一部分 电压电流温度采集 ******************************/
|
/************************************* 第一部分 电压电流温度采集 ******************************/
|
||||||
|
|
||||||
/* 电流计算公式:
|
/* 电流计算公式:
|
||||||
* I=(最终输出电压-初始参考电压)/(6*0.02)A
|
* I=(最终输出电压-初始参考电压)/(6*0.02)A
|
||||||
* ADC值转换为电压值:电压=ADC值*3.3/4096,这里电压单位为V,我们换算成mV,4096/1000=4.096,后面就直接算出为mA
|
* ADC值转换为电压值:电压=ADC值*3.3/4096,这里电压单位为V,我们换算成mV,4096/1000=4.096,后面就直接算出为mA
|
||||||
* 整合公式可以得出电流 I= (当前ADC值-初始参考ADC值)* (3.3 / 4.096 / 0.12)
|
* 整合公式可以得出电流 I= (当前ADC值-初始参考ADC值)* (3.3 / 4.096 / 0.12)
|
||||||
*/
|
*/
|
||||||
#define ADC2CURT (float)(3.3f / 4.096f / 0.12f)
|
#define ADC2CURT (float)(3.3f / 4.096f / 0.12f)
|
||||||
|
|
||||||
/* 电压计算公式:
|
/* 电压计算公式:
|
||||||
* V_POWER = V_BUS * 25
|
* V_POWER = V_BUS * 25
|
||||||
* ADC值转换为电压值:电压=ADC值*3.3/4096
|
* ADC值转换为电压值:电压=ADC值*3.3/4096
|
||||||
* 整合公式可以得出电压V_POWER= ADC值 *(3.3f * 25 / 4096)
|
* 整合公式可以得出电压V_POWER= ADC值 *(3.3f * 25 / 4096)
|
||||||
*/
|
*/
|
||||||
#define ADC2VBUS (float)(3.3f * 25 / 4096)
|
#define ADC2VBUS (float)(3.3f * 25 / 4096)
|
||||||
|
|
||||||
@@ -80,63 +80,63 @@ typedef enum {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* 停止引脚操作宏定义
|
/* 停止引脚操作宏定义
|
||||||
* 此引脚控制H桥是否生效以达到开启和关闭电机的效果
|
* 此引脚控制H桥是否生效以达到开启和关闭电机的效果
|
||||||
*/
|
*/
|
||||||
#define SHUTDOWN1_Pin Pin07
|
#define SHUTDOWN1_Pin Pin07
|
||||||
#define SHUTDOWN1_GPIO_Port PortB
|
#define SHUTDOWN1_GPIO_Port PortB
|
||||||
|
|
||||||
//#define SHUTDOWN2_Pin GPIO_PIN_2
|
//#define SHUTDOWN2_Pin GPIO_PIN_2
|
||||||
//#define SHUTDOWN2_GPIO_Port GPIOF
|
//#define SHUTDOWN2_GPIO_Port GPIOF
|
||||||
#define SHUTDOWN_GPIO_CLK_ENABLE() do{ __HAL_RCC_GPIOF_CLK_ENABLE(); }while(0) /* PF口时钟使能 */
|
#define SHUTDOWN_GPIO_CLK_ENABLE() do{ __HAL_RCC_GPIOF_CLK_ENABLE(); }while(0) /* PF口时钟使能 */
|
||||||
|
|
||||||
#if(MCU == HC32F460JETA)
|
#if(MCU == HC32F460JETA)
|
||||||
/* 电机停止引脚定义 这里默认是接口1 */
|
/* 电机停止引脚定义 这里默认是接口1 */
|
||||||
#define ENABLE_MOTOR PORT_SetBits(SHUTDOWN1_GPIO_Port,SHUTDOWN1_Pin)
|
#define ENABLE_MOTOR PORT_SetBits(SHUTDOWN1_GPIO_Port,SHUTDOWN1_Pin)
|
||||||
#define DISABLE_MOTOR PORT_ResetBits(SHUTDOWN1_GPIO_Port,SHUTDOWN1_Pin)
|
#define DISABLE_MOTOR PORT_ResetBits(SHUTDOWN1_GPIO_Port,SHUTDOWN1_Pin)
|
||||||
#endif
|
#endif
|
||||||
/******************************************************************************************/
|
/******************************************************************************************/
|
||||||
|
|
||||||
/* 编码器参数结构体 */
|
/* 编码器参数结构体 */
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
int encode_old; /* 上一次计数值 */
|
int encode_old; /* 上一次计数值 */
|
||||||
int encode_now; /* 当前计数值 */
|
int encode_now; /* 当前计数值 */
|
||||||
float speed; /* 编码器速度 */
|
float speed; /* 编码器速度 */
|
||||||
} ENCODE_TypeDef;
|
} ENCODE_TypeDef;
|
||||||
|
|
||||||
extern ENCODE_TypeDef g_encode; /* 编码器参数变量 */
|
extern ENCODE_TypeDef g_encode; /* 编码器参数变量 */
|
||||||
|
|
||||||
|
|
||||||
/************************************* 第三部分 编码器测速 ****************************************************/
|
/************************************* 第三部分 编码器测速 ****************************************************/
|
||||||
|
|
||||||
#define ROTO_RATIO 44 /* 线数*倍频系数,即11*4=44 */
|
#define ROTO_RATIO 44 /* 线数*倍频系数,即11*4=44 */
|
||||||
#define REDUCTION_RATIO 30 /* 减速比30:1 */
|
#define REDUCTION_RATIO 30 /* 减速比30:1 */
|
||||||
|
|
||||||
/* 电机参数结构体 */
|
/* 电机参数结构体 */
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
uint8_t state; /*电机状态*/
|
uint8_t state; /*电机状态*/
|
||||||
float current; /*电机电流*/
|
float current; /*电机电流*/
|
||||||
float volatage; /*电机电压*/
|
float volatage; /*电机电压*/
|
||||||
float power; /*电机功率*/
|
float power; /*电机功率*/
|
||||||
float speed; /*电机实际速度*/
|
float speed; /*电机实际速度*/
|
||||||
float location; /*电机位置*/
|
float location; /*电机位置*/
|
||||||
int32_t motor_pwm; /*设置比较值大小 */
|
int32_t motor_pwm; /*设置比较值大小 */
|
||||||
} Motor_TypeDef;
|
} Motor_TypeDef;
|
||||||
|
|
||||||
extern Motor_TypeDef g_motor_data; /*电机参数变量*/
|
extern Motor_TypeDef g_motor_data; /*电机参数变量*/
|
||||||
|
|
||||||
/*********************************************************************************************************************/
|
/*********************************************************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void dcmotor_init(void); /* 直流有刷电机初始化 */
|
void dcmotor_init(void); /* 直流有刷电机初始化 */
|
||||||
void dcmotor_start(void); /* 开启电机 */
|
void dcmotor_start(void); /* 开启电机 */
|
||||||
void dcmotor_stop(void); /* 关闭电机 */
|
void dcmotor_stop(void); /* 关闭电机 */
|
||||||
void dcmotor_dir(uint8_t para); /* 设置电机方向 */
|
void dcmotor_dir(uint8_t para); /* 设置电机方向 */
|
||||||
void dcmotor_speed(uint16_t para); /* 设置电机速度 */
|
void dcmotor_speed(uint16_t para); /* 设置电机速度 */
|
||||||
void motor_pwm_set(float para); /* 电机控制 */
|
void motor_pwm_set(float para); /* 电机控制 */
|
||||||
|
|
||||||
|
|
||||||
float get_temp(uint16_t para);
|
float get_temp(uint16_t para);
|
||||||
@@ -147,17 +147,17 @@ void calc_adc_val(uint16_t * p);
|
|||||||
|
|
||||||
void Encoder (void);
|
void Encoder (void);
|
||||||
|
|
||||||
//外部调用接口函数
|
//外部调用接口函数
|
||||||
MotorDirection Motor_GetDirection(void);/* 获取电机转动方向 */
|
MotorDirection Motor_GetDirection(void);/* 获取电机转动方向 */
|
||||||
void Motor_Control(MotorCommand cmd); /* 电机控制 */
|
void Motor_Control(MotorCommand cmd); /* 电机控制 */
|
||||||
void Dcmotor1msRoutine(void);
|
void Dcmotor1msRoutine(void);
|
||||||
void DcmotorLoopHandler(void);
|
void DcmotorLoopHandler(void);
|
||||||
|
|
||||||
float get_current(void); /* 获取工作电流 */
|
float get_current(void); /* 获取工作电流 */
|
||||||
float get_volatage(void); /* 获取工作电压 */
|
float get_volatage(void); /* 获取工作电压 */
|
||||||
float get_Temperature(void); /* 获取工作温度 */
|
float get_Temperature(void); /* 获取工作温度 */
|
||||||
float get_speed(void); /* 获取电机转速 */
|
float get_speed(void); /* 获取电机转速 */
|
||||||
float get_location(void); /* 获取电机位置 */
|
float get_location(void); /* 获取电机位置 */
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -11,11 +11,11 @@ static bool MMC5983IntFlag;
|
|||||||
static MMC5983Var_t MMC5983Var;
|
static MMC5983Var_t MMC5983Var;
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: MMC5983_Write_Reg
|
* 函数名称: MMC5983_Write_Reg
|
||||||
* 功能描述: MMC5983写寄存器
|
* 功能描述: MMC5983写寄存器
|
||||||
* 参 数: reg 寄存器地址
|
* 参 数: reg 寄存器地址
|
||||||
val 寄存器数据
|
val 寄存器数据
|
||||||
* 返 回 值: 成功返回true,失败返回false
|
* 返 回 值: 成功返回true,失败返回false
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
static bool MMC5983_Write_Reg(uint8_t reg, uint8_t val)
|
static bool MMC5983_Write_Reg(uint8_t reg, uint8_t val)
|
||||||
{
|
{
|
||||||
@@ -23,10 +23,10 @@ static bool MMC5983_Write_Reg(uint8_t reg, uint8_t val)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: MMC5983_Read_Reg
|
* 函数名称: MMC5983_Read_Reg
|
||||||
* 功能描述: MMC5983读寄存器
|
* 功能描述: MMC5983读寄存器
|
||||||
* 参 数: reg 寄存器地址
|
* 参 数: reg 寄存器地址
|
||||||
* 返 回 值: 返回寄存器值
|
* 返 回 值: 返回寄存器值
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
static uint8_t MMC5983_Read_Reg(uint8_t reg)
|
static uint8_t MMC5983_Read_Reg(uint8_t reg)
|
||||||
{
|
{
|
||||||
@@ -37,12 +37,12 @@ static uint8_t MMC5983_Read_Reg(uint8_t reg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: MMC5983_Read_Buffer
|
* 函数名称: MMC5983_Read_Buffer
|
||||||
* 功能描述: MMC5983读数据
|
* 功能描述: MMC5983读数据
|
||||||
* 参 数: reg 寄存器地址
|
* 参 数: reg 寄存器地址
|
||||||
buffer 读取数据输出缓存入口
|
buffer 读取数据输出缓存入口
|
||||||
len 读取长度
|
len 读取长度
|
||||||
* 返 回 值: 成功返回true,失败返回false
|
* 返 回 值: 成功返回true,失败返回false
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
static bool MMC5983_Read_Buffer(uint8_t reg, void *buffer, uint8_t len)
|
static bool MMC5983_Read_Buffer(uint8_t reg, void *buffer, uint8_t len)
|
||||||
{
|
{
|
||||||
@@ -50,27 +50,27 @@ static bool MMC5983_Read_Buffer(uint8_t reg, void *buffer, uint8_t len)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: MMC5983StartCov
|
* 函数名称: MMC5983StartCov
|
||||||
* 功能描述: MMC5983开启连续转换
|
* 功能描述: MMC5983开启连续转换
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
static void MMC5983StartCov(void)
|
static void MMC5983StartCov(void)
|
||||||
{
|
{
|
||||||
MMC5983RegCtrl2 Ctrl2Reg; //开启/关闭连续转换
|
MMC5983RegCtrl2 Ctrl2Reg; //开启/关闭连续转换
|
||||||
Ctrl2Reg.Byte = 0x00;
|
Ctrl2Reg.Byte = 0x00;
|
||||||
Ctrl2Reg.Bit.Cm_freq = 0x04;
|
Ctrl2Reg.Bit.Cm_freq = 0x04;
|
||||||
Ctrl2Reg.Bit.Cmm_en = 1; //连续设1,单次设0
|
Ctrl2Reg.Bit.Cmm_en = 1; //连续设1,单次设0
|
||||||
Ctrl2Reg.Bit.Prd_set = 3;
|
Ctrl2Reg.Bit.Prd_set = 3;
|
||||||
Ctrl2Reg.Bit.En_prd_set = 1; //连续设1,单次设0
|
Ctrl2Reg.Bit.En_prd_set = 1; //连续设1,单次设0
|
||||||
MMC5983_Write_Reg(MMC5983_CTRL_2, Ctrl2Reg.Byte);
|
MMC5983_Write_Reg(MMC5983_CTRL_2, Ctrl2Reg.Byte);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: MMC5983_Init
|
* 函数名称: MMC5983_Init
|
||||||
* 功能描述: MMC5983初始化
|
* 功能描述: MMC5983初始化
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
static void MMC5983_Init(void)
|
static void MMC5983_Init(void)
|
||||||
{
|
{
|
||||||
@@ -93,12 +93,12 @@ static void MMC5983_Init(void)
|
|||||||
MMC5983_Write_Reg(MMC5983_CTRL_1, Ctrl1Reg.Byte);
|
MMC5983_Write_Reg(MMC5983_CTRL_1, Ctrl1Reg.Byte);
|
||||||
MMC5983Delay(15);
|
MMC5983Delay(15);
|
||||||
|
|
||||||
MMC5983RegCtrl2 Ctrl2Reg; //开启/关闭连续转换
|
MMC5983RegCtrl2 Ctrl2Reg; //开启/关闭连续转换
|
||||||
Ctrl2Reg.Byte = 0x00;
|
Ctrl2Reg.Byte = 0x00;
|
||||||
Ctrl2Reg.Bit.Cm_freq = 0x04;
|
Ctrl2Reg.Bit.Cm_freq = 0x04;
|
||||||
Ctrl2Reg.Bit.Cmm_en = 0; //连续设1,单次设0
|
Ctrl2Reg.Bit.Cmm_en = 0; //连续设1,单次设0
|
||||||
Ctrl2Reg.Bit.Prd_set = 3;
|
Ctrl2Reg.Bit.Prd_set = 3;
|
||||||
Ctrl2Reg.Bit.En_prd_set = 0; //连续设1,单次设0
|
Ctrl2Reg.Bit.En_prd_set = 0; //连续设1,单次设0
|
||||||
MMC5983_Write_Reg(MMC5983_CTRL_2, Ctrl2Reg.Byte);
|
MMC5983_Write_Reg(MMC5983_CTRL_2, Ctrl2Reg.Byte);
|
||||||
|
|
||||||
MMC5983RegCtrl3 Ctrl3Reg;
|
MMC5983RegCtrl3 Ctrl3Reg;
|
||||||
@@ -121,12 +121,12 @@ static void MMC5983_Init(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: MMC5983_Read
|
* 函数名称: MMC5983_Read
|
||||||
* 功能描述: MMC5983读取原始数据
|
* 功能描述: MMC5983读取原始数据
|
||||||
* 参 数: MagAdcX X轴数据
|
* 参 数: MagAdcX X轴数据
|
||||||
MagAdcY Y轴数据
|
MagAdcY Y轴数据
|
||||||
MagAdcZ Z轴数据
|
MagAdcZ Z轴数据
|
||||||
* 返 回 值: 成功返回true,失败返回false
|
* 返 回 值: 成功返回true,失败返回false
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
static bool MMC5983_Read(int32_t *MagAdcX, int32_t *MagAdcY, int32_t *MagAdcZ)
|
static bool MMC5983_Read(int32_t *MagAdcX, int32_t *MagAdcY, int32_t *MagAdcZ)
|
||||||
{
|
{
|
||||||
@@ -142,10 +142,10 @@ static bool MMC5983_Read(int32_t *MagAdcX, int32_t *MagAdcY, int32_t *MagAdcZ)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: MMC5983_Get_Mag
|
* 函数名称: MMC5983_Get_Mag
|
||||||
* 功能描述: 外部获取MMC5983磁场强度数据
|
* 功能描述: 外部获取MMC5983磁场强度数据
|
||||||
* 参 数: mag 读取数据输出缓存入口
|
* 参 数: mag 读取数据输出缓存入口
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
void MMC5983_Get_Mag(float *mag)
|
void MMC5983_Get_Mag(float *mag)
|
||||||
{
|
{
|
||||||
@@ -164,10 +164,10 @@ void MMC5983_Get_Mag(float *mag)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: MMC5983LoopHandler
|
* 函数名称: MMC5983LoopHandler
|
||||||
* 功能描述: MMC5983循环处理函数
|
* 功能描述: MMC5983循环处理函数
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
extern void MmcDataProcessCallBack(float *Mag);
|
extern void MmcDataProcessCallBack(float *Mag);
|
||||||
|
|
||||||
@@ -251,16 +251,16 @@ void MMC5983LoopHandler(void)
|
|||||||
case MMC5983_STATUS_STOP:{
|
case MMC5983_STATUS_STOP:{
|
||||||
MMC5983Stop();
|
MMC5983Stop();
|
||||||
MMC5983Var.Status = MMC5983_STATUS_IDLE;
|
MMC5983Var.Status = MMC5983_STATUS_IDLE;
|
||||||
//MMC5983Var.Status = MMC5983_STATUS_START;//持续工作
|
//MMC5983Var.Status = MMC5983_STATUS_START;//持续工作
|
||||||
break;}
|
break;}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: LeftMMC59831mSRoutine
|
* 函数名称: LeftMMC59831mSRoutine
|
||||||
* 功能描述: MMC59831ms时基循环处理函数
|
* 功能描述: MMC59831ms时基循环处理函数
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
void MMC59831mSRoutine(void)
|
void MMC59831mSRoutine(void)
|
||||||
{
|
{
|
||||||
@@ -269,10 +269,10 @@ void MMC59831mSRoutine(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: LeftMMC5983Init
|
* 函数名称: LeftMMC5983Init
|
||||||
* 功能描述: MMC5983初始化
|
* 功能描述: MMC5983初始化
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
void MMC5983Init(void)
|
void MMC5983Init(void)
|
||||||
{
|
{
|
||||||
@@ -285,10 +285,10 @@ void MMC5983Init(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: LeftMMC5983Start
|
* 函数名称: LeftMMC5983Start
|
||||||
* 功能描述: MMC5983启动
|
* 功能描述: MMC5983启动
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
void MMC5983Start(void)
|
void MMC5983Start(void)
|
||||||
{
|
{
|
||||||
@@ -301,21 +301,21 @@ void MMC5983Start(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: LeftMMC5983StartRead
|
* 函数名称: LeftMMC5983StartRead
|
||||||
* 功能描述: MMC5983启动读取
|
* 功能描述: MMC5983启动读取
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
void MMC5983StartRead(void)
|
void MMC5983StartRead(void)
|
||||||
{
|
{
|
||||||
MMC5983_Init();//读取时重新初始化
|
MMC5983_Init();//读取时重新初始化
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: MMC5983Stop
|
* 函数名称: MMC5983Stop
|
||||||
* 功能描述: MMC5983停止
|
* 功能描述: MMC5983停止
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
void MMC5983Stop(void)
|
void MMC5983Stop(void)
|
||||||
{
|
{
|
||||||
@@ -331,10 +331,10 @@ void MMC5983Stop(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: LeftMMC5983IntCallBack
|
* 函数名称: LeftMMC5983IntCallBack
|
||||||
* 功能描述: MMC5983中断回调
|
* 功能描述: MMC5983中断回调
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
void MMC5983IntCallBack(void)
|
void MMC5983IntCallBack(void)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -11,20 +11,20 @@
|
|||||||
#define CRC16_BASE 0xA001
|
#define CRC16_BASE 0xA001
|
||||||
|
|
||||||
|
|
||||||
// 峰值谷值检查结果结构体
|
// 峰值谷值检查结果结构体
|
||||||
typedef struct {
|
typedef struct {
|
||||||
bool peaks_positive; // 所有峰值是否大于0
|
bool peaks_positive; // 所有峰值是否大于0
|
||||||
bool valleys_negative; // 所有谷值是否小于0
|
bool valleys_negative; // 所有谷值是否小于0
|
||||||
int peak_count; // 检测到的峰值数量
|
int peak_count; // 检测到的峰值数量
|
||||||
int valley_count; // 检测到的谷值数量
|
int valley_count; // 检测到的谷值数量
|
||||||
} PeakValleyCheck;
|
} PeakValleyCheck;
|
||||||
|
|
||||||
// 趋势分析结果结构体
|
// 趋势分析结果结构体
|
||||||
typedef struct {
|
typedef struct {
|
||||||
double slope; // 线性斜率
|
double slope; // 线性斜率
|
||||||
int sign_changes; // 符号变化次数
|
int sign_changes; // 符号变化次数
|
||||||
char trend_type; // 趋势类型
|
char trend_type; // 趋势类型
|
||||||
char steepness; // 陡峭度
|
char steepness; // 陡峭度
|
||||||
} TrendResult;
|
} TrendResult;
|
||||||
|
|
||||||
PeakValleyCheck check_peaks_valleys(int data[], int length);
|
PeakValleyCheck check_peaks_valleys(int data[], int length);
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
void vcom_Send( char *format, ... );
|
void vcom_Send( char *format, ... );
|
||||||
void vcom_Send2(uint8_t *sData, uint16_t len);
|
void vcom_Send2(uint8_t *sData, uint16_t len);
|
||||||
|
|
||||||
#define DBG_LOG2(x, y) vcom_Send2(x, y) //打印长度超过缓存DEBUG_BUFF_SIZE_MAX的信息
|
#define DBG_LOG2(x, y) vcom_Send2(x, y) //打印长度超过缓存DEBUG_BUFF_SIZE_MAX的信息
|
||||||
#define DBG_LOG(...) vcom_Send(__VA_ARGS__)
|
#define DBG_LOG(...) vcom_Send(__VA_ARGS__)
|
||||||
#define DBG_LOG_F(fmt,arg...) LOG("[%s] "fmt,__FUNCTION__,##arg)
|
#define DBG_LOG_F(fmt,arg...) LOG("[%s] "fmt,__FUNCTION__,##arg)
|
||||||
|
|
||||||
|
|||||||
@@ -9,28 +9,28 @@
|
|||||||
#include "hc32_ddl.h"
|
#include "hc32_ddl.h"
|
||||||
|
|
||||||
|
|
||||||
/*模块启用与关闭*/
|
/*模块启用与关闭*/
|
||||||
#define USE_DEBUG 1 //DEBUG开关,0、关闭,1、启用
|
#define USE_DEBUG 1 //DEBUG开关,0、关闭,1、启用
|
||||||
#define USE_AD 1 //AD获取选择,0、关闭,1、启用
|
#define USE_AD 1 //AD获取选择,0、关闭,1、启用
|
||||||
#define USE_WDT 0 //看门狗选择,0、关闭,1启用
|
#define USE_WDT 0 //看门狗选择,0、关闭,1启用
|
||||||
#define USE_EXFALSE 0 //外部FALSE存储选择,0、关闭,1、启用
|
#define USE_EXFALSE 0 //外部FALSE存储选择,0、关闭,1、启用
|
||||||
#define USE_RTC 0 //RTC时钟开关,0、关闭,1、开启
|
#define USE_RTC 0 //RTC时钟开关,0、关闭,1、开启
|
||||||
#define USE_LPTIM0 0 //LPTIM0开关,0、关闭,1、开启
|
#define USE_LPTIM0 0 //LPTIM0开关,0、关闭,1、开启
|
||||||
#define USE_DMA 1 //DMA开关,0、关闭,1、开启
|
#define USE_DMA 1 //DMA开关,0、关闭,1、开启
|
||||||
#define USE_RS485 0 //RS485开关,0、关闭,1、启用
|
#define USE_RS485 0 //RS485开关,0、关闭,1、启用
|
||||||
#define USE_I2C1 0 //I2C1开关,0、关闭,1、启用
|
#define USE_I2C1 0 //I2C1开关,0、关闭,1、启用
|
||||||
#define USE_SPI1 0 //SPI1开关,0、关闭,1、启用
|
#define USE_SPI1 0 //SPI1开关,0、关闭,1、启用
|
||||||
#define USE_SPI3 0 //SPI3开关,0、关闭,1、启用
|
#define USE_SPI3 0 //SPI3开关,0、关闭,1、启用
|
||||||
#define USE_USART3 1
|
#define USE_USART3 1
|
||||||
|
|
||||||
#define USE_BOOTLOADER 0 //BOOTLOADER开关,0、关闭,1、启用
|
#define USE_BOOTLOADER 0 //BOOTLOADER开关,0、关闭,1、启用
|
||||||
|
|
||||||
#define USE_CS1237_LEFTUP 1 //左上CS1237开关,0、关闭,1、启用
|
#define USE_CS1237_LEFTUP 1 //左上CS1237开关,0、关闭,1、启用
|
||||||
#define USE_CS1237_LEFTLOW 1 //左下CS1237开关,0、关闭,1、启用
|
#define USE_CS1237_LEFTLOW 1 //左下CS1237开关,0、关闭,1、启用
|
||||||
#define USE_CS1237_RIGHTUP 1 //右上CS1237开关,0、关闭,1、启用
|
#define USE_CS1237_RIGHTUP 1 //右上CS1237开关,0、关闭,1、启用
|
||||||
#define USE_CS1237_RIGHTLOW 1 //右下CS1237开关,0、关闭,1、启用
|
#define USE_CS1237_RIGHTLOW 1 //右下CS1237开关,0、关闭,1、启用
|
||||||
|
|
||||||
#define USE_AGC 1 //算法控制开关,0、关闭,1、启用
|
#define USE_AGC 1 //算法控制开关,0、关闭,1、启用
|
||||||
//<<---------------------------- MCU -------------------------------->>
|
//<<---------------------------- MCU -------------------------------->>
|
||||||
//< DEBUG
|
//< DEBUG
|
||||||
#if(USE_DEBUG == 1)
|
#if(USE_DEBUG == 1)
|
||||||
@@ -142,103 +142,103 @@
|
|||||||
#define RTC_IRQn Int001_IRQn
|
#define RTC_IRQn Int001_IRQn
|
||||||
#endif
|
#endif
|
||||||
//<<----------------------------- CS1237 ------------------------------->>
|
//<<----------------------------- CS1237 ------------------------------->>
|
||||||
//< 左上 CS1237
|
//< 左上 CS1237
|
||||||
#if(USE_CS1237_LEFTUP == 1)
|
#if(USE_CS1237_LEFTUP == 1)
|
||||||
#define LEFTUP_CS1237_IRQn (Int001_IRQn)
|
#define LEFTUP_CS1237_IRQn (Int001_IRQn)
|
||||||
#define LEFTUP_CS1237_DOUT_PORTx (PortB)
|
#define LEFTUP_CS1237_DOUT_PORTx (PortB)
|
||||||
#define LEFTUP_CS1237_DOUT_PINx (Pin10)
|
#define LEFTUP_CS1237_DOUT_PINx (Pin10)
|
||||||
#define SET_LEFTUP_CS1237_DOUT() PORT_SetBits(LEFTUP_CS1237_DOUT_PORTx, LEFTUP_CS1237_DOUT_PINx)//拉高
|
#define SET_LEFTUP_CS1237_DOUT() PORT_SetBits(LEFTUP_CS1237_DOUT_PORTx, LEFTUP_CS1237_DOUT_PINx)//拉高
|
||||||
#define CLR_LEFTUP_CS1237_DOUT() PORT_ResetBits(LEFTUP_CS1237_DOUT_PORTx, LEFTUP_CS1237_DOUT_PINx)//拉低
|
#define CLR_LEFTUP_CS1237_DOUT() PORT_ResetBits(LEFTUP_CS1237_DOUT_PORTx, LEFTUP_CS1237_DOUT_PINx)//拉低
|
||||||
#define GET_LEFTUP_CS1237_DOUT() PORT_GetBit(LEFTUP_CS1237_DOUT_PORTx, LEFTUP_CS1237_DOUT_PINx)
|
#define GET_LEFTUP_CS1237_DOUT() PORT_GetBit(LEFTUP_CS1237_DOUT_PORTx, LEFTUP_CS1237_DOUT_PINx)
|
||||||
|
|
||||||
#define LEFTUP_CS1237_SCLK_PORTx (PortB)
|
#define LEFTUP_CS1237_SCLK_PORTx (PortB)
|
||||||
#define LEFTUP_CS1237_SCLK_PINx (Pin02)
|
#define LEFTUP_CS1237_SCLK_PINx (Pin02)
|
||||||
#define SET_LEFTUP_CS1237_SCLK() PORT_SetBits(LEFTUP_CS1237_SCLK_PORTx, LEFTUP_CS1237_SCLK_PINx)//拉高
|
#define SET_LEFTUP_CS1237_SCLK() PORT_SetBits(LEFTUP_CS1237_SCLK_PORTx, LEFTUP_CS1237_SCLK_PINx)//拉高
|
||||||
#define CLR_LEFTUP_CS1237_SCLK() PORT_ResetBits(LEFTUP_CS1237_SCLK_PORTx, LEFTUP_CS1237_SCLK_PINx)//拉低
|
#define CLR_LEFTUP_CS1237_SCLK() PORT_ResetBits(LEFTUP_CS1237_SCLK_PORTx, LEFTUP_CS1237_SCLK_PINx)//拉低
|
||||||
#endif
|
#endif
|
||||||
//< 左下 CS1237
|
//< 左下 CS1237
|
||||||
#if(USE_CS1237_LEFTLOW == 1)
|
#if(USE_CS1237_LEFTLOW == 1)
|
||||||
#define LEFTLOW_CS1237_IRQn (Int002_IRQn)
|
#define LEFTLOW_CS1237_IRQn (Int002_IRQn)
|
||||||
#define LEFTLOW_CS1237_DOUT_PORTx (PortB)
|
#define LEFTLOW_CS1237_DOUT_PORTx (PortB)
|
||||||
#define LEFTLOW_CS1237_DOUT_PINx (Pin01)
|
#define LEFTLOW_CS1237_DOUT_PINx (Pin01)
|
||||||
#define SET_LEFTLOW_CS1237_DOUT() PORT_SetBits(LEFTLOW_CS1237_DOUT_PORTx, LEFTLOW_CS1237_DOUT_PINx)//拉高
|
#define SET_LEFTLOW_CS1237_DOUT() PORT_SetBits(LEFTLOW_CS1237_DOUT_PORTx, LEFTLOW_CS1237_DOUT_PINx)//拉高
|
||||||
#define CLR_LEFTLOW_CS1237_DOUT() PORT_ResetBits(LEFTLOW_CS1237_DOUT_PORTx, LEFTLOW_CS1237_DOUT_PINx)//拉低
|
#define CLR_LEFTLOW_CS1237_DOUT() PORT_ResetBits(LEFTLOW_CS1237_DOUT_PORTx, LEFTLOW_CS1237_DOUT_PINx)//拉低
|
||||||
#define GET_LEFTLOW_CS1237_DOUT() PORT_GetBit(LEFTLOW_CS1237_DOUT_PORTx, LEFTLOW_CS1237_DOUT_PINx)
|
#define GET_LEFTLOW_CS1237_DOUT() PORT_GetBit(LEFTLOW_CS1237_DOUT_PORTx, LEFTLOW_CS1237_DOUT_PINx)
|
||||||
|
|
||||||
#define LEFTLOW_CS1237_SCLK_PORTx (PortB)
|
#define LEFTLOW_CS1237_SCLK_PORTx (PortB)
|
||||||
#define LEFTLOW_CS1237_SCLK_PINx (Pin00)
|
#define LEFTLOW_CS1237_SCLK_PINx (Pin00)
|
||||||
#define SET_LEFTLOW_CS1237_SCLK() PORT_SetBits(LEFTLOW_CS1237_SCLK_PORTx, LEFTLOW_CS1237_SCLK_PINx)//拉高
|
#define SET_LEFTLOW_CS1237_SCLK() PORT_SetBits(LEFTLOW_CS1237_SCLK_PORTx, LEFTLOW_CS1237_SCLK_PINx)//拉高
|
||||||
#define CLR_LEFTLOW_CS1237_SCLK() PORT_ResetBits(LEFTLOW_CS1237_SCLK_PORTx, LEFTLOW_CS1237_SCLK_PINx)//拉低
|
#define CLR_LEFTLOW_CS1237_SCLK() PORT_ResetBits(LEFTLOW_CS1237_SCLK_PORTx, LEFTLOW_CS1237_SCLK_PINx)//拉低
|
||||||
#endif
|
#endif
|
||||||
//< 右上 CS1237
|
//< 右上 CS1237
|
||||||
#if(USE_CS1237_RIGHTUP == 1)
|
#if(USE_CS1237_RIGHTUP == 1)
|
||||||
#define RIGHTUP_CS1237_IRQn (Int003_IRQn)
|
#define RIGHTUP_CS1237_IRQn (Int003_IRQn)
|
||||||
#define RIGHTUP_CS1237_DOUT_PORTx (PortA)
|
#define RIGHTUP_CS1237_DOUT_PORTx (PortA)
|
||||||
#define RIGHTUP_CS1237_DOUT_PINx (Pin04)
|
#define RIGHTUP_CS1237_DOUT_PINx (Pin04)
|
||||||
#define SET_RIGHTUP_CS1237_DOUT() PORT_SetBits(RIGHTUP_CS1237_DOUT_PORTx, RIGHTUP_CS1237_DOUT_PINx)//拉高
|
#define SET_RIGHTUP_CS1237_DOUT() PORT_SetBits(RIGHTUP_CS1237_DOUT_PORTx, RIGHTUP_CS1237_DOUT_PINx)//拉高
|
||||||
#define CLR_RIGHTUP_CS1237_DOUT() PORT_ResetBits(RIGHTUP_CS1237_DOUT_PORTx, RIGHTUP_CS1237_DOUT_PINx)//拉低
|
#define CLR_RIGHTUP_CS1237_DOUT() PORT_ResetBits(RIGHTUP_CS1237_DOUT_PORTx, RIGHTUP_CS1237_DOUT_PINx)//拉低
|
||||||
#define GET_RIGHTUP_CS1237_DOUT() PORT_GetBit(RIGHTUP_CS1237_DOUT_PORTx, RIGHTUP_CS1237_DOUT_PINx)
|
#define GET_RIGHTUP_CS1237_DOUT() PORT_GetBit(RIGHTUP_CS1237_DOUT_PORTx, RIGHTUP_CS1237_DOUT_PINx)
|
||||||
|
|
||||||
#define RIGHTUP_CS1237_SCLK_PORTx (PortA)
|
#define RIGHTUP_CS1237_SCLK_PORTx (PortA)
|
||||||
#define RIGHTUP_CS1237_SCLK_PINx (Pin05)
|
#define RIGHTUP_CS1237_SCLK_PINx (Pin05)
|
||||||
#define SET_RIGHTUP_CS1237_SCLK() PORT_SetBits(RIGHTUP_CS1237_SCLK_PORTx, RIGHTUP_CS1237_SCLK_PINx)//拉高
|
#define SET_RIGHTUP_CS1237_SCLK() PORT_SetBits(RIGHTUP_CS1237_SCLK_PORTx, RIGHTUP_CS1237_SCLK_PINx)//拉高
|
||||||
#define CLR_RIGHTUP_CS1237_SCLK() PORT_ResetBits(RIGHTUP_CS1237_SCLK_PORTx, RIGHTUP_CS1237_SCLK_PINx)//拉低
|
#define CLR_RIGHTUP_CS1237_SCLK() PORT_ResetBits(RIGHTUP_CS1237_SCLK_PORTx, RIGHTUP_CS1237_SCLK_PINx)//拉低
|
||||||
#endif
|
#endif
|
||||||
//< 右下 CS1237
|
//< 右下 CS1237
|
||||||
#if(USE_CS1237_RIGHTLOW == 1)
|
#if(USE_CS1237_RIGHTLOW == 1)
|
||||||
#define RIGHTLOW_CS1237_IRQn (Int004_IRQn)
|
#define RIGHTLOW_CS1237_IRQn (Int004_IRQn)
|
||||||
#define RIGHTLOW_CS1237_DOUT_PORTx (PortA)
|
#define RIGHTLOW_CS1237_DOUT_PORTx (PortA)
|
||||||
#define RIGHTLOW_CS1237_DOUT_PINx (Pin06)
|
#define RIGHTLOW_CS1237_DOUT_PINx (Pin06)
|
||||||
#define SET_RIGHTLOW_CS1237_DOUT() PORT_SetBits(RIGHTLOW_CS1237_DOUT_PORTx, RIGHTLOW_CS1237_DOUT_PINx)//拉高
|
#define SET_RIGHTLOW_CS1237_DOUT() PORT_SetBits(RIGHTLOW_CS1237_DOUT_PORTx, RIGHTLOW_CS1237_DOUT_PINx)//拉高
|
||||||
#define CLR_RIGHTLOW_CS1237_DOUT() PORT_ResetBits(RIGHTLOW_CS1237_DOUT_PORTx, RIGHTLOW_CS1237_DOUT_PINx)//拉低
|
#define CLR_RIGHTLOW_CS1237_DOUT() PORT_ResetBits(RIGHTLOW_CS1237_DOUT_PORTx, RIGHTLOW_CS1237_DOUT_PINx)//拉低
|
||||||
#define GET_RIGHTLOW_CS1237_DOUT() PORT_GetBit(RIGHTLOW_CS1237_DOUT_PORTx, RIGHTLOW_CS1237_DOUT_PINx)
|
#define GET_RIGHTLOW_CS1237_DOUT() PORT_GetBit(RIGHTLOW_CS1237_DOUT_PORTx, RIGHTLOW_CS1237_DOUT_PINx)
|
||||||
|
|
||||||
#define RIGHTLOW_CS1237_SCLK_PORTx (PortA)
|
#define RIGHTLOW_CS1237_SCLK_PORTx (PortA)
|
||||||
#define RIGHTLOW_CS1237_SCLK_PINx (Pin07)
|
#define RIGHTLOW_CS1237_SCLK_PINx (Pin07)
|
||||||
#define SET_RIGHTLOW_CS1237_SCLK() PORT_SetBits(RIGHTLOW_CS1237_SCLK_PORTx, RIGHTLOW_CS1237_SCLK_PINx)//拉高
|
#define SET_RIGHTLOW_CS1237_SCLK() PORT_SetBits(RIGHTLOW_CS1237_SCLK_PORTx, RIGHTLOW_CS1237_SCLK_PINx)//拉高
|
||||||
#define CLR_RIGHTLOW_CS1237_SCLK() PORT_ResetBits(RIGHTLOW_CS1237_SCLK_PORTx, RIGHTLOW_CS1237_SCLK_PINx)//拉低
|
#define CLR_RIGHTLOW_CS1237_SCLK() PORT_ResetBits(RIGHTLOW_CS1237_SCLK_PORTx, RIGHTLOW_CS1237_SCLK_PINx)//拉低
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//< BIT0
|
//< BIT0
|
||||||
#define TWIN_BIT0_PORTx (PortB)
|
#define TWIN_BIT0_PORTx (PortB)
|
||||||
#define TWIN_BIT0_PINx (Pin12)
|
#define TWIN_BIT0_PINx (Pin12)
|
||||||
#define SET_TWIN_BIT0() PORT_SetBits(TWIN_BIT0_PORTx, TWIN_BIT0_PINx)//拉高
|
#define SET_TWIN_BIT0() PORT_SetBits(TWIN_BIT0_PORTx, TWIN_BIT0_PINx)//拉高
|
||||||
#define CLR_TWIN_BIT0() PORT_ResetBits(TWIN_BIT0_PORTx, TWIN_BIT0_PINx)//拉低
|
#define CLR_TWIN_BIT0() PORT_ResetBits(TWIN_BIT0_PORTx, TWIN_BIT0_PINx)//拉低
|
||||||
#define GET_BIT0_DOUT() PORT_GetBit(TWIN_BIT0_PORTx, TWIN_BIT0_PINx)
|
#define GET_BIT0_DOUT() PORT_GetBit(TWIN_BIT0_PORTx, TWIN_BIT0_PINx)
|
||||||
|
|
||||||
//< BIT1
|
//< BIT1
|
||||||
#define TWIN_BIT1_PORTx (PortB)
|
#define TWIN_BIT1_PORTx (PortB)
|
||||||
#define TWIN_BIT1_PINx (Pin13)
|
#define TWIN_BIT1_PINx (Pin13)
|
||||||
#define SET_TWIN_BIT1() PORT_SetBits(TWIN_BIT1_PORTx, TWIN_BIT1_PINx)//拉高
|
#define SET_TWIN_BIT1() PORT_SetBits(TWIN_BIT1_PORTx, TWIN_BIT1_PINx)//拉高
|
||||||
#define CLR_TWIN_BIT1() PORT_ResetBits(TWIN_BIT1_PORTx, TWIN_BIT1_PINx)//拉低
|
#define CLR_TWIN_BIT1() PORT_ResetBits(TWIN_BIT1_PORTx, TWIN_BIT1_PINx)//拉低
|
||||||
#define GET_BIT1_DOUT() PORT_GetBit(TWIN_BIT1_PORTx, TWIN_BIT1_PINx)
|
#define GET_BIT1_DOUT() PORT_GetBit(TWIN_BIT1_PORTx, TWIN_BIT1_PINx)
|
||||||
|
|
||||||
//< BUZZER
|
//< BUZZER
|
||||||
#define BUZZER_PORTx (PortB)
|
#define BUZZER_PORTx (PortB)
|
||||||
#define BUZZER_PINx (Pin15)
|
#define BUZZER_PINx (Pin15)
|
||||||
#define BUZZER_ON() PORT_SetBits(BUZZER_PORTx, BUZZER_PINx)//拉高
|
#define BUZZER_ON() PORT_SetBits(BUZZER_PORTx, BUZZER_PINx)//拉高
|
||||||
#define BUZZER_OFF() PORT_ResetBits(BUZZER_PORTx, BUZZER_PINx)//拉低
|
#define BUZZER_OFF() PORT_ResetBits(BUZZER_PORTx, BUZZER_PINx)//拉低
|
||||||
|
|
||||||
//< LED
|
//< LED
|
||||||
#define LED_GREEN_PORTx (PortA)
|
#define LED_GREEN_PORTx (PortA)
|
||||||
#define LED_GREEN_PINx (Pin08)
|
#define LED_GREEN_PINx (Pin08)
|
||||||
#define LED_GREEN_ON() PORT_SetBits(LED_GREEN_PORTx, LED_GREEN_PINx)//拉高
|
#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_GREEN_OFF() PORT_ResetBits(LED_GREEN_PORTx, LED_GREEN_PINx)//拉低
|
||||||
|
|
||||||
#define LED_RED_PORTx (PortA)
|
#define LED_RED_PORTx (PortA)
|
||||||
#define LED_RED_PINx (Pin09)
|
#define LED_RED_PINx (Pin09)
|
||||||
#define LED_RED_ON() PORT_SetBits(LED_RED_PORTx, LED_RED_PINx)//拉高
|
#define LED_RED_ON() PORT_SetBits(LED_RED_PORTx, LED_RED_PINx)//拉高
|
||||||
#define LED_RED_OFF() PORT_ResetBits(LED_RED_PORTx, LED_RED_PINx)//拉低
|
#define LED_RED_OFF() PORT_ResetBits(LED_RED_PORTx, LED_RED_PINx)//拉低
|
||||||
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int32_t ControlLevel;//控制等级
|
int32_t ControlLevel;//控制等级
|
||||||
int32_t DBGWaveOut;//调试波形输出
|
int32_t DBGWaveOut;//调试波形输出
|
||||||
}__attribute__ ((packed))LayoutPara_t, *LayoutPara;//上位机下发的配置参数
|
}__attribute__ ((packed))LayoutPara_t, *LayoutPara;//上位机下发的配置参数
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
LayoutPara_t Layout;
|
LayoutPara_t Layout;
|
||||||
uint32_t FactoryFlag;//出厂标志位
|
uint32_t FactoryFlag;//出厂标志位
|
||||||
}AppPara_T, *pAppPara;
|
}AppPara_T, *pAppPara;
|
||||||
|
|
||||||
#define SAVE_APP_PARA(addr) FlashWrite(addr, sizeof(App.Para) / 4)
|
#define SAVE_APP_PARA(addr) FlashWrite(addr, sizeof(App.Para) / 4)
|
||||||
|
|||||||
@@ -13,13 +13,13 @@
|
|||||||
#define SLOPE_VPT 1000
|
#define SLOPE_VPT 1000
|
||||||
#define PRESS_VPT 3
|
#define PRESS_VPT 3
|
||||||
#define FOLLOW_VPT 10
|
#define FOLLOW_VPT 10
|
||||||
#define SHIELD_VPT 2
|
#define SHIELD_VPT 1.5
|
||||||
#define EME_STOP_VPT 4000
|
#define EME_STOP_VPT 4000
|
||||||
|
|
||||||
#define CENTRE_FRONT_CNT 0
|
#define CENTRE_FRONT_CNT 0
|
||||||
#define CENTRE_FRONT_SUM 0
|
#define CENTRE_FRONT_SUM 0
|
||||||
#define CENTRE_FRONT_VPT 0
|
#define CENTRE_FRONT_VPT 0
|
||||||
#define CENTRE_VPT 0
|
#define CENTRE_VPT 2000
|
||||||
|
|
||||||
#define STOP_TIME_MS 500
|
#define STOP_TIME_MS 500
|
||||||
#define CENT_TIME_MS 200
|
#define CENT_TIME_MS 200
|
||||||
@@ -41,43 +41,48 @@
|
|||||||
//#define BDC_UP() Motor_Control(MOTOR_CMD_FORWARD)
|
//#define BDC_UP() Motor_Control(MOTOR_CMD_FORWARD)
|
||||||
//#define BDC_DOWN() Motor_Control(MOTOR_CMD_REVERSE)
|
//#define BDC_DOWN() Motor_Control(MOTOR_CMD_REVERSE)
|
||||||
|
|
||||||
/*控制等级*/
|
/*控制等级*/
|
||||||
typedef enum {
|
typedef enum {
|
||||||
LEVEL_1 = 1, // 一级
|
LEVEL_1 = 1, // 一级
|
||||||
LEVEL_2 = 2, // 二级
|
LEVEL_2 = 2, // 二级
|
||||||
LEVEL_3 = 3, // 三级
|
LEVEL_3 = 3, // 三级
|
||||||
LEVEL_4 = 4, // 四级
|
LEVEL_4 = 4, // 四级
|
||||||
LEVEL_5 = 5 // 五级
|
LEVEL_5 = 5 // 五级
|
||||||
}ControlLevel_m;
|
}ControlLevel_m;
|
||||||
|
|
||||||
/*设备阈值*/
|
/*设备阈值*/
|
||||||
typedef struct{
|
typedef struct{
|
||||||
int32_t Slope_VPT;
|
int32_t Slope_VPT;
|
||||||
int32_t Stop_VPT;
|
int32_t Stop_VPT;
|
||||||
|
|
||||||
int32_t LeftUpVPT;//左上设备阈值
|
int32_t LeftUpVPT;//左上设备阈值
|
||||||
int32_t LeftLowVPT;//左下设备阈值
|
int32_t LeftLowVPT;//左下设备阈值
|
||||||
int32_t RightUpVPT;//右上设备阈值
|
int32_t RightUpVPT;//右上设备阈值
|
||||||
int32_t RightLowVPT;//右下设备阈值
|
int32_t RightLowVPT;//右下设备阈值
|
||||||
|
|
||||||
int32_t LeftUp_Org_AdZero;//左上设备原始AD零点
|
int32_t LeftUpShieldVPT; //左上屏蔽阈值
|
||||||
int32_t LeftLow_Org_AdZero;//左下设备原始AD零点
|
int32_t LeftLowShieldVPT; //左下屏蔽阈值
|
||||||
int32_t RightUp_Org_AdZero;//右上设备原始AD零点
|
int32_t RightUpShieldVPT; //右上屏蔽阈值
|
||||||
int32_t RightLow_Org_AdZero;//右下设备原始AD零点
|
int32_t RightLowShieldVPT; //右下屏蔽阈值
|
||||||
|
|
||||||
|
int32_t LeftUp_Org_AdZero;//左上设备原始AD零点
|
||||||
|
int32_t LeftLow_Org_AdZero;//左下设备原始AD零点
|
||||||
|
int32_t RightUp_Org_AdZero;//右上设备原始AD零点
|
||||||
|
int32_t RightLow_Org_AdZero;//右下设备原始AD零点
|
||||||
}ADTrack_t;
|
}ADTrack_t;
|
||||||
typedef struct{//电机参数
|
typedef struct{//电机参数
|
||||||
bool InitialFlag;//初始标志位
|
bool InitialFlag;//初始标志位
|
||||||
bool RestFlag;
|
bool RestFlag;
|
||||||
bool CaliFlag;
|
bool CaliFlag;
|
||||||
bool LoopOne;//循环一次标志位
|
bool LoopOne;//循环一次标志位
|
||||||
int16_t Current_height;//当前高度mm
|
int16_t Current_height;//当前高度mm
|
||||||
int16_t CaliNum;//标校数量
|
int16_t CaliNum;//标校数量
|
||||||
int32_t LU_HeightStress[488];//左上传感器对应高度应力
|
int32_t LU_HeightStress[488];//左上传感器对应高度应力
|
||||||
int32_t LL_HeightStress[488];//左下传感器对应高度应力
|
int32_t LL_HeightStress[488];//左下传感器对应高度应力
|
||||||
int32_t RU_HeightStress[488];//右上传感器对应高度应力
|
int32_t RU_HeightStress[488];//右上传感器对应高度应力
|
||||||
int32_t RL_HeightStress[488];//右上传感器对应高度应力
|
int32_t RL_HeightStress[488];//右上传感器对应高度应力
|
||||||
}MotorPara_t;
|
}MotorPara_t;
|
||||||
/*数据读取状态机*/
|
/*数据读取状态机*/
|
||||||
typedef enum {
|
typedef enum {
|
||||||
READ_STATUS_IDLE,
|
READ_STATUS_IDLE,
|
||||||
READ_STATUS_START,
|
READ_STATUS_START,
|
||||||
@@ -92,17 +97,19 @@ typedef enum {
|
|||||||
READ_STATUS_SUPPORT_CONT
|
READ_STATUS_SUPPORT_CONT
|
||||||
}ReadStatus_m;
|
}ReadStatus_m;
|
||||||
|
|
||||||
/*主程序状态机*/
|
/*主程序状态机*/
|
||||||
typedef enum {
|
typedef enum {
|
||||||
APP_STATUS_IDLE,
|
APP_STATUS_IDLE,
|
||||||
APP_STATUS_ON,
|
APP_STATUS_ON,
|
||||||
APP_STATUS_OFF,
|
APP_STATUS_OFF,
|
||||||
|
APP_STATUS_START_BEEP,
|
||||||
APP_STATUS_MOTOR_INIT,
|
APP_STATUS_MOTOR_INIT,
|
||||||
|
APP_STATUS_ZERO_MARKING,
|
||||||
APP_STATUS_WAIT_MOTOR_INIT,
|
APP_STATUS_WAIT_MOTOR_INIT,
|
||||||
APP_STATUS_WAIT_MOTOR_CALI_UP,
|
APP_STATUS_WAIT_MOTOR_CALI_UP,
|
||||||
APP_STATUS_WAIT_MOTOR_CALI_DOWN,
|
APP_STATUS_WAIT_MOTOR_CALI_DOWN,
|
||||||
APP_STATUS_WAIT_STEADY,
|
APP_STATUS_WAIT_STEADY,
|
||||||
APP_STATUS_ZERO_MARKING,
|
APP_STATUS_END_BEEP,
|
||||||
APP_STATUS_HEIGHT_CONTROL,
|
APP_STATUS_HEIGHT_CONTROL,
|
||||||
}AppStatus_m;
|
}AppStatus_m;
|
||||||
|
|
||||||
@@ -121,7 +128,7 @@ typedef struct{
|
|||||||
}Uart3Rx_t;
|
}Uart3Rx_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
AppStatus_m Status;//状态
|
AppStatus_m Status;//状态
|
||||||
ReadStatus_m RStatus;
|
ReadStatus_m RStatus;
|
||||||
AppPara_T Para;
|
AppPara_T Para;
|
||||||
Uart1Rx_t RxUart1Data;
|
Uart1Rx_t RxUart1Data;
|
||||||
@@ -142,12 +149,12 @@ typedef struct {
|
|||||||
uint32_t HeightContRolCnt;
|
uint32_t HeightContRolCnt;
|
||||||
uint8_t FeedDogDlyCnt;
|
uint8_t FeedDogDlyCnt;
|
||||||
|
|
||||||
bool CaliZeroFlag;//校零标志位
|
bool CaliZeroFlag;//校零标志位
|
||||||
bool SideFlag;//侧压标志位
|
bool SideFlag;//侧压标志位
|
||||||
bool UpFlag;//上升标志位
|
bool UpFlag;//上升标志位
|
||||||
bool DownFlag;//下降标志位
|
bool DownFlag;//下降标志位
|
||||||
bool StopFlag;//停止标志位
|
bool StopFlag;//停止标志位
|
||||||
bool EmeFlag;//应急标志位
|
bool EmeFlag;//应急标志位
|
||||||
bool LeftRunFalg;
|
bool LeftRunFalg;
|
||||||
bool RightRunFalg;
|
bool RightRunFalg;
|
||||||
bool CentreRunFalg;
|
bool CentreRunFalg;
|
||||||
@@ -167,11 +174,6 @@ typedef struct {
|
|||||||
int32_t RightUpCS1237_SlopeArray[SLOPE_CNT];
|
int32_t RightUpCS1237_SlopeArray[SLOPE_CNT];
|
||||||
int32_t RightLowCS1237_SlopeArray[SLOPE_CNT];
|
int32_t RightLowCS1237_SlopeArray[SLOPE_CNT];
|
||||||
|
|
||||||
int32_t aaa;
|
|
||||||
int32_t bbb;
|
|
||||||
int32_t ccc;
|
|
||||||
int32_t ddd;
|
|
||||||
|
|
||||||
bool WaitFlag;
|
bool WaitFlag;
|
||||||
}AppDetect_t;
|
}AppDetect_t;
|
||||||
extern AppDetect_t App;
|
extern AppDetect_t App;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -55,27 +55,27 @@ void vcom_Send( char *format, ... )
|
|||||||
va_end(args);
|
va_end(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 定义一个函数vcom_Print,用于打印字符串
|
// 定义一个函数vcom_Print,用于打印字符串
|
||||||
void vcom_Print(uint8_t sLen)
|
void vcom_Print(uint8_t sLen)
|
||||||
{
|
{
|
||||||
// 定义一个字符指针CurChar
|
// 定义一个字符指针CurChar
|
||||||
char* CurChar;
|
char* CurChar;
|
||||||
// 初始化ir
|
// 初始化ir
|
||||||
ir = 0;
|
ir = 0;
|
||||||
// 当ir小于sLen时,循环执行
|
// 当ir小于sLen时,循环执行
|
||||||
while(ir < sLen)
|
while(ir < sLen)
|
||||||
{
|
{
|
||||||
// 获取字符指针CurChar
|
// 获取字符指针CurChar
|
||||||
CurChar = &buff[ir++];
|
CurChar = &buff[ir++];
|
||||||
// 调用DebugUartSend函数,发送CurChar指向的字符,次数为1
|
// 调用DebugUartSend函数,发送CurChar指向的字符,次数为1
|
||||||
DebugUartSend((uint8_t*)CurChar, 1);
|
DebugUartSend((uint8_t*)CurChar, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 定义一个函数vcom_Send2,用于发送字符串
|
// 定义一个函数vcom_Send2,用于发送字符串
|
||||||
void vcom_Send2(uint8_t *sData, uint16_t len)
|
void vcom_Send2(uint8_t *sData, uint16_t len)
|
||||||
{
|
{
|
||||||
// 遍历sData,将每个元素发送到DebugUartSend
|
// 遍历sData,将每个元素发送到DebugUartSend
|
||||||
for(int i = 0; i < len; i++) {
|
for(int i = 0; i < len; i++) {
|
||||||
DebugUartSend(&sData[i], 1);
|
DebugUartSend(&sData[i], 1);
|
||||||
}
|
}
|
||||||
@@ -90,7 +90,7 @@ void DebugLoopHandler(void)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
//for(argv[argc] = strtok(RxBuff, " "); argv[argc] != NULL; argv[++argc] = strtok(NULL, " "));
|
//for(argv[argc] = strtok(RxBuff, " "); argv[argc] != NULL; argv[++argc] = strtok(NULL, " "));
|
||||||
// 解析字符串,将参数放入argv数组中
|
// 解析字符串,将参数放入argv数组中
|
||||||
argp = strtok(RxBuff, " ");
|
argp = strtok(RxBuff, " ");
|
||||||
for(int i = 0; i < 10; i++) {
|
for(int i = 0; i < 10; i++) {
|
||||||
if(argp != NULL) {
|
if(argp != NULL) {
|
||||||
@@ -103,19 +103,19 @@ void DebugLoopHandler(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取第一个参数,并将其赋值给argp
|
// 获取第一个参数,并将其赋值给argp
|
||||||
argp = strtok(argv[argc], "'\r'");
|
argp = strtok(argv[argc], "'\r'");
|
||||||
// 如果argp不为空,则将argp的值赋值给argv[argc],并将argc加1
|
// 如果argp不为空,则将argp的值赋值给argv[argc],并将argc加1
|
||||||
if(argp != NULL) {
|
if(argp != NULL) {
|
||||||
argv[argc++] = argp;
|
argv[argc++] = argp;
|
||||||
}
|
}
|
||||||
// 否则,将RxLen设置为0,并返回
|
// 否则,将RxLen设置为0,并返回
|
||||||
else {
|
else {
|
||||||
RxLen = 0;
|
RxLen = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 遍历DebugFun数组,查找argv[0]是否与DBGCmd匹配,若匹配则调用DBGExec函数
|
// 遍历DebugFun数组,查找argv[0]是否与DBGCmd匹配,若匹配则调用DBGExec函数
|
||||||
for(int i = 0; i < DEBUG_CMD_CNT; i++) {
|
for(int i = 0; i < DEBUG_CMD_CNT; i++) {
|
||||||
if(strcmp(argv[0], DebugFun[i].DBGCmd) == 0)
|
if(strcmp(argv[0], DebugFun[i].DBGCmd) == 0)
|
||||||
DebugFun[i].DBGExec(argc, argv);
|
DebugFun[i].DBGExec(argc, argv);
|
||||||
@@ -130,54 +130,54 @@ void DebugLoopHandler(void)
|
|||||||
uint32_t RxTimeCurrent;
|
uint32_t RxTimeCurrent;
|
||||||
uint32_t RxTimeLast = 0;
|
uint32_t RxTimeLast = 0;
|
||||||
|
|
||||||
// 函数:Dbg1msRoutine
|
// 函数:Dbg1msRoutine
|
||||||
// 功能:1ms调试时钟routine
|
// 功能:1ms调试时钟routine
|
||||||
void Dbg1msRoutine(void)
|
void Dbg1msRoutine(void)
|
||||||
{
|
{
|
||||||
// 如果1ms调试时钟计数器大于0
|
// 如果1ms调试时钟计数器大于0
|
||||||
if(DebugRxTimeOut1mSCnt > 0)
|
if(DebugRxTimeOut1mSCnt > 0)
|
||||||
// 1ms调试时钟计数器减1
|
// 1ms调试时钟计数器减1
|
||||||
DebugRxTimeOut1mSCnt--;
|
DebugRxTimeOut1mSCnt--;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 定义函数DbgUsartRxIrqCallback,用于处理串口接收中断
|
// 定义函数DbgUsartRxIrqCallback,用于处理串口接收中断
|
||||||
void DbgUsartRxIrqCallback(void)
|
void DbgUsartRxIrqCallback(void)
|
||||||
{
|
{
|
||||||
// 如果1分钟超时计数器为0,则清空RxLen
|
// 如果1分钟超时计数器为0,则清空RxLen
|
||||||
if(DebugRxTimeOut1mSCnt == 0)
|
if(DebugRxTimeOut1mSCnt == 0)
|
||||||
RxLen = 0;
|
RxLen = 0;
|
||||||
|
|
||||||
// 重置1分钟超时计数器
|
// 重置1分钟超时计数器
|
||||||
DebugRxTimeOut1mSCnt = 3;
|
DebugRxTimeOut1mSCnt = 3;
|
||||||
// 读取串口接收到的数据
|
// 读取串口接收到的数据
|
||||||
uint8_t Data = DbgUartRec();
|
uint8_t Data = DbgUartRec();
|
||||||
// 如果RxLen小于128,则将数据添加到RxBuff中
|
// 如果RxLen小于128,则将数据添加到RxBuff中
|
||||||
if(RxLen < 128) {
|
if(RxLen < 128) {
|
||||||
RxBuff[RxLen++] = Data;
|
RxBuff[RxLen++] = Data;
|
||||||
}
|
}
|
||||||
// DBG_LOG("RxBuff = %s\n", RxBuff);
|
// DBG_LOG("RxBuff = %s\n", RxBuff);
|
||||||
// RS485_Flag=1;//接收标志为置1
|
// RS485_Flag=1;//接收标志为置1
|
||||||
}
|
}
|
||||||
|
|
||||||
void DebugTest(int argc, char *argv[])
|
void DebugTest(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
// 如果参数个数小于2,则返回
|
// 如果参数个数小于2,则返回
|
||||||
if(argc < 2)
|
if(argc < 2)
|
||||||
return;
|
return;
|
||||||
// 如果参数为“?”,则打印帮助信息
|
// 如果参数为“?”,则打印帮助信息
|
||||||
if(strcmp(argv[1], "?") == 0)
|
if(strcmp(argv[1], "?") == 0)
|
||||||
{
|
{
|
||||||
DBG_LOG("Debug Cmd:\r\n\
|
DBG_LOG("Debug Cmd:\r\n\
|
||||||
disp task on/off -->Open the task display.\r\n");
|
disp task on/off -->Open the task display.\r\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 如果参数为“on”,则打印“Test ON”
|
// 如果参数为“on”,则打印“Test ON”
|
||||||
if(strcmp(argv[1], "on") == 0)
|
if(strcmp(argv[1], "on") == 0)
|
||||||
{
|
{
|
||||||
// TestOn();
|
// TestOn();
|
||||||
DBG_LOG("Test ON\r\n");
|
DBG_LOG("Test ON\r\n");
|
||||||
}
|
}
|
||||||
// 如果参数为“off”,则打印“Test OFF”
|
// 如果参数为“off”,则打印“Test OFF”
|
||||||
else if(strcmp(argv[1], "off") == 0)
|
else if(strcmp(argv[1], "off") == 0)
|
||||||
{
|
{
|
||||||
// TestOFF();
|
// TestOFF();
|
||||||
@@ -221,51 +221,51 @@ void DebugCmdHelp(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
//// 定义一个无参函数DebugReadData,用于读取数据
|
//// 定义一个无参函数DebugReadData,用于读取数据
|
||||||
//void DebugReadData(int argc, char *argv[])
|
//void DebugReadData(int argc, char *argv[])
|
||||||
//{
|
//{
|
||||||
// // 定义一个无符号32位整数ADReadStart,初始值为0
|
// // 定义一个无符号32位整数ADReadStart,初始值为0
|
||||||
// uint32_t ADReadStart = 0;
|
// uint32_t ADReadStart = 0;
|
||||||
// // 定义一个ADData_t类型的数组ADBuff,大小为640
|
// // 定义一个ADData_t类型的数组ADBuff,大小为640
|
||||||
// ADData_t ADBuff[640];
|
// ADData_t ADBuff[640];
|
||||||
//
|
//
|
||||||
// // 当ADReadStart小于SDCARD_BLOCK_MAX时,循环执行
|
// // 当ADReadStart小于SDCARD_BLOCK_MAX时,循环执行
|
||||||
// while(ADReadStart < SDCARD_BLOCK_MAX) {
|
// while(ADReadStart < SDCARD_BLOCK_MAX) {
|
||||||
// // 使用SDCardReadBlocks函数读取数据,从ADReadStart开始,读取10个块,数据存储在ADBuff中
|
// // 使用SDCardReadBlocks函数读取数据,从ADReadStart开始,读取10个块,数据存储在ADBuff中
|
||||||
// SDCardReadBlocks(ADReadStart, 10, (uint8_t *)ADBuff);
|
// SDCardReadBlocks(ADReadStart, 10, (uint8_t *)ADBuff);
|
||||||
// // 遍历ADBuff数组,将每个元素打印出来
|
// // 遍历ADBuff数组,将每个元素打印出来
|
||||||
// for(int i = 0; i < 640; i++) {
|
// for(int i = 0; i < 640; i++) {
|
||||||
// DBG_LOG("%d\t%d\t%d\t%d\r\n", ADBuff[i].AD0, ADBuff[i].AD1, ADBuff[i].AD2, ADBuff[i].AD3);
|
// DBG_LOG("%d\t%d\t%d\t%d\r\n", ADBuff[i].AD0, ADBuff[i].AD1, ADBuff[i].AD2, ADBuff[i].AD3);
|
||||||
// }
|
// }
|
||||||
// // ADReadStart加10
|
// // ADReadStart加10
|
||||||
// ADReadStart += 10;
|
// ADReadStart += 10;
|
||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//// 定义一个函数SetTime,参数为int argc和char *argv[]
|
//// 定义一个函数SetTime,参数为int argc和char *argv[]
|
||||||
//void SetTime(int argc, char *argv[])
|
//void SetTime(int argc, char *argv[])
|
||||||
//{
|
//{
|
||||||
// // 定义一个字符数组test,并初始化为0
|
// // 定义一个字符数组test,并初始化为0
|
||||||
// char test[10] = 0;
|
// char test[10] = 0;
|
||||||
// // 定义一个整数num,并初始化为0
|
// // 定义一个整数num,并初始化为0
|
||||||
// int num = 0;
|
// int num = 0;
|
||||||
// // 如果argc小于2,则返回
|
// // 如果argc小于2,则返回
|
||||||
// if(argc < 2)
|
// if(argc < 2)
|
||||||
// return;
|
// return;
|
||||||
// // 如果argv[1]等于"?",则打印提示信息
|
// // 如果argv[1]等于"?",则打印提示信息
|
||||||
// if(strcmp(argv[1], "?") == 0)
|
// if(strcmp(argv[1], "?") == 0)
|
||||||
// {
|
// {
|
||||||
// DBG_LOG("SetTime Cmd:\r\n\
|
// DBG_LOG("SetTime Cmd:\r\n\
|
||||||
// disp task on/off -->Open the task display.\r\n");
|
// disp task on/off -->Open the task display.\r\n");
|
||||||
// return;
|
// return;
|
||||||
// }
|
// }
|
||||||
// // 将argv[1]的值复制到test
|
// // 将argv[1]的值复制到test
|
||||||
// memcpy(test, (char *)argv[1], 10);
|
// memcpy(test, (char *)argv[1], 10);
|
||||||
// // 将test转换为整数
|
// // 将test转换为整数
|
||||||
// num = atoi(test);
|
// num = atoi(test);
|
||||||
// // 调用TimeSync函数,并将num作为参数传入
|
// // 调用TimeSync函数,并将num作为参数传入
|
||||||
// TimeSync(num);
|
// TimeSync(num);
|
||||||
//}
|
//}
|
||||||
#endif
|
#endif
|
||||||
@@ -274,24 +274,24 @@ extern uint8_t KeyBSta;
|
|||||||
extern uint8_t RunSta;
|
extern uint8_t RunSta;
|
||||||
void MotorSwitch(int argc, char *argv[])
|
void MotorSwitch(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
// 如果参数个数小于2,则返回
|
// 如果参数个数小于2,则返回
|
||||||
if(argc < 2)
|
if(argc < 2)
|
||||||
return;
|
return;
|
||||||
// 如果第一个参数为?,则打印帮助信息
|
// 如果第一个参数为?,则打印帮助信息
|
||||||
if(strcmp(argv[1], "?") == 0)
|
if(strcmp(argv[1], "?") == 0)
|
||||||
{
|
{
|
||||||
DBG_LOG("DCMotor Cmd:\r\n\
|
DBG_LOG("DCMotor Cmd:\r\n\
|
||||||
motor F/R/S -->Turn the motor on or off.\r\n");
|
motor F/R/S -->Turn the motor on or off.\r\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 如果第一个参数为on,则开启SonarWork
|
// 如果第一个参数为on,则开启SonarWork
|
||||||
if(strcmp(argv[1], "R") == 0)
|
if(strcmp(argv[1], "R") == 0)
|
||||||
{
|
{
|
||||||
KeyASta = true;
|
KeyASta = true;
|
||||||
Motor_Control(MOTOR_CMD_REVERSE);
|
Motor_Control(MOTOR_CMD_REVERSE);
|
||||||
DBG_LOG("Motor FORWARD\r\n");
|
DBG_LOG("Motor FORWARD\r\n");
|
||||||
}
|
}
|
||||||
// 如果第一个参数为off,则关闭SonarWork
|
// 如果第一个参数为off,则关闭SonarWork
|
||||||
else if(strcmp(argv[1], "F") == 0)
|
else if(strcmp(argv[1], "F") == 0)
|
||||||
{
|
{
|
||||||
KeyBSta = true;
|
KeyBSta = true;
|
||||||
@@ -309,56 +309,56 @@ void MotorSwitch(int argc, char *argv[])
|
|||||||
extern void GradeControl(ControlLevel_m level);
|
extern void GradeControl(ControlLevel_m level);
|
||||||
void LevelSwitch(int argc, char *argv[])
|
void LevelSwitch(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
// 如果参数个数小于2,则返回
|
// 如果参数个数小于2,则返回
|
||||||
if(argc < 2)
|
if(argc < 2)
|
||||||
return;
|
return;
|
||||||
// 如果参数为“?”,则打印帮助信息
|
// 如果参数为“?”,则打印帮助信息
|
||||||
if(strcmp(argv[1], "?") == 0)
|
if(strcmp(argv[1], "?") == 0)
|
||||||
{
|
{
|
||||||
DBG_LOG("level Cmd:\r\n\
|
DBG_LOG("level Cmd:\r\n\
|
||||||
level 1/2/3/4/5 -->Select control level.\r\n");
|
level 1/2/3/4/5 -->Select control level.\r\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 如果参数为“1”,则打印“Set control level: 1”
|
// 如果参数为“1”,则打印“Set control level: 1”
|
||||||
if(strcmp(argv[1], "1") == 0)
|
if(strcmp(argv[1], "1") == 0)
|
||||||
{
|
{
|
||||||
App.Para.Layout.ControlLevel = LEVEL_1;//等级1
|
App.Para.Layout.ControlLevel = LEVEL_1;//等级1
|
||||||
SAVE_APP_PARA((uint32_t *)&App.Para);
|
SAVE_APP_PARA((uint32_t *)&App.Para);
|
||||||
DBG_LOG("Set control level: 1\r\n");
|
DBG_LOG("Set control level: 1\r\n");
|
||||||
DBG_LOG("SystemReset...\r\n");
|
DBG_LOG("SystemReset...\r\n");
|
||||||
NVIC_SystemReset();
|
NVIC_SystemReset();
|
||||||
}
|
}
|
||||||
// 如果参数为“2”,则打印“Set control level: 2”
|
// 如果参数为“2”,则打印“Set control level: 2”
|
||||||
else if(strcmp(argv[1], "2") == 0)
|
else if(strcmp(argv[1], "2") == 0)
|
||||||
{
|
{
|
||||||
App.Para.Layout.ControlLevel = LEVEL_2;//等级2
|
App.Para.Layout.ControlLevel = LEVEL_2;//等级2
|
||||||
SAVE_APP_PARA((uint32_t *)&App.Para);
|
SAVE_APP_PARA((uint32_t *)&App.Para);
|
||||||
DBG_LOG("Set control level: 2\r\n");
|
DBG_LOG("Set control level: 2\r\n");
|
||||||
DBG_LOG("SystemReset...\r\n");
|
DBG_LOG("SystemReset...\r\n");
|
||||||
NVIC_SystemReset();
|
NVIC_SystemReset();
|
||||||
}
|
}
|
||||||
// 如果参数为“3”,则打印“Set control level: 1”
|
// 如果参数为“3”,则打印“Set control level: 1”
|
||||||
else if(strcmp(argv[1], "3") == 0)
|
else if(strcmp(argv[1], "3") == 0)
|
||||||
{
|
{
|
||||||
App.Para.Layout.ControlLevel = LEVEL_3;//等级3
|
App.Para.Layout.ControlLevel = LEVEL_3;//等级3
|
||||||
SAVE_APP_PARA((uint32_t *)&App.Para);
|
SAVE_APP_PARA((uint32_t *)&App.Para);
|
||||||
DBG_LOG("Set control level: 3\r\n");
|
DBG_LOG("Set control level: 3\r\n");
|
||||||
DBG_LOG("SystemReset...\r\n");
|
DBG_LOG("SystemReset...\r\n");
|
||||||
NVIC_SystemReset();
|
NVIC_SystemReset();
|
||||||
}
|
}
|
||||||
// 如果参数为“4”,则打印“Set control level: 4”
|
// 如果参数为“4”,则打印“Set control level: 4”
|
||||||
else if(strcmp(argv[1], "4") == 0)
|
else if(strcmp(argv[1], "4") == 0)
|
||||||
{
|
{
|
||||||
App.Para.Layout.ControlLevel = LEVEL_4;//等级4
|
App.Para.Layout.ControlLevel = LEVEL_4;//等级4
|
||||||
SAVE_APP_PARA((uint32_t *)&App.Para);
|
SAVE_APP_PARA((uint32_t *)&App.Para);
|
||||||
DBG_LOG("Set control level: 4\r\n");
|
DBG_LOG("Set control level: 4\r\n");
|
||||||
DBG_LOG("SystemReset...\r\n");
|
DBG_LOG("SystemReset...\r\n");
|
||||||
NVIC_SystemReset();
|
NVIC_SystemReset();
|
||||||
}
|
}
|
||||||
// 如果参数为“5”,则打印“Set control level: 5”
|
// 如果参数为“5”,则打印“Set control level: 5”
|
||||||
else if(strcmp(argv[1], "5") == 0)
|
else if(strcmp(argv[1], "5") == 0)
|
||||||
{
|
{
|
||||||
App.Para.Layout.ControlLevel = LEVEL_5;//等级5
|
App.Para.Layout.ControlLevel = LEVEL_5;//等级5
|
||||||
SAVE_APP_PARA((uint32_t *)&App.Para);
|
SAVE_APP_PARA((uint32_t *)&App.Para);
|
||||||
DBG_LOG("Set control level: 5\r\n");
|
DBG_LOG("Set control level: 5\r\n");
|
||||||
DBG_LOG("SystemReset...\r\n");
|
DBG_LOG("SystemReset...\r\n");
|
||||||
@@ -368,24 +368,24 @@ void LevelSwitch(int argc, char *argv[])
|
|||||||
|
|
||||||
void DBGWave_on_off(int argc, char *argv[])
|
void DBGWave_on_off(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
// 如果参数个数小于2,则返回
|
// 如果参数个数小于2,则返回
|
||||||
if(argc < 2)
|
if(argc < 2)
|
||||||
return;
|
return;
|
||||||
// 如果参数为“?”,则打印帮助信息
|
// 如果参数为“?”,则打印帮助信息
|
||||||
if(strcmp(argv[1], "?") == 0)
|
if(strcmp(argv[1], "?") == 0)
|
||||||
{
|
{
|
||||||
DBG_LOG("wave Cmd:\r\n\
|
DBG_LOG("wave Cmd:\r\n\
|
||||||
wave on/off -->Turn on or off waveform output.\r\n");
|
wave on/off -->Turn on or off waveform output.\r\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 如果参数为“on”,则打印“Test ON”
|
// 如果参数为“on”,则打印“Test ON”
|
||||||
if(strcmp(argv[1], "on") == 0)
|
if(strcmp(argv[1], "on") == 0)
|
||||||
{
|
{
|
||||||
App.Para.Layout.DBGWaveOut = true;
|
App.Para.Layout.DBGWaveOut = true;
|
||||||
SAVE_APP_PARA((uint32_t *)&App.Para);
|
SAVE_APP_PARA((uint32_t *)&App.Para);
|
||||||
DBG_LOG("Waveform output on.\r\n");
|
DBG_LOG("Waveform output on.\r\n");
|
||||||
}
|
}
|
||||||
// 如果参数为“off”,则打印“Test OFF”
|
// 如果参数为“off”,则打印“Test OFF”
|
||||||
else if(strcmp(argv[1], "off") == 0)
|
else if(strcmp(argv[1], "off") == 0)
|
||||||
{
|
{
|
||||||
App.Para.Layout.DBGWaveOut = false;
|
App.Para.Layout.DBGWaveOut = false;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#include "Encryption.h"
|
#include "Encryption.h"
|
||||||
|
|
||||||
//从机加密表
|
//从机加密表
|
||||||
const unsigned char EPT_Table[32][6] = {
|
const unsigned char EPT_Table[32][6] = {
|
||||||
{1, 6, 4, 2, 3, 5}, {2, 4, 6, 3, 5, 1}, {3, 5, 6, 2, 1, 4}, {5, 3, 2, 1, 4, 6},
|
{1, 6, 4, 2, 3, 5}, {2, 4, 6, 3, 5, 1}, {3, 5, 6, 2, 1, 4}, {5, 3, 2, 1, 4, 6},
|
||||||
{4, 2, 3, 1, 5, 6}, {6, 3, 5, 1, 4, 2}, {3, 5, 2, 6, 4, 1}, {2, 5, 4, 3, 1, 6},
|
{4, 2, 3, 1, 5, 6}, {6, 3, 5, 1, 4, 2}, {3, 5, 2, 6, 4, 1}, {2, 5, 4, 3, 1, 6},
|
||||||
@@ -12,7 +12,7 @@ const unsigned char EPT_Table[32][6] = {
|
|||||||
{3, 6, 5, 4, 2, 1}, {1, 2, 6, 3, 5, 4}, {4, 6, 5, 3, 2, 1}, {5, 3, 4, 2, 6, 1}
|
{3, 6, 5, 4, 2, 1}, {1, 2, 6, 3, 5, 4}, {4, 6, 5, 3, 2, 1}, {5, 3, 4, 2, 6, 1}
|
||||||
};
|
};
|
||||||
|
|
||||||
//从机解密表:
|
//从机解密表:
|
||||||
const unsigned char DPT_Table[32][5] ={
|
const unsigned char DPT_Table[32][5] ={
|
||||||
{1, 4, 2, 3, 5}, {2, 4, 3, 5, 1}, {3, 5, 2, 1, 4}, {5, 3, 2, 1, 4},
|
{1, 4, 2, 3, 5}, {2, 4, 3, 5, 1}, {3, 5, 2, 1, 4}, {5, 3, 2, 1, 4},
|
||||||
{4, 2, 3, 1, 5}, {3, 5, 1, 4, 2}, {3, 5, 2, 4, 1}, {2, 5, 4, 3, 1},
|
{4, 2, 3, 1, 5}, {3, 5, 1, 4, 2}, {3, 5, 2, 4, 1}, {2, 5, 4, 3, 1},
|
||||||
@@ -24,7 +24,7 @@ const unsigned char DPT_Table[32][5] ={
|
|||||||
{3, 5, 4, 2, 1}, {1, 2, 3, 5, 4}, {4, 5, 3, 2, 1}, {5, 3, 4, 2, 1}
|
{3, 5, 4, 2, 1}, {1, 2, 3, 5, 4}, {4, 5, 3, 2, 1}, {5, 3, 4, 2, 1}
|
||||||
};
|
};
|
||||||
|
|
||||||
//数据位加密表:
|
//数据位加密表:
|
||||||
const unsigned char EPT_D[32] = {
|
const unsigned char EPT_D[32] = {
|
||||||
0x23, 0x4c, 0x92, 0x38, 0x52, 0xa4, 0x9a, 0x61,
|
0x23, 0x4c, 0x92, 0x38, 0x52, 0xa4, 0x9a, 0x61,
|
||||||
0x86, 0xc8, 0x70, 0x16, 0x32, 0x58, 0x62, 0x83,
|
0x86, 0xc8, 0x70, 0x16, 0x32, 0x58, 0x62, 0x83,
|
||||||
@@ -33,11 +33,11 @@ const unsigned char EPT_D[32] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/****************************************************************/
|
/****************************************************************/
|
||||||
/* 加密函数 */
|
/* 加密函数 */
|
||||||
/* */
|
/* */
|
||||||
/*函数入口: *data,未加密的普通协议数据 */
|
/*函数入口: *data,未加密的普通协议数据 */
|
||||||
/* */
|
/* */
|
||||||
/*函数出口: *EPT_data,生成的加密协议 */
|
/*函数出口: *EPT_data,生成的加密协议 */
|
||||||
/****************************************************************/
|
/****************************************************************/
|
||||||
void Encrypt_Code(unsigned char *data, unsigned char *EPT_data) {
|
void Encrypt_Code(unsigned char *data, unsigned char *EPT_data) {
|
||||||
unsigned char Edata[6];
|
unsigned char Edata[6];
|
||||||
@@ -60,11 +60,11 @@ void Encrypt_Code(unsigned char *data, unsigned char *EPT_data) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************/
|
/****************************************************************/
|
||||||
/* 解密函数 */
|
/* 解密函数 */
|
||||||
/* */
|
/* */
|
||||||
/*函数入口: *EPT_data,需要解密的加密协议 */
|
/*函数入口: *EPT_data,需要解密的加密协议 */
|
||||||
/* */
|
/* */
|
||||||
/*函数出口: *DPT_data,生成的普通协议 */
|
/*函数出口: *DPT_data,生成的普通协议 */
|
||||||
/****************************************************************/
|
/****************************************************************/
|
||||||
void Decrypt_Code(unsigned char *EPT_data,unsigned char *DPT_data) {
|
void Decrypt_Code(unsigned char *EPT_data,unsigned char *DPT_data) {
|
||||||
unsigned char data[5];
|
unsigned char data[5];
|
||||||
|
|||||||
@@ -133,10 +133,10 @@ void FeedDog(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: Xtal32_ClockConfig
|
* 函数名称: Xtal32_ClockConfig
|
||||||
* 功能描述: 外部低速时钟配置
|
* 功能描述: 外部低速时钟配置
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
static void Xtal32_ClockConfig(void)
|
static void Xtal32_ClockConfig(void)
|
||||||
{
|
{
|
||||||
@@ -166,10 +166,10 @@ void delay_5ns(uint32_t ns)
|
|||||||
}
|
}
|
||||||
#if(USE_RS485 == 1)
|
#if(USE_RS485 == 1)
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: RS485Uart_Config
|
* 函数名称: RS485Uart_Config
|
||||||
* 功能描述: RS485串口初始化
|
* 功能描述: RS485串口初始化
|
||||||
* 参 数: BaudRate 波特率
|
* 参 数: BaudRate 波特率
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
static void RS485Uart_Config(uint32_t BaudRate)
|
static void RS485Uart_Config(uint32_t BaudRate)
|
||||||
{
|
{
|
||||||
@@ -507,11 +507,11 @@ static void GPIO_Config(void)
|
|||||||
|
|
||||||
MEM_ZERO_STRUCT(stcPortInit);
|
MEM_ZERO_STRUCT(stcPortInit);
|
||||||
|
|
||||||
/********************************** GPIO输出 ****************************************/
|
/********************************** GPIO输出 ****************************************/
|
||||||
stcPortInit.enPinMode = Pin_Mode_Out;
|
stcPortInit.enPinMode = Pin_Mode_Out;
|
||||||
stcPortInit.enPinOType = Pin_OType_Cmos;
|
stcPortInit.enPinOType = Pin_OType_Cmos;
|
||||||
stcPortInit.enPinDrv = Pin_Drv_H;
|
stcPortInit.enPinDrv = Pin_Drv_H;
|
||||||
stcPortInit.enPullUp = Disable;//无上拉
|
stcPortInit.enPullUp = Disable;//无上拉
|
||||||
|
|
||||||
PORT_Init(LEFTUP_CS1237_SCLK_PORTx, LEFTUP_CS1237_SCLK_PINx, &stcPortInit);
|
PORT_Init(LEFTUP_CS1237_SCLK_PORTx, LEFTUP_CS1237_SCLK_PINx, &stcPortInit);
|
||||||
PORT_Init(LEFTLOW_CS1237_SCLK_PORTx, LEFTLOW_CS1237_SCLK_PINx, &stcPortInit);
|
PORT_Init(LEFTLOW_CS1237_SCLK_PORTx, LEFTLOW_CS1237_SCLK_PINx, &stcPortInit);
|
||||||
@@ -523,20 +523,20 @@ static void GPIO_Config(void)
|
|||||||
LED_GREEN_OFF();
|
LED_GREEN_OFF();
|
||||||
LED_RED_OFF();
|
LED_RED_OFF();
|
||||||
|
|
||||||
stcPortInit.enPullUp = Enable;//上拉
|
stcPortInit.enPullUp = Enable;//上拉
|
||||||
}
|
}
|
||||||
void Bit0AndBit1_OUT(void)
|
void Bit0AndBit1_OUT(void)
|
||||||
{
|
{
|
||||||
stc_port_init_t stcPortInit;
|
stc_port_init_t stcPortInit;
|
||||||
MEM_ZERO_STRUCT(stcPortInit);
|
MEM_ZERO_STRUCT(stcPortInit);
|
||||||
|
|
||||||
/********************************** GPIO输出 ****************************************/
|
/********************************** GPIO输出 ****************************************/
|
||||||
stcPortInit.enPinMode = Pin_Mode_Out;
|
stcPortInit.enPinMode = Pin_Mode_Out;
|
||||||
stcPortInit.enPinOType = Pin_OType_Cmos;
|
stcPortInit.enPinOType = Pin_OType_Cmos;
|
||||||
stcPortInit.enPinDrv = Pin_Drv_H;
|
stcPortInit.enPinDrv = Pin_Drv_H;
|
||||||
stcPortInit.enPullUp = Disable;//无上拉
|
stcPortInit.enPullUp = Disable;//无上拉
|
||||||
|
|
||||||
stcPortInit.enPullUp = Enable;//上拉
|
stcPortInit.enPullUp = Enable;//上拉
|
||||||
PORT_Init(TWIN_BIT0_PORTx, TWIN_BIT0_PINx, &stcPortInit);
|
PORT_Init(TWIN_BIT0_PORTx, TWIN_BIT0_PINx, &stcPortInit);
|
||||||
PORT_Init(TWIN_BIT1_PORTx, TWIN_BIT1_PINx, &stcPortInit);
|
PORT_Init(TWIN_BIT1_PORTx, TWIN_BIT1_PINx, &stcPortInit);
|
||||||
SET_TWIN_BIT0();
|
SET_TWIN_BIT0();
|
||||||
@@ -547,14 +547,14 @@ void Bit0AndBit1_IN(void)
|
|||||||
stc_port_init_t stcPortInit;
|
stc_port_init_t stcPortInit;
|
||||||
MEM_ZERO_STRUCT(stcPortInit);
|
MEM_ZERO_STRUCT(stcPortInit);
|
||||||
|
|
||||||
/********************************** GPIO输入 ****************************************/
|
/********************************** GPIO输入 ****************************************/
|
||||||
stcPortInit.enPinMode = Pin_Mode_In;
|
stcPortInit.enPinMode = Pin_Mode_In;
|
||||||
stcPortInit.enPullUp = Disable;//无上拉
|
stcPortInit.enPullUp = Disable;//无上拉
|
||||||
|
|
||||||
PORT_Init(TWIN_BIT0_PORTx, TWIN_BIT0_PINx, &stcPortInit);
|
PORT_Init(TWIN_BIT0_PORTx, TWIN_BIT0_PINx, &stcPortInit);
|
||||||
PORT_Init(TWIN_BIT1_PORTx, TWIN_BIT1_PINx, &stcPortInit);
|
PORT_Init(TWIN_BIT1_PORTx, TWIN_BIT1_PINx, &stcPortInit);
|
||||||
}
|
}
|
||||||
/*********************************左上传感器
|
/*********************************左上传感器
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
** \brief ExtInt00 callback function
|
** \brief ExtInt00 callback function
|
||||||
**
|
**
|
||||||
@@ -626,7 +626,7 @@ void ExtInt10IntDisable(void)
|
|||||||
/* Disable NVIC */
|
/* Disable NVIC */
|
||||||
NVIC_DisableIRQ(LEFTUP_CS1237_IRQn);
|
NVIC_DisableIRQ(LEFTUP_CS1237_IRQn);
|
||||||
}
|
}
|
||||||
/*******************************左下传感器
|
/*******************************左下传感器
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
** \brief ExtInt01 callback function
|
** \brief ExtInt01 callback function
|
||||||
**
|
**
|
||||||
@@ -698,7 +698,7 @@ void ExtInt01IntDisable(void)
|
|||||||
/* Disable NVIC */
|
/* Disable NVIC */
|
||||||
NVIC_DisableIRQ(LEFTLOW_CS1237_IRQn);
|
NVIC_DisableIRQ(LEFTLOW_CS1237_IRQn);
|
||||||
}
|
}
|
||||||
/*******************************右上传感器
|
/*******************************右上传感器
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
** \brief ExtInt04 callback function
|
** \brief ExtInt04 callback function
|
||||||
**
|
**
|
||||||
@@ -770,7 +770,7 @@ void ExtInt04IntDisable(void)
|
|||||||
/* Disable NVIC */
|
/* Disable NVIC */
|
||||||
NVIC_DisableIRQ(RIGHTUP_CS1237_IRQn);
|
NVIC_DisableIRQ(RIGHTUP_CS1237_IRQn);
|
||||||
}
|
}
|
||||||
/*******************************右下传感器
|
/*******************************右下传感器
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
** \brief ExtInt04 callback function
|
** \brief ExtInt04 callback function
|
||||||
**
|
**
|
||||||
@@ -1039,12 +1039,12 @@ uint16_t Spi3SendReceive(uint8_t sData)
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
** \brief SPI 读/写一字节函数
|
** \brief SPI 读/写一字节函数
|
||||||
**
|
**
|
||||||
** \param [in] SPIx 通道选择
|
** \param [in] SPIx 通道选择
|
||||||
** \param [in] u8Data 发送一字节数据
|
** \param [in] u8Data 发送一字节数据
|
||||||
**
|
**
|
||||||
** \retval 接收一字节数据
|
** \retval 接收一字节数据
|
||||||
**
|
**
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
uint8_t Spi3_RWByte(M4_SPI_TypeDef *SPIx, uint8_t u8Data)
|
uint8_t Spi3_RWByte(M4_SPI_TypeDef *SPIx, uint8_t u8Data)
|
||||||
@@ -1070,10 +1070,10 @@ uint8_t Spi3_RWByte(M4_SPI_TypeDef *SPIx, uint8_t u8Data)
|
|||||||
|
|
||||||
#if(USE_RTC == 1)
|
#if(USE_RTC == 1)
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: Rtc_Config
|
* 函数名称: Rtc_Config
|
||||||
* 功能描述: RTC配置
|
* 功能描述: RTC配置
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
static void Rtc_Config(void)
|
static void Rtc_Config(void)
|
||||||
{
|
{
|
||||||
@@ -1116,10 +1116,10 @@ static void Rtc_Config(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: TimeGet
|
* 函数名称: TimeGet
|
||||||
* 功能描述: 获取系统时间
|
* 功能描述: 获取系统时间
|
||||||
* 参 数: tm 读取时间入口
|
* 参 数: tm 读取时间入口
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
void TimeGet(struct tm *cTime)
|
void TimeGet(struct tm *cTime)
|
||||||
{
|
{
|
||||||
@@ -1136,10 +1136,10 @@ void TimeGet(struct tm *cTime)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: TimeTs
|
* 函数名称: TimeTs
|
||||||
* 功能描述: 系统时间转换时间戳
|
* 功能描述: 系统时间转换时间戳
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 返回时间戳
|
* 返 回 值: 返回时间戳
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
int TimeTs(void)
|
int TimeTs(void)
|
||||||
{
|
{
|
||||||
@@ -1152,10 +1152,10 @@ int TimeTs(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: TimeShow
|
* 函数名称: TimeShow
|
||||||
* 功能描述: 将时间输出到DBG串口
|
* 功能描述: 将时间输出到DBG串口
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
void TimeShow(uint32_t dwStamp)
|
void TimeShow(uint32_t dwStamp)
|
||||||
{
|
{
|
||||||
@@ -1170,10 +1170,10 @@ void TimeShow(uint32_t dwStamp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: TimeSync
|
* 函数名称: TimeSync
|
||||||
* 功能描述: 通过时间戳同步
|
* 功能描述: 通过时间戳同步
|
||||||
* 参 数: ts 时间入口
|
* 参 数: ts 时间入口
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
void TimeSync(time_t ts)
|
void TimeSync(time_t ts)
|
||||||
{
|
{
|
||||||
@@ -1200,10 +1200,10 @@ void TimeSync(time_t ts)
|
|||||||
#endif
|
#endif
|
||||||
#if(USE_AD == 1)
|
#if(USE_AD == 1)
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: AdcInitConfig
|
* 函数名称: AdcInitConfig
|
||||||
* 功能描述: ADC初始化配置
|
* 功能描述: ADC初始化配置
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
static void AdcInitConfig(void)
|
static void AdcInitConfig(void)
|
||||||
{
|
{
|
||||||
@@ -1223,10 +1223,10 @@ static void AdcInitConfig(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: AdcSetChannelPinMode
|
* 函数名称: AdcSetChannelPinMode
|
||||||
* 功能描述: ADC通道引脚配置
|
* 功能描述: ADC通道引脚配置
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
static void AdcSetChannelPinMode(uint32_t u32Channel)
|
static void AdcSetChannelPinMode(uint32_t u32Channel)
|
||||||
{
|
{
|
||||||
@@ -1262,10 +1262,10 @@ static void AdcSetChannelPinMode(uint32_t u32Channel)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: AdcChannelConfig
|
* 函数名称: AdcChannelConfig
|
||||||
* 功能描述: ADC通道配置
|
* 功能描述: ADC通道配置
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
static void AdcChannelConfig(void)
|
static void AdcChannelConfig(void)
|
||||||
{
|
{
|
||||||
@@ -1286,17 +1286,17 @@ static void AdcChannelConfig(void)
|
|||||||
ADC_AddAdcChannel(M4_ADC1, &stcChCfg);
|
ADC_AddAdcChannel(M4_ADC1, &stcChCfg);
|
||||||
|
|
||||||
/* 3. Configure the average channel if you need. */
|
/* 3. Configure the average channel if you need. */
|
||||||
ADC_ConfigAvg(M4_ADC1, AdcAvcnt_2); //平均通道配置,多次采样后输出平均值
|
ADC_ConfigAvg(M4_ADC1, AdcAvcnt_2); //平均通道配置,多次采样后输出平均值
|
||||||
|
|
||||||
/* 4. Add average channel if you need. */
|
/* 4. Add average channel if you need. */
|
||||||
ADC_AddAvgChannel(M4_ADC1, stcChCfg.u32Channel);
|
ADC_AddAvgChannel(M4_ADC1, stcChCfg.u32Channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: Adc1_Config
|
* 函数名称: Adc1_Config
|
||||||
* 功能描述: ADC1配置
|
* 功能描述: ADC1配置
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
static void Adc1_Config(void)
|
static void Adc1_Config(void)
|
||||||
{
|
{
|
||||||
@@ -1306,10 +1306,10 @@ static void Adc1_Config(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: AdcDmaConfig
|
* 函数名称: AdcDmaConfig
|
||||||
* 功能描述: ADC DMA配置
|
* 功能描述: ADC DMA配置
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
static void AdcDmaConfig(void)
|
static void AdcDmaConfig(void)
|
||||||
{
|
{
|
||||||
@@ -1353,11 +1353,11 @@ static void AdcDmaConfig(void)
|
|||||||
#endif
|
#endif
|
||||||
#if(USE_DMA == 1)
|
#if(USE_DMA == 1)
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: DmaIrqRegister
|
* 函数名称: DmaIrqRegister
|
||||||
* 功能描述: DMA中断寄存器配置
|
* 功能描述: DMA中断寄存器配置
|
||||||
* 参 数: pstcCfg, 中断参数
|
* 参 数: pstcCfg, 中断参数
|
||||||
u32Priority, 中断优先级
|
u32Priority, 中断优先级
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
static void DmaIrqRegister(stc_irq_regi_conf_t *pstcCfg, uint32_t u32Priority)
|
static void DmaIrqRegister(stc_irq_regi_conf_t *pstcCfg, uint32_t u32Priority)
|
||||||
{
|
{
|
||||||
@@ -1379,10 +1379,10 @@ static void DmaIrqRegister(stc_irq_regi_conf_t *pstcCfg, uint32_t u32Priority)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: DmaIrqRegister
|
* 函数名称: DmaIrqRegister
|
||||||
* 功能描述: DMA中断配置
|
* 功能描述: DMA中断配置
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
static void DmaIrqConfig(void)
|
static void DmaIrqConfig(void)
|
||||||
{
|
{
|
||||||
@@ -1396,10 +1396,10 @@ static void DmaIrqConfig(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: DmaIrqRegister
|
* 函数名称: DmaIrqRegister
|
||||||
* 功能描述: DMA配置
|
* 功能描述: DMA配置
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
static void Dma_Config(void)
|
static void Dma_Config(void)
|
||||||
{
|
{
|
||||||
@@ -1408,10 +1408,10 @@ static void Dma_Config(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: ReadAdcValue
|
* 函数名称: ReadAdcValue
|
||||||
* 功能描述: 读取AD值
|
* 功能描述: 读取AD值
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: AD值
|
* 返 回 值: AD值
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
uint16_t *GetADCBuffPoint(void)
|
uint16_t *GetADCBuffPoint(void)
|
||||||
{
|
{
|
||||||
@@ -1419,10 +1419,10 @@ uint16_t *GetADCBuffPoint(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: ADC_Start
|
* 函数名称: ADC_Start
|
||||||
* 功能描述: 启动ADC转换
|
* 功能描述: 启动ADC转换
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: AD值
|
* 返 回 值: AD值
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
void ADC_Start(void)
|
void ADC_Start(void)
|
||||||
{
|
{
|
||||||
@@ -1434,10 +1434,10 @@ void ADC_Stop(void)
|
|||||||
ADC_StopConvert(M4_ADC1);
|
ADC_StopConvert(M4_ADC1);
|
||||||
}
|
}
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: ReadAdcValue
|
* 函数名称: ReadAdcValue
|
||||||
* 功能描述: 读取AD值
|
* 功能描述: 读取AD值
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: AD值
|
* 返 回 值: AD值
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
void ReadAdcValue(uint16_t *ADValue)
|
void ReadAdcValue(uint16_t *ADValue)
|
||||||
{
|
{
|
||||||
@@ -1483,10 +1483,10 @@ void BSP_Init(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: EnterStop
|
* 函数名称: EnterStop
|
||||||
* 功能描述: 进入低功耗状态
|
* 功能描述: 进入低功耗状态
|
||||||
* 参 数: SleepStatus 设备低功耗状态
|
* 参 数: SleepStatus 设备低功耗状态
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
void EnterStop(void)
|
void EnterStop(void)
|
||||||
{
|
{
|
||||||
@@ -1526,10 +1526,10 @@ void EnterStop(void)
|
|||||||
|
|
||||||
extern uint8_t BDRxData[256];
|
extern uint8_t BDRxData[256];
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: Wakeup
|
* 函数名称: Wakeup
|
||||||
* 功能描述: 设备唤醒
|
* 功能描述: 设备唤醒
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
void Wakeup(void)
|
void Wakeup(void)
|
||||||
{
|
{
|
||||||
@@ -1629,10 +1629,10 @@ __WEAK void Usart3_RxPinIntCallBack(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: RtcPeriod_IrqCallback
|
* 函数名称: RtcPeriod_IrqCallback
|
||||||
* 功能描述: RTC中断回调
|
* 功能描述: RTC中断回调
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
__WEAK void RtcPeriod_IrqCallback(void)
|
__WEAK void RtcPeriod_IrqCallback(void)
|
||||||
{
|
{
|
||||||
@@ -1640,10 +1640,10 @@ __WEAK void RtcPeriod_IrqCallback(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: Dma1Btc0_IrqHandler
|
* 函数名称: Dma1Btc0_IrqHandler
|
||||||
* 功能描述: DMA中断外部重定向回调函数
|
* 功能描述: DMA中断外部重定向回调函数
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
extern void ADC_DMA_CallBack(void);
|
extern void ADC_DMA_CallBack(void);
|
||||||
//int test = 0;
|
//int test = 0;
|
||||||
|
|||||||
@@ -15,8 +15,8 @@
|
|||||||
#define MAIN_DBG_LOG(...) DBG_LOG(__VA_ARGS__)
|
#define MAIN_DBG_LOG(...) DBG_LOG(__VA_ARGS__)
|
||||||
#define MAIN_DBG_ARRAY(ARRAY, SIZE) DBG_ARRAY(ARRAY,SIZE)
|
#define MAIN_DBG_ARRAY(ARRAY, SIZE) DBG_ARRAY(ARRAY,SIZE)
|
||||||
|
|
||||||
#define SOFTWARE_VERSION 11 //软件版本
|
#define SOFTWARE_VERSION 11 //软件版本
|
||||||
#define HARDWARE_VERSION 20 //硬件版本
|
#define HARDWARE_VERSION 20 //硬件版本
|
||||||
|
|
||||||
AppDetect_t App;
|
AppDetect_t App;
|
||||||
|
|
||||||
@@ -164,7 +164,7 @@ void GradeControl(ControlLevel_m level)
|
|||||||
App.ADTrack.LeftUpVPT = 18000;
|
App.ADTrack.LeftUpVPT = 18000;
|
||||||
App.ADTrack.LeftLowVPT = 18000;
|
App.ADTrack.LeftLowVPT = 18000;
|
||||||
App.ADTrack.RightUpVPT = 18000;
|
App.ADTrack.RightUpVPT = 18000;
|
||||||
App.ADTrack.RightLowVPT = 18000;
|
App.ADTrack.RightLowVPT = 18000;
|
||||||
App.ADTrack.Stop_VPT = 15000;
|
App.ADTrack.Stop_VPT = 15000;
|
||||||
break;}
|
break;}
|
||||||
|
|
||||||
@@ -173,7 +173,7 @@ void GradeControl(ControlLevel_m level)
|
|||||||
App.ADTrack.LeftUpVPT = 25000;
|
App.ADTrack.LeftUpVPT = 25000;
|
||||||
App.ADTrack.LeftLowVPT = 25000;
|
App.ADTrack.LeftLowVPT = 25000;
|
||||||
App.ADTrack.RightUpVPT = 25000;
|
App.ADTrack.RightUpVPT = 25000;
|
||||||
App.ADTrack.RightLowVPT = 25000;
|
App.ADTrack.RightLowVPT = 25000;
|
||||||
App.ADTrack.Stop_VPT = 19000;
|
App.ADTrack.Stop_VPT = 19000;
|
||||||
break;}
|
break;}
|
||||||
|
|
||||||
@@ -182,7 +182,7 @@ void GradeControl(ControlLevel_m level)
|
|||||||
App.ADTrack.LeftUpVPT = 30000;
|
App.ADTrack.LeftUpVPT = 30000;
|
||||||
App.ADTrack.LeftLowVPT = 30000;
|
App.ADTrack.LeftLowVPT = 30000;
|
||||||
App.ADTrack.RightUpVPT = 30000;
|
App.ADTrack.RightUpVPT = 30000;
|
||||||
App.ADTrack.RightLowVPT = 30000;
|
App.ADTrack.RightLowVPT = 30000;
|
||||||
App.ADTrack.Stop_VPT = 25000;
|
App.ADTrack.Stop_VPT = 25000;
|
||||||
break;}
|
break;}
|
||||||
}
|
}
|
||||||
@@ -257,19 +257,12 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
|
|||||||
App.RightUpCS1237_SlopeArray[0] = ru_slope;
|
App.RightUpCS1237_SlopeArray[0] = ru_slope;
|
||||||
App.RightLowCS1237_SlopeArray[0] = rl_slope;
|
App.RightLowCS1237_SlopeArray[0] = rl_slope;
|
||||||
|
|
||||||
// PeakValleyCheck lu_K = check_peaks_valleys(App.LeftUpCS1237_SlopeArray, SLOPE_CNT);
|
|
||||||
// PeakValleyCheck ll_K = check_peaks_valleys(App.LeftLowCS1237_SlopeArray, SLOPE_CNT);
|
|
||||||
// PeakValleyCheck ru_K = check_peaks_valleys(App.RightUpCS1237_SlopeArray, SLOPE_CNT);
|
|
||||||
// PeakValleyCheck rl_K = check_peaks_valleys(App.RightLowCS1237_SlopeArray, SLOPE_CNT);
|
|
||||||
|
|
||||||
int32_t LeftSlopeSum = abs(App.LeftUpCS1237_SlopeArray[0]) + abs(App.LeftLowCS1237_SlopeArray[0]) + abs(App.LeftUpCS1237_SlopeArray[1]) + abs(App.LeftLowCS1237_SlopeArray[1]) + abs(App.LeftUpCS1237_SlopeArray[2]) + abs(App.LeftLowCS1237_SlopeArray[2]);
|
int32_t LeftSlopeSum = abs(App.LeftUpCS1237_SlopeArray[0]) + abs(App.LeftLowCS1237_SlopeArray[0]) + abs(App.LeftUpCS1237_SlopeArray[1]) + abs(App.LeftLowCS1237_SlopeArray[1]) + abs(App.LeftUpCS1237_SlopeArray[2]) + abs(App.LeftLowCS1237_SlopeArray[2]);
|
||||||
int32_t RightSlopeSum = abs(App.RightUpCS1237_SlopeArray[0]) + abs(App.RightLowCS1237_SlopeArray[0]) + abs(App.RightUpCS1237_SlopeArray[1]) + abs(App.RightLowCS1237_SlopeArray[1]) + abs(App.RightUpCS1237_SlopeArray[2]) + abs(App.RightLowCS1237_SlopeArray[2]);
|
int32_t RightSlopeSum = abs(App.RightUpCS1237_SlopeArray[0]) + abs(App.RightLowCS1237_SlopeArray[0]) + abs(App.RightUpCS1237_SlopeArray[1]) + abs(App.RightLowCS1237_SlopeArray[1]) + abs(App.RightUpCS1237_SlopeArray[2]) + abs(App.RightLowCS1237_SlopeArray[2]);
|
||||||
int32_t LeftDiffSum = abs(lu_diff[0]) + abs(lu_diff[1]) + abs(lu_diff[2]) + abs(ll_diff[0]) + abs(ll_diff[1]) + abs(ll_diff[2]);
|
int32_t LeftDiffSum = abs(lu_diff[0]) + abs(lu_diff[1]) + abs(lu_diff[2]) + abs(ll_diff[0]) + abs(ll_diff[1]) + abs(ll_diff[2]);
|
||||||
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 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 LuSideDiff = lu_ad[0] - lu_ad[5];
|
int32_t LeftDiff = abs(Oll_diff1) + abs(Olu_diff1) + abs(Oll_diff2) + abs(Olu_diff2) + abs(Oll_diff3) + abs(Olu_diff3);
|
||||||
int32_t LlSideDiff = ll_ad[0] - ll_ad[5];
|
int32_t RightDiff = abs(Orl_diff1) + abs(Oru_diff1) + abs(Orl_diff2) + abs(Oru_diff2) + abs(Orl_diff3) + abs(Oru_diff3);
|
||||||
int32_t RuSideDiff = ru_ad[0] - ru_ad[5];
|
|
||||||
int32_t RlSideDiff = rl_ad[0] - rl_ad[5];
|
|
||||||
|
|
||||||
if(App.EmeFlag == true)
|
if(App.EmeFlag == true)
|
||||||
{
|
{
|
||||||
@@ -297,44 +290,38 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
|
|||||||
App.LeftRunFalg = false;
|
App.LeftRunFalg = false;
|
||||||
App.RightRunFalg = false;
|
App.RightRunFalg = false;
|
||||||
App.CentreRunFalg = false;
|
App.CentreRunFalg = false;
|
||||||
if(((lu_ad[0] < App.ADTrack.LeftUp_Org_AdZero-App.ddd)//判断中间操作
|
if(((lu_ad[0] < App.ADTrack.LeftUp_Org_AdZero-CENTRE_VPT)//判断中间操作
|
||||||
&& (ru_ad[0] < App.ADTrack.RightUp_Org_AdZero-App.ddd)
|
&& (ru_ad[0] < App.ADTrack.RightUp_Org_AdZero-CENTRE_VPT)
|
||||||
&& (lu_ad[1] < App.ADTrack.LeftUp_Org_AdZero-App.ddd)
|
&& (lu_ad[1] < App.ADTrack.LeftUp_Org_AdZero-CENTRE_VPT)
|
||||||
&& (ru_ad[1] < App.ADTrack.RightUp_Org_AdZero-App.ddd)
|
&& (ru_ad[1] < App.ADTrack.RightUp_Org_AdZero-CENTRE_VPT)
|
||||||
&& (lu_ad[2] < App.ADTrack.LeftUp_Org_AdZero-App.ddd)
|
&& (lu_ad[2] < App.ADTrack.LeftUp_Org_AdZero-CENTRE_VPT)
|
||||||
&& (ru_ad[2] < App.ADTrack.RightUp_Org_AdZero-App.ddd)
|
&& (ru_ad[2] < App.ADTrack.RightUp_Org_AdZero-CENTRE_VPT)
|
||||||
&& (ll_ad[0] > App.ADTrack.LeftLow_Org_AdZero+App.ddd)//判断中间操作
|
&& (ll_ad[0] > App.ADTrack.LeftLow_Org_AdZero+CENTRE_VPT)//判断中间操作
|
||||||
&& (rl_ad[0] > App.ADTrack.RightLow_Org_AdZero+App.ddd)
|
&& (rl_ad[0] > App.ADTrack.RightLow_Org_AdZero+CENTRE_VPT)
|
||||||
&& (ll_ad[1] > App.ADTrack.LeftLow_Org_AdZero+App.ddd)
|
&& (ll_ad[1] > App.ADTrack.LeftLow_Org_AdZero+CENTRE_VPT)
|
||||||
&& (rl_ad[1] > App.ADTrack.RightLow_Org_AdZero+App.ddd)
|
&& (rl_ad[1] > App.ADTrack.RightLow_Org_AdZero+CENTRE_VPT)
|
||||||
&& (ll_ad[2] > App.ADTrack.LeftLow_Org_AdZero+App.ddd)
|
&& (ll_ad[2] > App.ADTrack.LeftLow_Org_AdZero+CENTRE_VPT)
|
||||||
&& (rl_ad[2] > App.ADTrack.RightLow_Org_AdZero+App.ddd))
|
&& (rl_ad[2] > App.ADTrack.RightLow_Org_AdZero+CENTRE_VPT))
|
||||||
|| ((lu_ad[0] > App.ADTrack.LeftUp_Org_AdZero+App.ddd)//判断中间操作
|
|| ((lu_ad[0] > App.ADTrack.LeftUp_Org_AdZero+CENTRE_VPT)//判断中间操作
|
||||||
&& (ru_ad[0] > App.ADTrack.RightUp_Org_AdZero+App.ddd)
|
&& (ru_ad[0] > App.ADTrack.RightUp_Org_AdZero+CENTRE_VPT)
|
||||||
&& (lu_ad[1] > App.ADTrack.LeftUp_Org_AdZero+App.ddd)
|
&& (lu_ad[1] > App.ADTrack.LeftUp_Org_AdZero+CENTRE_VPT)
|
||||||
&& (ru_ad[1] > App.ADTrack.RightUp_Org_AdZero+App.ddd)
|
&& (ru_ad[1] > App.ADTrack.RightUp_Org_AdZero+CENTRE_VPT)
|
||||||
&& (lu_ad[2] > App.ADTrack.LeftUp_Org_AdZero+App.ddd)
|
&& (lu_ad[2] > App.ADTrack.LeftUp_Org_AdZero+CENTRE_VPT)
|
||||||
&& (ru_ad[2] > App.ADTrack.RightUp_Org_AdZero+App.ddd)
|
&& (ru_ad[2] > App.ADTrack.RightUp_Org_AdZero+CENTRE_VPT)
|
||||||
&& (ll_ad[0] < App.ADTrack.LeftLow_Org_AdZero-App.ddd)//判断中间操作
|
&& (ll_ad[0] < App.ADTrack.LeftLow_Org_AdZero-CENTRE_VPT)//判断中间操作
|
||||||
&& (rl_ad[0] < App.ADTrack.RightLow_Org_AdZero-App.ddd)
|
&& (rl_ad[0] < App.ADTrack.RightLow_Org_AdZero-CENTRE_VPT)
|
||||||
&& (ll_ad[1] < App.ADTrack.LeftLow_Org_AdZero-App.ddd)
|
&& (ll_ad[1] < App.ADTrack.LeftLow_Org_AdZero-CENTRE_VPT)
|
||||||
&& (rl_ad[1] < App.ADTrack.RightLow_Org_AdZero-App.ddd)
|
&& (rl_ad[1] < App.ADTrack.RightLow_Org_AdZero-CENTRE_VPT)
|
||||||
&& (ll_ad[2] < App.ADTrack.LeftLow_Org_AdZero-App.ddd)
|
&& (ll_ad[2] < App.ADTrack.LeftLow_Org_AdZero-CENTRE_VPT)
|
||||||
&& (rl_ad[2] < App.ADTrack.RightLow_Org_AdZero-App.ddd))
|
&& (rl_ad[2] < App.ADTrack.RightLow_Org_AdZero-CENTRE_VPT))
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
App.CentreRunFalg = true;
|
App.CentreRunFalg = true;
|
||||||
App.CentCollDelay1mSCnt = CENT_TIME_MS;
|
App.CentCollDelay1mSCnt = CENT_TIME_MS;
|
||||||
if(abs(Oll_diff1) + 100 > abs(Orl_diff1)
|
if(LeftDiff > RightDiff)//判断偏左
|
||||||
&& abs(Oll_diff2) + 100 > abs(Orl_diff2)
|
|
||||||
&& abs(Oll_diff3) + 100 > abs(Orl_diff3)
|
|
||||||
&& abs(Olu_diff1) + 100 > abs(Oru_diff1)
|
|
||||||
&& abs(Olu_diff2) + 100 > abs(Oru_diff2)
|
|
||||||
&& abs(Olu_diff3) + 100 > abs(Oru_diff3)
|
|
||||||
)//判断偏左还是偏右
|
|
||||||
{
|
{
|
||||||
App.LeftRunFalg = true;
|
App.LeftRunFalg = true;
|
||||||
if(((Olu_diff1+Oru_diff1) > (App.ADTrack.Stop_VPT))//判断上拉
|
if(((Olu_diff1+Oru_diff1) > (App.ADTrack.Stop_VPT))//判断上拉
|
||||||
&& ((Olu_diff2+Oru_diff2) > (App.ADTrack.Stop_VPT))
|
&& ((Olu_diff2+Oru_diff2) > (App.ADTrack.Stop_VPT))
|
||||||
&& ((Olu_diff3+Oru_diff3) > (App.ADTrack.Stop_VPT))
|
&& ((Olu_diff3+Oru_diff3) > (App.ADTrack.Stop_VPT))
|
||||||
&& ((Oll_diff1+Orl_diff1) < -(App.ADTrack.Stop_VPT))
|
&& ((Oll_diff1+Orl_diff1) < -(App.ADTrack.Stop_VPT))
|
||||||
@@ -342,18 +329,7 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
|
|||||||
&& ((Oll_diff3+Orl_diff3) < -(App.ADTrack.Stop_VPT))
|
&& ((Oll_diff3+Orl_diff3) < -(App.ADTrack.Stop_VPT))
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if((App.RightUpCS1237_SlopeArray[0] <= -PRESS_VPT) //判断是否不是正面压
|
// if(App.CaliZeroFlag == true)//判断是否校零
|
||||||
&& (App.RightUpCS1237_SlopeArray[1] <= -PRESS_VPT)
|
|
||||||
&& (App.RightUpCS1237_SlopeArray[2] <= -PRESS_VPT)
|
|
||||||
&& (App.RightLowCS1237_SlopeArray[0] >= PRESS_VPT)
|
|
||||||
&& (App.RightLowCS1237_SlopeArray[1] >= PRESS_VPT)
|
|
||||||
&& (App.RightLowCS1237_SlopeArray[2] >= PRESS_VPT)
|
|
||||||
&& (App.LeftUpCS1237_SlopeArray[0] <= -PRESS_VPT) //判断是否不是正面压
|
|
||||||
&& (App.LeftUpCS1237_SlopeArray[1] <= -PRESS_VPT)
|
|
||||||
&& (App.LeftUpCS1237_SlopeArray[2] <= -PRESS_VPT)
|
|
||||||
&& (App.LeftLowCS1237_SlopeArray[0] >= PRESS_VPT)
|
|
||||||
&& (App.LeftLowCS1237_SlopeArray[1] >= PRESS_VPT)
|
|
||||||
&& (App.LeftLowCS1237_SlopeArray[2] >= PRESS_VPT))
|
|
||||||
{
|
{
|
||||||
if(App.MotorPara.Current_height < 1195)
|
if(App.MotorPara.Current_height < 1195)
|
||||||
{
|
{
|
||||||
@@ -367,7 +343,7 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(((Olu_diff1+Oru_diff1) < -(App.ADTrack.Stop_VPT))//判断下拉
|
else if(((Olu_diff1+Oru_diff1) < -(App.ADTrack.Stop_VPT))//判断下拉
|
||||||
&& ((Olu_diff2+Oru_diff2) < -(App.ADTrack.Stop_VPT))
|
&& ((Olu_diff2+Oru_diff2) < -(App.ADTrack.Stop_VPT))
|
||||||
&& ((Olu_diff3+Oru_diff3) < -(App.ADTrack.Stop_VPT))
|
&& ((Olu_diff3+Oru_diff3) < -(App.ADTrack.Stop_VPT))
|
||||||
&& ((Oll_diff1+Orl_diff1) > (App.ADTrack.Stop_VPT))
|
&& ((Oll_diff1+Orl_diff1) > (App.ADTrack.Stop_VPT))
|
||||||
@@ -375,18 +351,7 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
|
|||||||
&& ((Oll_diff3+Orl_diff3) > (App.ADTrack.Stop_VPT))
|
&& ((Oll_diff3+Orl_diff3) > (App.ADTrack.Stop_VPT))
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if((App.RightUpCS1237_SlopeArray[0] >= PRESS_VPT) //判断是否不是正面压
|
// if(App.CaliZeroFlag == true)//判断是否校零
|
||||||
&& (App.RightUpCS1237_SlopeArray[1] >= PRESS_VPT)
|
|
||||||
&& (App.RightUpCS1237_SlopeArray[2] >= PRESS_VPT)
|
|
||||||
&& (App.RightLowCS1237_SlopeArray[0] <= -PRESS_VPT)
|
|
||||||
&& (App.RightLowCS1237_SlopeArray[1] <= -PRESS_VPT)
|
|
||||||
&& (App.RightLowCS1237_SlopeArray[2] <= -PRESS_VPT)
|
|
||||||
&& (App.LeftUpCS1237_SlopeArray[0] >= PRESS_VPT) //判断是否不是正面压
|
|
||||||
&& (App.LeftUpCS1237_SlopeArray[1] >= PRESS_VPT)
|
|
||||||
&& (App.LeftUpCS1237_SlopeArray[2] >= PRESS_VPT)
|
|
||||||
&& (App.LeftLowCS1237_SlopeArray[0] <= -PRESS_VPT)
|
|
||||||
&& (App.LeftLowCS1237_SlopeArray[1] <= -PRESS_VPT)
|
|
||||||
&& (App.LeftLowCS1237_SlopeArray[2] <= -PRESS_VPT))
|
|
||||||
{
|
{
|
||||||
if(App.MotorPara.Current_height > 725)
|
if(App.MotorPara.Current_height > 725)
|
||||||
{
|
{
|
||||||
@@ -401,15 +366,10 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(abs(Oll_diff1) + 100 < abs(Orl_diff1)//判断偏左
|
else if(RightDiff > LeftDiff)//判断偏右
|
||||||
&& abs(Oll_diff2) < abs(Orl_diff2) + 100
|
|
||||||
&& abs(Oll_diff3) < abs(Orl_diff3) + 100
|
|
||||||
&& abs(Olu_diff1) < abs(Oru_diff1) + 100
|
|
||||||
&& abs(Olu_diff2) < abs(Oru_diff2) + 100
|
|
||||||
&& abs(Olu_diff3) < abs(Oru_diff3) + 100)
|
|
||||||
{
|
{
|
||||||
App.RightRunFalg = true;
|
App.RightRunFalg = true;
|
||||||
if(((Olu_diff1+Oru_diff1) > (App.ADTrack.Stop_VPT))//判断上拉
|
if(((Olu_diff1+Oru_diff1) > (App.ADTrack.Stop_VPT))//判断上拉
|
||||||
&& ((Olu_diff2+Oru_diff2) > (App.ADTrack.Stop_VPT))
|
&& ((Olu_diff2+Oru_diff2) > (App.ADTrack.Stop_VPT))
|
||||||
&& ((Olu_diff3+Oru_diff3) > (App.ADTrack.Stop_VPT))
|
&& ((Olu_diff3+Oru_diff3) > (App.ADTrack.Stop_VPT))
|
||||||
&& ((Oll_diff1+Orl_diff1) < -(App.ADTrack.Stop_VPT))
|
&& ((Oll_diff1+Orl_diff1) < -(App.ADTrack.Stop_VPT))
|
||||||
@@ -417,18 +377,7 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
|
|||||||
&& ((Oll_diff3+Orl_diff3) < -(App.ADTrack.Stop_VPT))
|
&& ((Oll_diff3+Orl_diff3) < -(App.ADTrack.Stop_VPT))
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if((App.RightUpCS1237_SlopeArray[0] <= -PRESS_VPT) //判断是否不是正面压
|
// if(App.CaliZeroFlag == true)//判断是否校零
|
||||||
&& (App.RightUpCS1237_SlopeArray[1] <= -PRESS_VPT)
|
|
||||||
&& (App.RightUpCS1237_SlopeArray[2] <= -PRESS_VPT)
|
|
||||||
&& (App.RightLowCS1237_SlopeArray[0] >= PRESS_VPT)
|
|
||||||
&& (App.RightLowCS1237_SlopeArray[1] >= PRESS_VPT)
|
|
||||||
&& (App.RightLowCS1237_SlopeArray[2] >= PRESS_VPT)
|
|
||||||
&& (App.LeftUpCS1237_SlopeArray[0] <= -PRESS_VPT) //判断是否不是正面压
|
|
||||||
&& (App.LeftUpCS1237_SlopeArray[1] <= -PRESS_VPT)
|
|
||||||
&& (App.LeftUpCS1237_SlopeArray[2] <= -PRESS_VPT)
|
|
||||||
&& (App.LeftLowCS1237_SlopeArray[0] >= PRESS_VPT)
|
|
||||||
&& (App.LeftLowCS1237_SlopeArray[1] >= PRESS_VPT)
|
|
||||||
&& (App.LeftLowCS1237_SlopeArray[2] >= PRESS_VPT))
|
|
||||||
{
|
{
|
||||||
if(App.MotorPara.Current_height < 1195)
|
if(App.MotorPara.Current_height < 1195)
|
||||||
{
|
{
|
||||||
@@ -442,7 +391,7 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(((Olu_diff1+Oru_diff1) < -(App.ADTrack.Stop_VPT))//判断下拉
|
else if(((Olu_diff1+Oru_diff1) < -(App.ADTrack.Stop_VPT))//判断下拉
|
||||||
&& ((Olu_diff2+Oru_diff2) < -(App.ADTrack.Stop_VPT))
|
&& ((Olu_diff2+Oru_diff2) < -(App.ADTrack.Stop_VPT))
|
||||||
&& ((Olu_diff3+Oru_diff3) < -(App.ADTrack.Stop_VPT))
|
&& ((Olu_diff3+Oru_diff3) < -(App.ADTrack.Stop_VPT))
|
||||||
&& ((Oll_diff1+Orl_diff1) > (App.ADTrack.Stop_VPT))
|
&& ((Oll_diff1+Orl_diff1) > (App.ADTrack.Stop_VPT))
|
||||||
@@ -450,18 +399,7 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
|
|||||||
&& ((Oll_diff3+Orl_diff3) > (App.ADTrack.Stop_VPT))
|
&& ((Oll_diff3+Orl_diff3) > (App.ADTrack.Stop_VPT))
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if((App.RightUpCS1237_SlopeArray[0] >= PRESS_VPT) //判断是否不是正面压
|
// if(App.CaliZeroFlag == true)//判断是否校零
|
||||||
&& (App.RightUpCS1237_SlopeArray[1] >= PRESS_VPT)
|
|
||||||
&& (App.RightUpCS1237_SlopeArray[2] >= PRESS_VPT)
|
|
||||||
&& (App.RightLowCS1237_SlopeArray[0] <= -PRESS_VPT)
|
|
||||||
&& (App.RightLowCS1237_SlopeArray[1] <= -PRESS_VPT)
|
|
||||||
&& (App.RightLowCS1237_SlopeArray[2] <= -PRESS_VPT)
|
|
||||||
&& (App.LeftUpCS1237_SlopeArray[0] >= PRESS_VPT) //判断是否不是正面压
|
|
||||||
&& (App.LeftUpCS1237_SlopeArray[1] >= PRESS_VPT)
|
|
||||||
&& (App.LeftUpCS1237_SlopeArray[2] >= PRESS_VPT)
|
|
||||||
&& (App.LeftLowCS1237_SlopeArray[0] <= -PRESS_VPT)
|
|
||||||
&& (App.LeftLowCS1237_SlopeArray[1] <= -PRESS_VPT)
|
|
||||||
&& (App.LeftLowCS1237_SlopeArray[2] <= -PRESS_VPT))
|
|
||||||
{
|
{
|
||||||
if(App.MotorPara.Current_height > 725)
|
if(App.MotorPara.Current_height > 725)
|
||||||
{
|
{
|
||||||
@@ -477,51 +415,33 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if((LeftSlopeSum > RightSlopeSum && LeftDiffSum > RightDiffSum && App.CentCollDelay1mSCnt <= 0))//判断左边操作
|
else if((LeftSlopeSum > RightSlopeSum && LeftDiffSum > RightDiffSum && App.CentCollDelay1mSCnt <= 0))//判断左边操作
|
||||||
{
|
{
|
||||||
App.LeftRunFalg = true;
|
App.LeftRunFalg = true;
|
||||||
if((Olu_diff1 >= (App.ADTrack.LeftUpVPT*5/6)) //通过差值判断上下拉方向
|
if((Olu_diff1 >= (App.ADTrack.LeftUpVPT*5/6)) //通过差值判断上下拉方向
|
||||||
&& (Olu_diff2 >= (App.ADTrack.LeftUpVPT*5/6))
|
&& (Olu_diff2 >= (App.ADTrack.LeftUpVPT*5/6))
|
||||||
&& (Olu_diff3 >= (App.ADTrack.LeftUpVPT*5/6))
|
&& (Olu_diff3 >= (App.ADTrack.LeftUpVPT*5/6))
|
||||||
&& (Oll_diff1 <= -(App.ADTrack.LeftLowVPT*5/6))
|
&& (Oll_diff1 <= -(App.ADTrack.LeftLowVPT*5/6))
|
||||||
&& (Oll_diff2 <= -(App.ADTrack.LeftLowVPT*5/6))
|
&& (Oll_diff2 <= -(App.ADTrack.LeftLowVPT*5/6))
|
||||||
&& (Oll_diff3 <= -(App.ADTrack.LeftLowVPT*5/6)))
|
&& (Oll_diff3 <= -(App.ADTrack.LeftLowVPT*5/6)))
|
||||||
{
|
{
|
||||||
if(((App.LeftUpCS1237_SlopeArray[0] <= -PRESS_VPT)//判断是否不是正面压
|
if(((App.LeftUpCS1237_SlopeArray[0] <= -PRESS_VPT)//判断是否不是正面压
|
||||||
&& (App.LeftUpCS1237_SlopeArray[1] <= -PRESS_VPT)
|
&& (App.LeftUpCS1237_SlopeArray[1] <= -PRESS_VPT)
|
||||||
&& (App.LeftUpCS1237_SlopeArray[2] <= -PRESS_VPT)
|
&& (App.LeftUpCS1237_SlopeArray[2] <= -PRESS_VPT)
|
||||||
&& (App.LeftLowCS1237_SlopeArray[0] >= PRESS_VPT)
|
&& (App.LeftLowCS1237_SlopeArray[0] >= PRESS_VPT)
|
||||||
&& (App.LeftLowCS1237_SlopeArray[1] >= PRESS_VPT)
|
&& (App.LeftLowCS1237_SlopeArray[1] >= PRESS_VPT)
|
||||||
&& (App.LeftLowCS1237_SlopeArray[2] >= PRESS_VPT)
|
&& (App.LeftLowCS1237_SlopeArray[2] >= PRESS_VPT))
|
||||||
&& (App.RightUpCS1237_SlopeArray[0] >= PRESS_VPT) //判断是否不是正面压
|
|
||||||
&& (App.RightUpCS1237_SlopeArray[1] >= PRESS_VPT)
|
|
||||||
&& (App.RightUpCS1237_SlopeArray[2] >= PRESS_VPT)
|
|
||||||
&& (App.RightLowCS1237_SlopeArray[0] <= -PRESS_VPT)
|
|
||||||
&& (App.RightLowCS1237_SlopeArray[1] <= -PRESS_VPT)
|
|
||||||
&& (App.RightLowCS1237_SlopeArray[2] <= -PRESS_VPT))
|
|
||||||
|| ((App.LeftUpCS1237_SlopeArray[0] <= -PRESS_VPT) //判断是否不是正面压
|
|
||||||
&& (App.LeftUpCS1237_SlopeArray[1] <= -PRESS_VPT)
|
|
||||||
&& (App.LeftUpCS1237_SlopeArray[2] <= -PRESS_VPT)
|
|
||||||
&& (App.LeftLowCS1237_SlopeArray[0] >= PRESS_VPT)
|
|
||||||
&& (App.LeftLowCS1237_SlopeArray[1] >= PRESS_VPT)
|
|
||||||
&& (App.LeftLowCS1237_SlopeArray[2] >= PRESS_VPT)
|
|
||||||
&& (App.RightUpCS1237_SlopeArray[0] <= -PRESS_VPT) //判断是否不是正面压
|
|
||||||
&& (App.RightUpCS1237_SlopeArray[1] <= -PRESS_VPT)
|
|
||||||
&& (App.RightUpCS1237_SlopeArray[2] <= -PRESS_VPT)
|
|
||||||
&& (App.RightLowCS1237_SlopeArray[0] <= -PRESS_VPT)
|
|
||||||
&& (App.RightLowCS1237_SlopeArray[1] <= -PRESS_VPT)
|
|
||||||
&& (App.RightLowCS1237_SlopeArray[2] <= -PRESS_VPT))
|
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
// if(App.CaliZeroFlag == true)//判断是否校零
|
// if(App.CaliZeroFlag == true)//判断是否校零
|
||||||
{
|
{
|
||||||
// if((abs(Olu_diff1) > abs(Oru_diff1) * SHIELD_VPT)//判断是否不是侧面推拉
|
if((abs(Olu_diff1) > abs(Oru_diff1) * SHIELD_VPT)//判断是否不是侧面推拉
|
||||||
// && (abs(Olu_diff2) > abs(Oru_diff2) * SHIELD_VPT)
|
&& (abs(Olu_diff2) > abs(Oru_diff2) * SHIELD_VPT)
|
||||||
// && (abs(Olu_diff3) > abs(Oru_diff3) * SHIELD_VPT)
|
&& (abs(Olu_diff3) > abs(Oru_diff3) * SHIELD_VPT)
|
||||||
// && (abs(Oll_diff1) > abs(Orl_diff1) * SHIELD_VPT)
|
&& (abs(Oll_diff1) > abs(Orl_diff1) * SHIELD_VPT)
|
||||||
// && (abs(Oll_diff3) > abs(Orl_diff2) * SHIELD_VPT)
|
&& (abs(Oll_diff3) > abs(Orl_diff2) * SHIELD_VPT)
|
||||||
// && (abs(Oll_diff3) > abs(Orl_diff3) * SHIELD_VPT)
|
&& (abs(Oll_diff3) > abs(Orl_diff3) * SHIELD_VPT)
|
||||||
// )
|
)
|
||||||
{
|
{
|
||||||
if(App.MotorPara.Current_height < 1195)
|
if(App.MotorPara.Current_height < 1195)
|
||||||
{
|
{
|
||||||
@@ -537,7 +457,7 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(((Olu_diff1 <= -(App.ADTrack.LeftUpVPT*5/6))//通过差值判断上下拉方向
|
else if(((Olu_diff1 <= -(App.ADTrack.LeftUpVPT*5/6))//通过差值判断上下拉方向
|
||||||
&& (Olu_diff2 <= -(App.ADTrack.LeftUpVPT*5/6))
|
&& (Olu_diff2 <= -(App.ADTrack.LeftUpVPT*5/6))
|
||||||
&& (Olu_diff3 <= -(App.ADTrack.LeftUpVPT*5/6))
|
&& (Olu_diff3 <= -(App.ADTrack.LeftUpVPT*5/6))
|
||||||
&& (Oll_diff1 >= (App.ADTrack.LeftLowVPT*5/6))
|
&& (Oll_diff1 >= (App.ADTrack.LeftLowVPT*5/6))
|
||||||
@@ -545,41 +465,23 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
|
|||||||
&& (Oll_diff3 >= (App.ADTrack.LeftLowVPT*5/6)))
|
&& (Oll_diff3 >= (App.ADTrack.LeftLowVPT*5/6)))
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if(((App.LeftUpCS1237_SlopeArray[0] >= PRESS_VPT) //判断是否不是正面压
|
if(((App.LeftUpCS1237_SlopeArray[0] >= PRESS_VPT) //判断是否不是正面压
|
||||||
&& (App.LeftUpCS1237_SlopeArray[1] >= PRESS_VPT)
|
&& (App.LeftUpCS1237_SlopeArray[1] >= PRESS_VPT)
|
||||||
&& (App.LeftUpCS1237_SlopeArray[2] >= PRESS_VPT)
|
&& (App.LeftUpCS1237_SlopeArray[2] >= PRESS_VPT)
|
||||||
&& (App.LeftLowCS1237_SlopeArray[0] <= -PRESS_VPT)
|
&& (App.LeftLowCS1237_SlopeArray[0] <= -PRESS_VPT)
|
||||||
&& (App.LeftLowCS1237_SlopeArray[1] <= -PRESS_VPT)
|
&& (App.LeftLowCS1237_SlopeArray[1] <= -PRESS_VPT)
|
||||||
&& (App.LeftLowCS1237_SlopeArray[2] <= -PRESS_VPT)
|
&& (App.LeftLowCS1237_SlopeArray[2] <= -PRESS_VPT))
|
||||||
&& (App.RightUpCS1237_SlopeArray[0] <= -PRESS_VPT) //判断是否不是正面压
|
|
||||||
&& (App.RightUpCS1237_SlopeArray[1] <= -PRESS_VPT)
|
|
||||||
&& (App.RightUpCS1237_SlopeArray[2] <= -PRESS_VPT)
|
|
||||||
&& (App.RightLowCS1237_SlopeArray[0] >= PRESS_VPT)
|
|
||||||
&& (App.RightLowCS1237_SlopeArray[1] >= PRESS_VPT)
|
|
||||||
&& (App.RightLowCS1237_SlopeArray[2] >= PRESS_VPT))
|
|
||||||
|| ((App.LeftUpCS1237_SlopeArray[0] >= PRESS_VPT) //判断是否不是正面压
|
|
||||||
&& (App.LeftUpCS1237_SlopeArray[1] >= PRESS_VPT)
|
|
||||||
&& (App.LeftUpCS1237_SlopeArray[2] >= PRESS_VPT)
|
|
||||||
&& (App.LeftLowCS1237_SlopeArray[0] <= -PRESS_VPT)
|
|
||||||
&& (App.LeftLowCS1237_SlopeArray[1] <= -PRESS_VPT)
|
|
||||||
&& (App.LeftLowCS1237_SlopeArray[2] <= -PRESS_VPT)
|
|
||||||
&& (App.RightUpCS1237_SlopeArray[0] >= PRESS_VPT) //判断是否不是正面压
|
|
||||||
&& (App.RightUpCS1237_SlopeArray[1] >= PRESS_VPT)
|
|
||||||
&& (App.RightUpCS1237_SlopeArray[2] >= PRESS_VPT)
|
|
||||||
&& (App.RightLowCS1237_SlopeArray[0] >= PRESS_VPT)
|
|
||||||
&& (App.RightLowCS1237_SlopeArray[1] >= PRESS_VPT)
|
|
||||||
&& (App.RightLowCS1237_SlopeArray[2] >= PRESS_VPT))
|
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
// if(App.CaliZeroFlag == true)//判断是否校零
|
// if(App.CaliZeroFlag == true)//判断是否校零
|
||||||
{
|
{
|
||||||
// if((abs(Olu_diff1) > abs(Oru_diff1) * SHIELD_VPT)//判断是否不是侧面推拉
|
if((abs(Olu_diff1) > abs(Oru_diff1) * SHIELD_VPT)//判断是否不是侧面推拉
|
||||||
// && (abs(Olu_diff2) > abs(Oru_diff2) * SHIELD_VPT)
|
&& (abs(Olu_diff2) > abs(Oru_diff2) * SHIELD_VPT)
|
||||||
// && (abs(Olu_diff3) > abs(Oru_diff3) * SHIELD_VPT)
|
&& (abs(Olu_diff3) > abs(Oru_diff3) * SHIELD_VPT)
|
||||||
// && (abs(Oll_diff1) > abs(Orl_diff1) * SHIELD_VPT)
|
&& (abs(Oll_diff1) > abs(Orl_diff1) * SHIELD_VPT)
|
||||||
// && (abs(Oll_diff3) > abs(Orl_diff2) * SHIELD_VPT)
|
&& (abs(Oll_diff3) > abs(Orl_diff2) * SHIELD_VPT)
|
||||||
// && (abs(Oll_diff3) > abs(Orl_diff3) * SHIELD_VPT)
|
&& (abs(Oll_diff3) > abs(Orl_diff3) * SHIELD_VPT)
|
||||||
// )
|
)
|
||||||
{
|
{
|
||||||
if(App.MotorPara.Current_height > 725)
|
if(App.MotorPara.Current_height > 725)
|
||||||
{
|
{
|
||||||
@@ -596,51 +498,33 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(LeftSlopeSum < RightSlopeSum && LeftDiffSum < RightDiffSum && App.CentCollDelay1mSCnt <= 0)//判断右边操作
|
else if(LeftSlopeSum < RightSlopeSum && LeftDiffSum < RightDiffSum && App.CentCollDelay1mSCnt <= 0)//判断右边操作
|
||||||
{
|
{
|
||||||
App.RightRunFalg = true;
|
App.RightRunFalg = true;
|
||||||
if((Oru_diff1 >= (App.ADTrack.RightUpVPT*5/6)) //通过差值判断上下拉方向
|
if((Oru_diff1 >= (App.ADTrack.RightUpVPT*5/6)) //通过差值判断上下拉方向
|
||||||
&& (Oru_diff2 >= (App.ADTrack.RightUpVPT*5/6))
|
&& (Oru_diff2 >= (App.ADTrack.RightUpVPT*5/6))
|
||||||
&& (Oru_diff3 >= (App.ADTrack.RightUpVPT*5/6))
|
&& (Oru_diff3 >= (App.ADTrack.RightUpVPT*5/6))
|
||||||
&& (Orl_diff1 <= -(App.ADTrack.RightLowVPT*5/6))
|
&& (Orl_diff1 <= -(App.ADTrack.RightLowVPT*5/6))
|
||||||
&& (Orl_diff2 <= -(App.ADTrack.RightLowVPT*5/6))
|
&& (Orl_diff2 <= -(App.ADTrack.RightLowVPT*5/6))
|
||||||
&& (Orl_diff3 <= -(App.ADTrack.RightLowVPT*5/6)))
|
&& (Orl_diff3 <= -(App.ADTrack.RightLowVPT*5/6)))
|
||||||
{
|
{
|
||||||
if(((App.RightUpCS1237_SlopeArray[0] <= -PRESS_VPT) //判断是否不是正面压
|
if(((App.RightUpCS1237_SlopeArray[0] <= -PRESS_VPT) //判断是否不是正面压
|
||||||
&& (App.RightUpCS1237_SlopeArray[1] <= -PRESS_VPT)
|
&& (App.RightUpCS1237_SlopeArray[1] <= -PRESS_VPT)
|
||||||
&& (App.RightUpCS1237_SlopeArray[2] <= -PRESS_VPT)
|
&& (App.RightUpCS1237_SlopeArray[2] <= -PRESS_VPT)
|
||||||
&& (App.RightLowCS1237_SlopeArray[0] >= PRESS_VPT)
|
&& (App.RightLowCS1237_SlopeArray[0] >= PRESS_VPT)
|
||||||
&& (App.RightLowCS1237_SlopeArray[1] >= PRESS_VPT)
|
&& (App.RightLowCS1237_SlopeArray[1] >= PRESS_VPT)
|
||||||
&& (App.RightLowCS1237_SlopeArray[2] >= PRESS_VPT)
|
&& (App.RightLowCS1237_SlopeArray[2] >= PRESS_VPT))
|
||||||
&& (App.LeftUpCS1237_SlopeArray[0] >= PRESS_VPT) //判断是否不是正面压
|
|
||||||
&& (App.LeftUpCS1237_SlopeArray[1] >= PRESS_VPT)
|
|
||||||
&& (App.LeftUpCS1237_SlopeArray[2] >= PRESS_VPT)
|
|
||||||
&& (App.LeftLowCS1237_SlopeArray[0] <= -PRESS_VPT)
|
|
||||||
&& (App.LeftLowCS1237_SlopeArray[1] <= -PRESS_VPT)
|
|
||||||
&& (App.LeftLowCS1237_SlopeArray[2] <= -PRESS_VPT))
|
|
||||||
|| ((App.RightUpCS1237_SlopeArray[0] <= -PRESS_VPT) //判断是否不是正面压
|
|
||||||
&& (App.RightUpCS1237_SlopeArray[1] <= -PRESS_VPT)
|
|
||||||
&& (App.RightUpCS1237_SlopeArray[2] <= -PRESS_VPT)
|
|
||||||
&& (App.RightLowCS1237_SlopeArray[0] >= PRESS_VPT)
|
|
||||||
&& (App.RightLowCS1237_SlopeArray[1] >= PRESS_VPT)
|
|
||||||
&& (App.RightLowCS1237_SlopeArray[2] >= PRESS_VPT)
|
|
||||||
&& (App.LeftUpCS1237_SlopeArray[0] >= PRESS_VPT) //判断是否不是正面压
|
|
||||||
&& (App.LeftUpCS1237_SlopeArray[1] >= PRESS_VPT)
|
|
||||||
&& (App.LeftUpCS1237_SlopeArray[2] >= PRESS_VPT)
|
|
||||||
&& (App.LeftLowCS1237_SlopeArray[0] >= PRESS_VPT)
|
|
||||||
&& (App.LeftLowCS1237_SlopeArray[1] >= PRESS_VPT)
|
|
||||||
&& (App.LeftLowCS1237_SlopeArray[2] >= PRESS_VPT))
|
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
// if(App.CaliZeroFlag == true)//判断是否校零
|
// if(App.CaliZeroFlag == true)//判断是否校零
|
||||||
{
|
{
|
||||||
// if((abs(Oru_diff1) > abs(Olu_diff1) * SHIELD_VPT)//判断是否不是侧面推拉
|
if((abs(Oru_diff1) > abs(Olu_diff1) * SHIELD_VPT)//判断是否不是侧面推拉
|
||||||
// && (abs(Oru_diff2) > abs(Olu_diff2) * SHIELD_VPT)
|
&& (abs(Oru_diff2) > abs(Olu_diff2) * SHIELD_VPT)
|
||||||
// && (abs(Oru_diff3) > abs(Olu_diff3) * SHIELD_VPT)
|
&& (abs(Oru_diff3) > abs(Olu_diff3) * SHIELD_VPT)
|
||||||
// && (abs(Orl_diff1) > abs(Oll_diff1) * SHIELD_VPT)
|
&& (abs(Orl_diff1) > abs(Oll_diff1) * SHIELD_VPT)
|
||||||
// && (abs(Orl_diff3) > abs(Oll_diff2) * SHIELD_VPT)
|
&& (abs(Orl_diff3) > abs(Oll_diff2) * SHIELD_VPT)
|
||||||
// && (abs(Orl_diff3) > abs(Oll_diff3) * SHIELD_VPT)
|
&& (abs(Orl_diff3) > abs(Oll_diff3) * SHIELD_VPT)
|
||||||
// )
|
)
|
||||||
{
|
{
|
||||||
if(App.MotorPara.Current_height < 1195)
|
if(App.MotorPara.Current_height < 1195)
|
||||||
{
|
{
|
||||||
@@ -656,48 +540,30 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if((Oru_diff1 <= -(App.ADTrack.RightUpVPT*5/6)) //通过差值判断上下拉方向
|
else if((Oru_diff1 <= -(App.ADTrack.RightUpVPT*5/6)) //通过差值判断上下拉方向
|
||||||
&& (Oru_diff2 <= -(App.ADTrack.RightUpVPT*5/6))
|
&& (Oru_diff2 <= -(App.ADTrack.RightUpVPT*5/6))
|
||||||
&& (Oru_diff3 <= -(App.ADTrack.RightUpVPT*5/6))
|
&& (Oru_diff3 <= -(App.ADTrack.RightUpVPT*5/6))
|
||||||
&& (Orl_diff1 >= (App.ADTrack.RightLowVPT*5/6))
|
&& (Orl_diff1 >= (App.ADTrack.RightLowVPT*5/6))
|
||||||
&& (Orl_diff2 >= (App.ADTrack.RightLowVPT*5/6))
|
&& (Orl_diff2 >= (App.ADTrack.RightLowVPT*5/6))
|
||||||
&& (Orl_diff3 >= (App.ADTrack.RightLowVPT*5/6)))
|
&& (Orl_diff3 >= (App.ADTrack.RightLowVPT*5/6)))
|
||||||
{
|
{
|
||||||
if(((App.RightUpCS1237_SlopeArray[0] >= PRESS_VPT) //判断是否不是正面压
|
if(((App.RightUpCS1237_SlopeArray[0] >= PRESS_VPT) //判断是否不是正面压
|
||||||
&& (App.RightUpCS1237_SlopeArray[1] >= PRESS_VPT)
|
&& (App.RightUpCS1237_SlopeArray[1] >= PRESS_VPT)
|
||||||
&& (App.RightUpCS1237_SlopeArray[2] >= PRESS_VPT)
|
&& (App.RightUpCS1237_SlopeArray[2] >= PRESS_VPT)
|
||||||
&& (App.RightLowCS1237_SlopeArray[0] <= -PRESS_VPT)
|
&& (App.RightLowCS1237_SlopeArray[0] <= -PRESS_VPT)
|
||||||
&& (App.RightLowCS1237_SlopeArray[1] <= -PRESS_VPT)
|
&& (App.RightLowCS1237_SlopeArray[1] <= -PRESS_VPT)
|
||||||
&& (App.RightLowCS1237_SlopeArray[2] <= -PRESS_VPT)
|
&& (App.RightLowCS1237_SlopeArray[2] <= -PRESS_VPT))
|
||||||
&& (App.LeftUpCS1237_SlopeArray[0] <= -PRESS_VPT) //判断是否不是正面压
|
|
||||||
&& (App.LeftUpCS1237_SlopeArray[1] <= -PRESS_VPT)
|
|
||||||
&& (App.LeftUpCS1237_SlopeArray[2] <= -PRESS_VPT)
|
|
||||||
&& (App.LeftLowCS1237_SlopeArray[0] >= PRESS_VPT)
|
|
||||||
&& (App.LeftLowCS1237_SlopeArray[1] >= PRESS_VPT)
|
|
||||||
&& (App.LeftLowCS1237_SlopeArray[2] >= PRESS_VPT))
|
|
||||||
|| ((App.RightUpCS1237_SlopeArray[0] >= PRESS_VPT) //判断是否不是正面压
|
|
||||||
&& (App.RightUpCS1237_SlopeArray[1] >= PRESS_VPT)
|
|
||||||
&& (App.RightUpCS1237_SlopeArray[2] >= PRESS_VPT)
|
|
||||||
&& (App.RightLowCS1237_SlopeArray[0] <= -PRESS_VPT)
|
|
||||||
&& (App.RightLowCS1237_SlopeArray[1] <= -PRESS_VPT)
|
|
||||||
&& (App.RightLowCS1237_SlopeArray[2] <= -PRESS_VPT)
|
|
||||||
&& (App.LeftUpCS1237_SlopeArray[0] <= -PRESS_VPT) //判断是否不是正面压
|
|
||||||
&& (App.LeftUpCS1237_SlopeArray[1] <= -PRESS_VPT)
|
|
||||||
&& (App.LeftUpCS1237_SlopeArray[2] <= -PRESS_VPT)
|
|
||||||
&& (App.LeftLowCS1237_SlopeArray[0] <= -PRESS_VPT)
|
|
||||||
&& (App.LeftLowCS1237_SlopeArray[1] <= -PRESS_VPT)
|
|
||||||
&& (App.LeftLowCS1237_SlopeArray[2] <= -PRESS_VPT))
|
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
// if(App.CaliZeroFlag == true)//判断是否校零
|
// if(App.CaliZeroFlag == true)//判断是否校零
|
||||||
{
|
{
|
||||||
// if((abs(Oru_diff1) > abs(Olu_diff1) * SHIELD_VPT)//判断是否不是侧面推拉
|
if((abs(Oru_diff1) > abs(Olu_diff1) * SHIELD_VPT)//判断是否不是侧面推拉
|
||||||
// && (abs(Oru_diff2) > abs(Olu_diff2) * SHIELD_VPT)
|
&& (abs(Oru_diff2) > abs(Olu_diff2) * SHIELD_VPT)
|
||||||
// && (abs(Oru_diff3) > abs(Olu_diff3) * SHIELD_VPT)
|
&& (abs(Oru_diff3) > abs(Olu_diff3) * SHIELD_VPT)
|
||||||
// && (abs(Orl_diff1) > abs(Oll_diff1) * SHIELD_VPT)
|
&& (abs(Orl_diff1) > abs(Oll_diff1) * SHIELD_VPT)
|
||||||
// && (abs(Orl_diff3) > abs(Oll_diff2) * SHIELD_VPT)
|
&& (abs(Orl_diff3) > abs(Oll_diff2) * SHIELD_VPT)
|
||||||
// && (abs(Orl_diff3) > abs(Oll_diff3) * SHIELD_VPT)
|
&& (abs(Orl_diff3) > abs(Oll_diff3) * SHIELD_VPT)
|
||||||
// )
|
)
|
||||||
{
|
{
|
||||||
if(App.MotorPara.Current_height > 725)
|
if(App.MotorPara.Current_height > 725)
|
||||||
{
|
{
|
||||||
@@ -955,13 +821,13 @@ static void AppInit(void)
|
|||||||
READ_APP_PARA((uint32_t *)&App.Para);
|
READ_APP_PARA((uint32_t *)&App.Para);
|
||||||
if(App.Para.FactoryFlag != 0x00){
|
if(App.Para.FactoryFlag != 0x00){
|
||||||
App.Para.FactoryFlag = 0x00;
|
App.Para.FactoryFlag = 0x00;
|
||||||
/*参数初始化*/
|
/*参数初始化*/
|
||||||
App.Para.Layout.ControlLevel = LEVEL_3;//出厂默认等级3
|
App.Para.Layout.ControlLevel = LEVEL_3;//出厂默认等级3
|
||||||
App.Para.Layout.DBGWaveOut = false;
|
App.Para.Layout.DBGWaveOut = false;
|
||||||
SAVE_APP_PARA((uint32_t *)&App.Para);
|
SAVE_APP_PARA((uint32_t *)&App.Para);
|
||||||
}
|
}
|
||||||
if(App.Para.Layout.ControlLevel > 5 || App.Para.Layout.ControlLevel < 1){
|
if(App.Para.Layout.ControlLevel > 5 || App.Para.Layout.ControlLevel < 1){
|
||||||
App.Para.Layout.ControlLevel = LEVEL_3;//出厂默认等级3
|
App.Para.Layout.ControlLevel = LEVEL_3;//出厂默认等级3
|
||||||
SAVE_APP_PARA((uint32_t *)&App.Para);
|
SAVE_APP_PARA((uint32_t *)&App.Para);
|
||||||
}
|
}
|
||||||
DBG_LOG("\r\n\r\n");
|
DBG_LOG("\r\n\r\n");
|
||||||
@@ -983,10 +849,10 @@ static void AppInit(void)
|
|||||||
BDC_STOP();
|
BDC_STOP();
|
||||||
LED_RED_OFF();
|
LED_RED_OFF();
|
||||||
LED_GREEN_ON();
|
LED_GREEN_ON();
|
||||||
App.Status = APP_STATUS_MOTOR_INIT;
|
App.Status = APP_STATUS_START_BEEP;
|
||||||
App.MotorPara.InitialFlag = false;
|
App.MotorPara.InitialFlag = false;
|
||||||
App.RStatus = READ_STATUS_START;
|
App.RStatus = READ_STATUS_START;
|
||||||
GradeControl(App.Para.Layout.ControlLevel);//等级控制
|
GradeControl(App.Para.Layout.ControlLevel);//等级控制
|
||||||
|
|
||||||
App.WaitFlag = false;
|
App.WaitFlag = false;
|
||||||
}
|
}
|
||||||
@@ -1103,25 +969,31 @@ static void AppLoopHandler(void)
|
|||||||
App.Status = APP_STATUS_IDLE;
|
App.Status = APP_STATUS_IDLE;
|
||||||
break;}
|
break;}
|
||||||
|
|
||||||
case APP_STATUS_MOTOR_INIT:{
|
case APP_STATUS_START_BEEP:{
|
||||||
Beeper_Start(200,200,2);
|
|
||||||
LED_RED_ON();
|
LED_RED_ON();
|
||||||
LED_GREEN_OFF();
|
LED_GREEN_OFF();
|
||||||
BDC_UP();
|
Beeper_Start(200,200,2);
|
||||||
Ddl_Delay1ms(1000);
|
App.TD1mSDelayCnt = 1000;
|
||||||
BDC_DOWN();
|
App.Status = APP_STATUS_MOTOR_INIT;
|
||||||
App.DownFlag = true;
|
break;}
|
||||||
App.StopFlag = false;
|
|
||||||
App.Status = APP_STATUS_WAIT_MOTOR_INIT;
|
case APP_STATUS_MOTOR_INIT:{
|
||||||
App.TD1mSDelayCnt = TRAVEL_TIME_MS;
|
if(App.TD1mSDelayCnt <= 0)
|
||||||
|
{
|
||||||
|
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;}
|
break;}
|
||||||
|
|
||||||
case APP_STATUS_WAIT_MOTOR_INIT:{
|
case APP_STATUS_WAIT_MOTOR_INIT:{
|
||||||
if(App.TD1mSDelayCnt <= 0)
|
if(App.TD1mSDelayCnt <= 0)
|
||||||
{
|
{
|
||||||
BDC_STOP();
|
BDC_STOP();
|
||||||
LED_RED_OFF();
|
|
||||||
LED_GREEN_ON();
|
|
||||||
App.StopFlag = true;
|
App.StopFlag = true;
|
||||||
App.DownFlag = false;
|
App.DownFlag = false;
|
||||||
App.UpFlag = false;
|
App.UpFlag = false;
|
||||||
@@ -1130,13 +1002,11 @@ static void AppLoopHandler(void)
|
|||||||
if(App.MotorPara.Current_height <= 722 && App.MotorPara.Current_height >= 720)
|
if(App.MotorPara.Current_height <= 722 && App.MotorPara.Current_height >= 720)
|
||||||
{
|
{
|
||||||
BDC_STOP();
|
BDC_STOP();
|
||||||
LED_RED_OFF();
|
|
||||||
LED_GREEN_ON();
|
|
||||||
App.StopFlag = true;
|
App.StopFlag = true;
|
||||||
App.DownFlag = false;
|
App.DownFlag = false;
|
||||||
App.UpFlag = false;
|
App.UpFlag = false;
|
||||||
App.MotorPara.CaliFlag = false;
|
App.MotorPara.CaliFlag = false;
|
||||||
App.TD1mSDelayCnt = 1000;
|
App.TD1mSDelayCnt = 1500;
|
||||||
App.Status = APP_STATUS_ZERO_MARKING;
|
App.Status = APP_STATUS_ZERO_MARKING;
|
||||||
}
|
}
|
||||||
break;}
|
break;}
|
||||||
@@ -1153,7 +1023,6 @@ static void AppLoopHandler(void)
|
|||||||
App.ADTrack.LeftLow_Org_AdZero,
|
App.ADTrack.LeftLow_Org_AdZero,
|
||||||
App.ADTrack.RightUp_Org_AdZero,
|
App.ADTrack.RightUp_Org_AdZero,
|
||||||
App.ADTrack.RightLow_Org_AdZero);
|
App.ADTrack.RightLow_Org_AdZero);
|
||||||
|
|
||||||
App.Status = APP_STATUS_WAIT_MOTOR_CALI_UP;
|
App.Status = APP_STATUS_WAIT_MOTOR_CALI_UP;
|
||||||
App.MotorPara.InitialFlag = true;
|
App.MotorPara.InitialFlag = true;
|
||||||
App.MotorPara.CaliNum = 0;
|
App.MotorPara.CaliNum = 0;
|
||||||
@@ -1161,8 +1030,6 @@ static void AppLoopHandler(void)
|
|||||||
App.StopFlag = false;
|
App.StopFlag = false;
|
||||||
App.UpFlag = true;
|
App.UpFlag = true;
|
||||||
BDC_UP();
|
BDC_UP();
|
||||||
LED_RED_ON();
|
|
||||||
LED_GREEN_OFF();
|
|
||||||
App.CailUp1mSCnt = 0;
|
App.CailUp1mSCnt = 0;
|
||||||
App.MotorPara.LoopOne = false;
|
App.MotorPara.LoopOne = false;
|
||||||
}
|
}
|
||||||
@@ -1176,7 +1043,7 @@ static void AppLoopHandler(void)
|
|||||||
App.StopFlag = true;
|
App.StopFlag = true;
|
||||||
App.DownFlag = false;
|
App.DownFlag = false;
|
||||||
App.UpFlag = false;
|
App.UpFlag = false;
|
||||||
Ddl_Delay1ms(1000);
|
Ddl_Delay1ms(1500);
|
||||||
App.DownFlag = true;
|
App.DownFlag = true;
|
||||||
App.StopFlag = false;
|
App.StopFlag = false;
|
||||||
App.Status = APP_STATUS_WAIT_MOTOR_CALI_DOWN;
|
App.Status = APP_STATUS_WAIT_MOTOR_CALI_DOWN;
|
||||||
@@ -1185,8 +1052,6 @@ static void AppLoopHandler(void)
|
|||||||
else if(App.MotorPara.CaliNum >= 480 && App.MotorPara.LoopOne == true)
|
else if(App.MotorPara.CaliNum >= 480 && App.MotorPara.LoopOne == true)
|
||||||
{
|
{
|
||||||
BDC_STOP();
|
BDC_STOP();
|
||||||
LED_RED_OFF();
|
|
||||||
LED_GREEN_ON();
|
|
||||||
App.StopFlag = true;
|
App.StopFlag = true;
|
||||||
App.DownFlag = false;
|
App.DownFlag = false;
|
||||||
App.UpFlag = false;
|
App.UpFlag = false;
|
||||||
@@ -1215,7 +1080,7 @@ static void AppLoopHandler(void)
|
|||||||
App.DownFlag = false;
|
App.DownFlag = false;
|
||||||
App.UpFlag = false;
|
App.UpFlag = false;
|
||||||
App.MotorPara.LoopOne = true;
|
App.MotorPara.LoopOne = true;
|
||||||
Ddl_Delay1ms(1000);
|
Ddl_Delay1ms(1500);
|
||||||
App.UpFlag = true;
|
App.UpFlag = true;
|
||||||
App.StopFlag = false;
|
App.StopFlag = false;
|
||||||
App.Status = APP_STATUS_WAIT_MOTOR_CALI_UP;
|
App.Status = APP_STATUS_WAIT_MOTOR_CALI_UP;
|
||||||
@@ -1225,8 +1090,6 @@ static void AppLoopHandler(void)
|
|||||||
else if(App.MotorPara.CaliNum >= 480 && App.MotorPara.LoopOne == true)
|
else if(App.MotorPara.CaliNum >= 480 && App.MotorPara.LoopOne == true)
|
||||||
{
|
{
|
||||||
BDC_STOP();
|
BDC_STOP();
|
||||||
LED_RED_OFF();
|
|
||||||
LED_GREEN_ON();
|
|
||||||
App.StopFlag = true;
|
App.StopFlag = true;
|
||||||
App.DownFlag = false;
|
App.DownFlag = false;
|
||||||
App.UpFlag = false;
|
App.UpFlag = false;
|
||||||
@@ -1250,7 +1113,6 @@ static void AppLoopHandler(void)
|
|||||||
case APP_STATUS_WAIT_STEADY:{
|
case APP_STATUS_WAIT_STEADY:{
|
||||||
if(App.TD1mSDelayCnt <= 0)
|
if(App.TD1mSDelayCnt <= 0)
|
||||||
{
|
{
|
||||||
Beeper_Start(300,0,1);
|
|
||||||
App.SideFlag = false;
|
App.SideFlag = false;
|
||||||
App.CaliZeroFlag = false;
|
App.CaliZeroFlag = false;
|
||||||
App.UpFlag = false;
|
App.UpFlag = false;
|
||||||
@@ -1258,10 +1120,17 @@ static void AppLoopHandler(void)
|
|||||||
App.EmeFlag = false;
|
App.EmeFlag = false;
|
||||||
App.StopFlag = true;
|
App.StopFlag = true;
|
||||||
App.WaitFlag = true;
|
App.WaitFlag = true;
|
||||||
App.Status = APP_STATUS_HEIGHT_CONTROL;
|
App.Status = APP_STATUS_END_BEEP;
|
||||||
}
|
}
|
||||||
break;}
|
break;}
|
||||||
|
|
||||||
|
case APP_STATUS_END_BEEP:{
|
||||||
|
Beeper_Start(300,0,1);
|
||||||
|
LED_RED_OFF();
|
||||||
|
LED_GREEN_ON();
|
||||||
|
App.Status = APP_STATUS_HEIGHT_CONTROL;
|
||||||
|
break;}
|
||||||
|
|
||||||
case APP_STATUS_HEIGHT_CONTROL:{
|
case APP_STATUS_HEIGHT_CONTROL:{
|
||||||
if(App.MotorPara.Current_height <= 725
|
if(App.MotorPara.Current_height <= 725
|
||||||
&& App.MotorPara.RestFlag == false
|
&& App.MotorPara.RestFlag == false
|
||||||
@@ -1332,11 +1201,6 @@ int main(void)
|
|||||||
BSP_Init();
|
BSP_Init();
|
||||||
AppInit();
|
AppInit();
|
||||||
|
|
||||||
App.aaa = CENTRE_FRONT_CNT;
|
|
||||||
App.bbb = CENTRE_FRONT_SUM;
|
|
||||||
App.ccc = CENTRE_FRONT_VPT;
|
|
||||||
App.ddd = CENTRE_VPT;
|
|
||||||
|
|
||||||
while(1) {
|
while(1) {
|
||||||
#if(USE_WDT == 1)
|
#if(USE_WDT == 1)
|
||||||
FeedDogHandler();
|
FeedDogHandler();
|
||||||
@@ -1362,10 +1226,10 @@ int main(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: SysTick_IrqHandler
|
* 函数名称: SysTick_IrqHandler
|
||||||
* 功能描述: 系统滴答中断
|
* 功能描述: 系统滴答中断
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
void SysTick_IrqHandler(void)
|
void SysTick_IrqHandler(void)
|
||||||
{
|
{
|
||||||
@@ -1382,10 +1246,10 @@ void SysTick_IrqHandler(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: DBG_RxPinIntCallBack
|
* 函数名称: DBG_RxPinIntCallBack
|
||||||
* 功能描述: DBG接收中断回调函数
|
* 功能描述: DBG接收中断回调函数
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
void DBG_RxPinIntCallBack(void)
|
void DBG_RxPinIntCallBack(void)
|
||||||
{
|
{
|
||||||
@@ -1395,17 +1259,17 @@ void DBG_RxPinIntCallBack(void)
|
|||||||
|
|
||||||
|
|
||||||
#if(USE_USART3 == 1)
|
#if(USE_USART3 == 1)
|
||||||
// 定义函数Usart3RxIrqCallback,用于处理串口接收中断
|
// 定义函数Usart3RxIrqCallback,用于处理串口接收中断
|
||||||
void Usart3RxIrqCallback(void)
|
void Usart3RxIrqCallback(void)
|
||||||
{
|
{
|
||||||
// 如果1分钟超时计数器为0,则清空RxLen
|
// 如果1分钟超时计数器为0,则清空RxLen
|
||||||
if(App.Uart3RxTimeOut1mSCnt == 0)
|
if(App.Uart3RxTimeOut1mSCnt == 0)
|
||||||
{
|
{
|
||||||
App.RxUart3Data.HeaderFrame = false;
|
App.RxUart3Data.HeaderFrame = false;
|
||||||
App.RxUart3Data.RxLen = 0;
|
App.RxUart3Data.RxLen = 0;
|
||||||
}
|
}
|
||||||
App.Uart3RxTimeOut1mSCnt = 5;
|
App.Uart3RxTimeOut1mSCnt = 5;
|
||||||
// 读取串口接收到的数据
|
// 读取串口接收到的数据
|
||||||
uint8_t Data = Uart3Rec();
|
uint8_t Data = Uart3Rec();
|
||||||
if(App.RxUart3Data.HeaderFrame == false)
|
if(App.RxUart3Data.HeaderFrame == false)
|
||||||
{
|
{
|
||||||
@@ -1429,7 +1293,7 @@ void Usart3RxIrqCallback(void)
|
|||||||
// App.RxUart3Data.HeaderFrame = false;
|
// App.RxUart3Data.HeaderFrame = false;
|
||||||
// return;
|
// return;
|
||||||
// }
|
// }
|
||||||
// 如果RxLen小于128,则将数据添加到RxBuff中
|
// 如果RxLen小于128,则将数据添加到RxBuff中
|
||||||
if(App.RxUart3Data.RxLen < 128) {
|
if(App.RxUart3Data.RxLen < 128) {
|
||||||
App.RxUart3Data.RxBuff[App.RxUart3Data.RxLen++] = Data;
|
App.RxUart3Data.RxBuff[App.RxUart3Data.RxLen++] = Data;
|
||||||
}
|
}
|
||||||
@@ -1448,7 +1312,7 @@ void Usart3RxIrqCallback(void)
|
|||||||
App.MotorPara.Current_height = h;
|
App.MotorPara.Current_height = h;
|
||||||
}
|
}
|
||||||
if(App.MotorPara.InitialFlag == true && h >=720 && h <= 1200)
|
if(App.MotorPara.InitialFlag == true && h >=720 && h <= 1200)
|
||||||
{//缓存每个高度点对于零点应力的差值,对不同高度点的应力进行补偿
|
{//缓存每个高度点对于零点应力的差值,对不同高度点的应力进行补偿
|
||||||
if(App.MotorPara.LU_HeightStress[(App.MotorPara.Current_height)-720] == 0
|
if(App.MotorPara.LU_HeightStress[(App.MotorPara.Current_height)-720] == 0
|
||||||
|| App.MotorPara.LL_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.RU_HeightStress[(App.MotorPara.Current_height)-720] == 0
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ typedef enum en_dcu_int_win_mode
|
|||||||
{
|
{
|
||||||
DcuIntInvalid = 0u, ///< DCU don't occur interrupt
|
DcuIntInvalid = 0u, ///< DCU don't occur interrupt
|
||||||
DcuWinIntInvalid = 1u, ///< DCU window interrupt is invalid.
|
DcuWinIntInvalid = 1u, ///< DCU window interrupt is invalid.
|
||||||
DcuInsideWinCmpInt = 2u, ///< DCU occur interrupt when DATA2 ¡Ü DATA0 ¡Ü DATA2
|
DcuInsideWinCmpInt = 2u, ///< DCU occur interrupt when DATA2 ≤ DATA0 ≤ DATA2
|
||||||
DcuOutsideWinCmpInt = 3u, ///< DCU occur interrupt when DATA0 > DATA1 or DATA0 < DATA2
|
DcuOutsideWinCmpInt = 3u, ///< DCU occur interrupt when DATA0 > DATA1 or DATA0 < DATA2
|
||||||
} en_dcu_int_win_mode_t;
|
} en_dcu_int_win_mode_t;
|
||||||
|
|
||||||
|
|||||||
@@ -267,7 +267,7 @@ extern "C"
|
|||||||
/*!< SWDT register config */
|
/*!< SWDT register config */
|
||||||
#define ICG0_SWDT_AUTS (SWDT_AUTO_START_AFTER_RESET)
|
#define ICG0_SWDT_AUTS (SWDT_AUTO_START_AFTER_RESET)
|
||||||
#define ICG0_SWDT_ITS (SWDT_RESET_REQUEST)
|
#define ICG0_SWDT_ITS (SWDT_RESET_REQUEST)
|
||||||
#define ICG0_SWDT_PERI (SWDT_COUNT_UNDERFLOW_CYCLE_256) //¸´Î»Ê±¼ä0.8Ãë
|
#define ICG0_SWDT_PERI (SWDT_COUNT_UNDERFLOW_CYCLE_256) //复位时间0.8秒
|
||||||
#define ICG0_SWDT_CKS (SWDT_COUNT_SWDTCLK_DIV32)
|
#define ICG0_SWDT_CKS (SWDT_COUNT_SWDTCLK_DIV32)
|
||||||
#define ICG0_SWDT_WDPT (SWDT_0To100PCT)
|
#define ICG0_SWDT_WDPT (SWDT_0To100PCT)
|
||||||
#define ICG0_SWDT_SLTPOFF (SWDT_SPECIAL_MODE_COUNT_CONTINUE)
|
#define ICG0_SWDT_SLTPOFF (SWDT_SPECIAL_MODE_COUNT_CONTINUE)
|
||||||
|
|||||||
Reference in New Issue
Block a user