Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
jiancetai
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
陈家乐
jiancetai
Commits
af19864e
Commit
af19864e
authored
May 26, 2025
by
梁百峰
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
🐞
fix:版本号波动问题
parent
ffa58caa
Changes
13
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
1079 additions
and
275 deletions
+1079
-275
Barcode_Scanner.c
YueJin_test_bench/source/Appliciation/Barcode_Scanner.c
+58
-17
Barcode_Scanner.h
YueJin_test_bench/source/Appliciation/Barcode_Scanner.h
+1
-0
Check_Ctrl.c
YueJin_test_bench/source/Appliciation/Check_Ctrl.c
+3
-3
DoCAN_ISO15765.c
YueJin_test_bench/source/Appliciation/DoCAN_ISO15765.c
+244
-244
Key_user.c
YueJin_test_bench/source/Appliciation/Key_user.c
+5
-4
Protocol_CRC16.c
YueJin_test_bench/source/Appliciation/Protocol_CRC16.c
+48
-0
Protocol_CRC16.h
YueJin_test_bench/source/Appliciation/Protocol_CRC16.h
+10
-0
Protocol_Lib.c
YueJin_test_bench/source/Appliciation/Protocol_Lib.c
+274
-0
Protocol_Lib.h
YueJin_test_bench/source/Appliciation/Protocol_Lib.h
+67
-0
Protocol_User.c
YueJin_test_bench/source/Appliciation/Protocol_User.c
+307
-0
Protocol_User.h
YueJin_test_bench/source/Appliciation/Protocol_User.h
+14
-0
Task.c
YueJin_test_bench/source/Appliciation/Task.c
+38
-6
api_RS485.c
YueJin_test_bench/source/Appliciation/api_RS485.c
+10
-1
No files found.
YueJin_test_bench/source/Appliciation/Barcode_Scanner.c
View file @
af19864e
...
...
@@ -48,6 +48,7 @@ uint8_t powerstdio = 0;
uint8_t
get_num_buf
[
34
];
uint8_t
comparestart
;
uint8_t
blename
[
5
];
uint8_t
btmac
[
6
];
uint8_t
firstpowerflag
=
0
;
uint16_t
lightnumber
=
0
;
void
get_key
(
void
)
...
...
@@ -62,11 +63,12 @@ void get_key(void)
key_value
=
key_value
|
(
uint32_t
)
key_array
[
3
];
}
uint8_t
recvflag111
=
0
;
uint8_t
xierucishu
=
0
;
void
datacheck
(
void
)
{
RS485_send_time
=
0
;
RS485_TX_finish
=
0
;
//
RS485_send_time = 0;
//
RS485_TX_finish = 0;
uint16_t
checksum
=
0
;
uint8_t
arraynum
=
0
;
if
(
zhenduanflag
==
0
)
...
...
@@ -121,6 +123,12 @@ void datacheck(void)
break
;
case
0x81
:
{
btmac
[
0
]
=
RS485_data
[
0
];
btmac
[
1
]
=
RS485_data
[
1
];
btmac
[
2
]
=
RS485_data
[
2
];
btmac
[
3
]
=
RS485_data
[
3
];
btmac
[
4
]
=
RS485_data
[
4
];
btmac
[
5
]
=
RS485_data
[
5
];
blename
[
0
]
=
RS485_data
[
6
];
blename
[
1
]
=
RS485_data
[
7
];
blename
[
2
]
=
RS485_data
[
8
];
...
...
@@ -195,11 +203,13 @@ void datacheck(void)
default:
break
;
}
break
;
}
default:
break
;
}
memset
(
RS485_data
,
0
,
64
);
memset
(
BarCode
,
0
,
sizeof
(
BarCode
));
RS485_TX_finish
=
0
;
}
...
...
@@ -211,7 +221,7 @@ void datacheck(void)
}
else
{
RS485_TX_finish
=
0
;
//
RS485_TX_finish = 0;
}
}
else
if
(
zhenduanflag
==
1
)
...
...
@@ -277,9 +287,20 @@ void datacheck(void)
case
3
:
if
(
BarCode
[
2
]
==
0x4F
)
{
if
((
BarCode
[
4
]
==
0x6E
)
&&
(
BarCode
[
5
]
==
0x50
)
&&
(
BarCode
[
6
]
==
0
))
{
zhenduansendStep
++
;
// if(xierucishu > 4)
// {
zhenduansendStep
++
;
xierucishu
=
0
;
// }
// else
// {
// xierucishu++;
// }
RS485_TX_finish
=
0
;
}
if
(
BarCode
[
4
]
==
0x7F
&&
BarCode
[
5
]
==
0x2E
&&
BarCode
[
6
]
==
0x78
)
...
...
@@ -435,20 +456,21 @@ void UART_Put2(uint32_t Value)
}
else
{
UARTRxBuf
.
Rx_Buffer
[
UARTRxBuf
.
write_pos
]
=
Value
;
UARTRxBuf
.
write_pos
=
(
UARTRxBuf
.
write_pos
+
1
)
%
UART_RX_MAX_DEPTH
;
//
UARTRxBuf.Rx_Buffer [ UARTRxBuf.write_pos ] = Value;
//
UARTRxBuf.write_pos = (UARTRxBuf.write_pos + 1) % UART_RX_MAX_DEPTH;
}
RS485_send_time
=
0
;
//
RS485_send_time = 0;
return
;
}
void
Recv_Byte
(
void
)
{
int
i
=
0
;
int
j
=
0
;
uint32_t
len
;
readNum
=
Protocol_UartRead
(
mDataBufPtr
+
mDataBufLen
,
102
4
-
mDataBufLen
);
int
k
=
0
;
readNum
=
Protocol_UartRead
(
mDataBufPtr
+
mDataBufLen
,
102
5
-
mDataBufLen
);
uint8_t
testflag
=
0
;
if
(
readNum
>
0
)
{
mDataBufLen
+=
readNum
;
...
...
@@ -457,9 +479,16 @@ void Recv_Byte(void)
{
for
(
i
=
0
;
i
<
mDataBufLen
;
i
++
)
{
if
(
i
>
5
)
{
if
((
mDataBufPtr
[
i
]
==
0x4A
)
&&
(
mDataBufPtr
[
i
-
1
]
==
0x4B
))
// if(i > 5)
// {
if
(
mDataBufPtr
[
i
-
1
]
==
0x59
&&
mDataBufPtr
[
i
]
==
0x44
)
{
k
=
i
-
1
;
}
if
((
mDataBufPtr
[
k
]
==
0x59
&&
mDataBufPtr
[
k
+
1
]
==
0x44
)
&&
(
mDataBufPtr
[
i
]
==
0x4A
)
&&
(
mDataBufPtr
[
i
-
1
]
==
0x4B
))
{
if
(
i
<
1
)
{
...
...
@@ -470,20 +499,32 @@ void Recv_Byte(void)
{
BarCode
[
j
]
=
mDataBufPtr
[
j
];
}
testflag
=
0
;
break
;
}
}
else
{
testflag
=
1
;
// break;
}
// }
}
if
(
testflag
)
{
testflag
=
0
;
break
;
}
// 解析协议
len
=
i
;
len
=
i
+
1
;
if
(
(
len
>
0
)
&&
(
len
<
mDataBufLen
)
)
{
// 将未解析的数据移到头部
// Move unparsed data to the head
memcpy
(
mDataBuf
Len
,
mDataBufLen
+
len
,
mDataBufLen
-
len
);
memcpy
(
mDataBuf
Ptr
,
mDataBufPtr
+
len
,
mDataBufLen
-
len
);
// memcpy(nowdata,mDataBufPtr + len,len);
// datacheck();
...
...
YueJin_test_bench/source/Appliciation/Barcode_Scanner.h
View file @
af19864e
...
...
@@ -37,4 +37,5 @@ extern uint8_t blename[5];
extern
uint8_t
recvflag111
;
extern
uint8_t
firstpowerflag
;
extern
uint16_t
lightnumber
;
extern
uint8_t
btmac
[
6
];
#endif
\ No newline at end of file
YueJin_test_bench/source/Appliciation/Check_Ctrl.c
View file @
af19864e
...
...
@@ -673,7 +673,7 @@ void Function_Check_Ctrl(uint32_t cmd)
POWER_CTRL_KL30_Current
=
0
;
LED4
=
0
;
POWER_CTRL_KL30
=
0
;
queren
=
0
;
//
queren = 0 ;
// ABStime = 0;
break
;
}
...
...
@@ -692,7 +692,7 @@ void Function_Check_Ctrl(uint32_t cmd)
}
else
{
queren
=
1
;
//
queren = 1;
ABStime
=
0
;
}
...
...
@@ -707,7 +707,7 @@ void Function_Check_Ctrl(uint32_t cmd)
POWER_CTRL_KL30_Current
=
0
;
LED4
=
0
;
POWER_CTRL_KL30
=
0
;
queren
=
0
;
//
queren = 0;
// ABStime = 0;
break
;
}
...
...
YueJin_test_bench/source/Appliciation/DoCAN_ISO15765.c
View file @
af19864e
This diff is collapsed.
Click to expand it.
YueJin_test_bench/source/Appliciation/Key_user.c
View file @
af19864e
...
...
@@ -206,10 +206,11 @@ void Key_Operation_SW3(Key_Event_en_t enKeyEvent)
clearOdoFlag
=
1
;
}
else
{
clearOdoFlag
=
0
;
}
RS485_TX_finish
=
0
;
// else
// {
// clearOdoFlag = 0;
// }
queren
=
0
;
}
}
...
...
YueJin_test_bench/source/Appliciation/Protocol_CRC16.c
0 → 100644
View file @
af19864e
/**
* @file Protocol_CRC16.c
* @brief CRC16计算
* @details CRC16计算
* @author myliu
* @date 2022.05.09
* @version V1.0
* @copyright myiu
*/
#include "Protocol_CRC16.h"
static
const
Protocol_uint8_t
CRC16_TAB_H
[
256
]
=
{
0x00u
,
0xC1u
,
0x81u
,
0x40u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x00u
,
0xC1u
,
0x81u
,
0x40u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x00u
,
0xC1u
,
0x81u
,
0x40u
,
0x00u
,
0xC1u
,
0x81u
,
0x40u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x00u
,
0xC1u
,
0x81u
,
0x40u
,
0x00u
,
0xC1u
,
0x81u
,
0x40u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x00u
,
0xC1u
,
0x81u
,
0x40u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x00u
,
0xC1u
,
0x81u
,
0x40u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x00u
,
0xC1u
,
0x81u
,
0x40u
,
0x00u
,
0xC1u
,
0x81u
,
0x40u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x00u
,
0xC1u
,
0x81u
,
0x40u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x00u
,
0xC1u
,
0x81u
,
0x40u
,
0x00u
,
0xC1u
,
0x81u
,
0x40u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x00u
,
0xC1u
,
0x81u
,
0x40u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x00u
,
0xC1u
,
0x81u
,
0x40u
,
0x00u
,
0xC1u
,
0x81u
,
0x40u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x00u
,
0xC1u
,
0x81u
,
0x40u
,
0x00u
,
0xC1u
,
0x81u
,
0x40u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x00u
,
0xC1u
,
0x81u
,
0x40u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x00u
,
0xC1u
,
0x81u
,
0x40u
,
0x00u
,
0xC1u
,
0x81u
,
0x40u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x00u
,
0xC1u
,
0x81u
,
0x40u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x00u
,
0xC1u
,
0x81u
,
0x40u
,
0x00u
,
0xC1u
,
0x81u
,
0x40u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x00u
,
0xC1u
,
0x81u
,
0x40u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x00u
,
0xC1u
,
0x81u
,
0x40u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x00u
,
0xC1u
,
0x81u
,
0x40u
,
0x00u
,
0xC1u
,
0x81u
,
0x40u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x00u
,
0xC1u
,
0x81u
,
0x40u
,
0x00u
,
0xC1u
,
0x81u
,
0x40u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x00u
,
0xC1u
,
0x81u
,
0x40u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x01u
,
0xC0u
,
0x80u
,
0x41u
,
0x00u
,
0xC1u
,
0x81u
,
0x40u
};
static
const
Protocol_uint8_t
CRC16_TAB_L
[
256
]
=
{
0x00u
,
0xC0u
,
0xC1u
,
0x01u
,
0xC3u
,
0x03u
,
0x02u
,
0xC2u
,
0xC6u
,
0x06u
,
0x07u
,
0xC7u
,
0x05u
,
0xC5u
,
0xC4u
,
0x04u
,
0xCCu
,
0x0Cu
,
0x0Du
,
0xCDu
,
0x0Fu
,
0xCFu
,
0xCEu
,
0x0Eu
,
0x0Au
,
0xCAu
,
0xCBu
,
0x0Bu
,
0xC9u
,
0x09u
,
0x08u
,
0xC8u
,
0xD8u
,
0x18u
,
0x19u
,
0xD9u
,
0x1Bu
,
0xDBu
,
0xDAu
,
0x1Au
,
0x1Eu
,
0xDEu
,
0xDFu
,
0x1Fu
,
0xDDu
,
0x1Du
,
0x1Cu
,
0xDCu
,
0x14u
,
0xD4u
,
0xD5u
,
0x15u
,
0xD7u
,
0x17u
,
0x16u
,
0xD6u
,
0xD2u
,
0x12u
,
0x13u
,
0xD3u
,
0x11u
,
0xD1u
,
0xD0u
,
0x10u
,
0xF0u
,
0x30u
,
0x31u
,
0xF1u
,
0x33u
,
0xF3u
,
0xF2u
,
0x32u
,
0x36u
,
0xF6u
,
0xF7u
,
0x37u
,
0xF5u
,
0x35u
,
0x34u
,
0xF4u
,
0x3Cu
,
0xFCu
,
0xFDu
,
0x3Du
,
0xFFu
,
0x3Fu
,
0x3Eu
,
0xFEu
,
0xFAu
,
0x3Au
,
0x3Bu
,
0xFBu
,
0x39u
,
0xF9u
,
0xF8u
,
0x38u
,
0x28u
,
0xE8u
,
0xE9u
,
0x29u
,
0xEBu
,
0x2Bu
,
0x2Au
,
0xEAu
,
0xEEu
,
0x2Eu
,
0x2Fu
,
0xEFu
,
0x2Du
,
0xEDu
,
0xECu
,
0x2Cu
,
0xE4u
,
0x24u
,
0x25u
,
0xE5u
,
0x27u
,
0xE7u
,
0xE6u
,
0x26u
,
0x22u
,
0xE2u
,
0xE3u
,
0x23u
,
0xE1u
,
0x21u
,
0x20u
,
0xE0u
,
0xA0u
,
0x60u
,
0x61u
,
0xA1u
,
0x63u
,
0xA3u
,
0xA2u
,
0x62u
,
0x66u
,
0xA6u
,
0xA7u
,
0x67u
,
0xA5u
,
0x65u
,
0x64u
,
0xA4u
,
0x6Cu
,
0xACu
,
0xADu
,
0x6Du
,
0xAFu
,
0x6Fu
,
0x6Eu
,
0xAEu
,
0xAAu
,
0x6Au
,
0x6Bu
,
0xABu
,
0x69u
,
0xA9u
,
0xA8u
,
0x68u
,
0x78u
,
0xB8u
,
0xB9u
,
0x79u
,
0xBBu
,
0x7Bu
,
0x7Au
,
0xBAu
,
0xBEu
,
0x7Eu
,
0x7Fu
,
0xBFu
,
0x7Du
,
0xBDu
,
0xBCu
,
0x7Cu
,
0xB4u
,
0x74u
,
0x75u
,
0xB5u
,
0x77u
,
0xB7u
,
0xB6u
,
0x76u
,
0x72u
,
0xB2u
,
0xB3u
,
0x73u
,
0xB1u
,
0x71u
,
0x70u
,
0xB0u
,
0x50u
,
0x90u
,
0x91u
,
0x51u
,
0x93u
,
0x53u
,
0x52u
,
0x92u
,
0x96u
,
0x56u
,
0x57u
,
0x97u
,
0x55u
,
0x95u
,
0x94u
,
0x54u
,
0x9Cu
,
0x5Cu
,
0x5Du
,
0x9Du
,
0x5Fu
,
0x9Fu
,
0x9Eu
,
0x5Eu
,
0x5Au
,
0x9Au
,
0x9Bu
,
0x5Bu
,
0x99u
,
0x59u
,
0x58u
,
0x98u
,
0x88u
,
0x48u
,
0x49u
,
0x89u
,
0x4Bu
,
0x8Bu
,
0x8Au
,
0x4Au
,
0x4Eu
,
0x8Eu
,
0x8Fu
,
0x4Fu
,
0x8Du
,
0x4Du
,
0x4Cu
,
0x8Cu
,
0x44u
,
0x84u
,
0x85u
,
0x45u
,
0x87u
,
0x47u
,
0x46u
,
0x86u
,
0x82u
,
0x42u
,
0x43u
,
0x83u
,
0x41u
,
0x81u
,
0x80u
,
0x40u
};
/**
* 获取CRC16校验和
*/
/**
* @brief 计算传入数据的CRC16
* @param[in] pData 计算的数据内容
* @param[in] len 计算的数据长度
*
* @return 校验和
*
* @since 1.0.0
*/
Protocol_uint16_t
getCheckSum
(
const
Protocol_uint8_t
*
getCheckSum_pData
,
int
len
)
{
Protocol_uint8_t
u8_crc_h
=
0xFFu
;
Protocol_uint8_t
u8_crc_l
=
0xFFu
;
Protocol_uint8_t
u8_index
=
0u
;
Protocol_uint8_t
i
=
0u
;
Protocol_uint16_t
re_value
;
int
length
=
len
;
while
(
length
--
)
{
u8_index
=
u8_crc_h
^
(
getCheckSum_pData
[
i
++
]);
u8_crc_h
=
u8_crc_l
^
CRC16_TAB_H
[
u8_index
];
u8_crc_l
=
CRC16_TAB_L
[
u8_index
];
}
re_value
=
(
Protocol_uint16_t
)
u8_crc_h
<<
8u
;
re_value
|=
u8_crc_l
;
return
re_value
;
}
YueJin_test_bench/source/Appliciation/Protocol_CRC16.h
0 → 100644
View file @
af19864e
#ifndef PROTOCOL_CRC16_H
#define PROTOCOL_CRC16_H
//#include "Application.h"
#include "Protocol_Lib.h"
#include <stdio.h>
#include <stdint.h>
Protocol_uint16_t
getCheckSum
(
const
Protocol_uint8_t
*
getCheckSum_pData
,
int
len
);
#endif
YueJin_test_bench/source/Appliciation/Protocol_Lib.c
0 → 100644
View file @
af19864e
/**
* @file Protocol_Lib.c
* @brief 串口协议解析
* @details 串口协议解析
* @author myliu
* @date 2022.05.09
* @version V1.0
* @copyright myiu
*/
#include <stdio.h>
#include <string.h>
#include "Protocol_CRC16.h"
#include "debugger.h"
static
UARTOpen
UARTOpen_Cbk
;
static
UARTSend
UARTSend_Cbk
;
static
UARTRead
UARTRead_Cbk
;
static
ProcParse
ProcParseCbk
;
static
UARTClose
UARTClose_Cbk
;
static
ProtocolSetData
ProtocolSetData_Cbk
;
static
Protocol_uint8_t
*
mDataBufPtr
=
Protocol_NULL
;
static
Protocol_uint16_t
mDataBufLen
=
0
;
static
Protocol_uint32_t
DataBufMaxLen
=
0
;
// #define DEBUG_PRO_DATA 0
/**
* @brief 初始化函数
* @param[in] pMemSpace 分配给协议库的内存空间,用来缓存串口数据
* @param[in] MemLen 分配的内存空间大小
* @param[in] pFunc 回调函数,包括串口打开、发送、读取、关闭,也包括解析后数据回传
* @param[in] ProcParseCbk 此回调函数,返回数据从FrameNo开始到CRC16之前,和ProtocolSetData_Cbk二选一
* @param[in] ProtocolSetData_Cbk 此回调函数,返回数据区分命令字、电源状态等,和ProcParseCbk二选一,详见结构体Protocol_Data_t
*
* @warning 此函数KL30和Wakeup都要调用,否则未分配内存,功能不好使,也有可能造成野指针复位
*
* @since 1.0.0
*/
void
Protocol_Init
(
Protocol_uint8_t
*
pMemSpace
,
Protocol_uint32_t
MemLen
,
Protocol_Func_t
*
pFunc
)
{
mDataBufPtr
=
pMemSpace
;
DataBufMaxLen
=
MemLen
;
UARTOpen_Cbk
=
pFunc
->
UARTOpen_Cbk
;
UARTSend_Cbk
=
pFunc
->
UARTSend_Cbk
;
UARTRead_Cbk
=
pFunc
->
UARTRead_Cbk
;
ProcParseCbk
=
pFunc
->
ProcParseCbk
;
UARTClose_Cbk
=
pFunc
->
UARTClose_Cbk
;
ProtocolSetData_Cbk
=
pFunc
->
ProtocolSetData_Cbk
;
if
(
UARTOpen_Cbk
!=
Protocol_NULL
)
{
UARTOpen_Cbk
(
);
}
return
;
}
/**
* @brief 串口协议服务函数,包括读取数据,解析数据,如在外部读取数据,可不调用此函数
*
* @warning 此函数可自定义周期调用,建议20ms周期调用,最大不可超过协议的最小发送周期
*
* @since 1.0.0
*/
void
Protocol_Service
(
void
)
{
int
len
;
Protocol_uint32_t
readNum
=
0
;
if
(
UARTRead_Cbk
!=
Protocol_NULL
)
{
readNum
=
UARTRead_Cbk
(
mDataBufPtr
+
mDataBufLen
,
256
-
mDataBufLen
);
if
(
readNum
>
0
)
{
mDataBufLen
+=
readNum
;
// 解析协议
len
=
Protocol_Parse
(
mDataBufPtr
,
mDataBufLen
);
if
(
(
len
>
0
)
&&
(
len
<
mDataBufLen
)
)
{
// 将未解析的数据移到头部
// Move unparsed data to the head
memcpy
(
mDataBufPtr
,
mDataBufPtr
+
len
,
mDataBufLen
-
len
);
}
mDataBufLen
-=
len
;
}
}
}
/**
* @brief 协议解析函数,如外部获取数据(例如中断),可直接调用此函数解析数据
* @param[in] pData 协议数据内容
* @param[in] len 需要处理的协议数据长度
*
* @return 剩余已处理的数据长度
*
* @since 1.0.0
*/
Protocol_uint32_t
Protocol_Parse
(
const
Protocol_uint8_t
*
pData
,
Protocol_uint32_t
len
)
{
Protocol_uint32_t
remainLen
=
len
;
// 剩余数据长度 Remaining data length
Protocol_uint32_t
dataLen
;
// 数据包长度 Packet length
Protocol_uint32_t
frameLen
;
// 帧长度 Frame length
Protocol_uint8_t
frameSum
;
// 校验和 Checksum
Protocol_uint8_t
calcSum
=
0
;
// 计算得到的校验和 Calculated Checksum
Protocol_Data_t
ProcData
;
int
i
=
0
;
int
dataBuf
[
256
];
/**
* 以下部分根据协议格式进行相应的修改,解析出每一帧的数据
*/
while
(
remainLen
>=
DATA_PACKAGE_MIN_LEN
)
{
// 找到一帧数据的数据头
// Find the data header of a frame of data
while
(
(
remainLen
>=
2
)
&&
((
pData
[
0
]
!=
CMD_HEAD1
)
||
(
pData
[
1
]
!=
CMD_HEAD2
))
)
{
pData
++
;
remainLen
--
;
continue
;
}
if
(
remainLen
<
DATA_PACKAGE_MIN_LEN
)
{
#ifdef DEBUG_PRO_DATA
d_printf
(
"too short!!!!!!
\n
"
);
#endif
break
;
}
// 获取数据长度
dataLen
=
pData
[
3
];
// 计算帧总长度 (起始字节2 + ID1 + Len1 + 数据内容dataLen + 校验和1 + 结束字节2)
frameLen
=
2
+
1
+
1
+
dataLen
+
1
+
2
;
if
(
frameLen
>
remainLen
)
{
// 数据内容不全
#ifdef DEBUG_PRO_DATA
d_printf
(
"Incomplete data packet!!!!!!
\n
"
);
#endif
break
;
}
// 检查结束字节
if
(
(
pData
[
frameLen
-
2
]
!=
CMD_END1
)
||
(
pData
[
frameLen
-
1
]
!=
CMD_END2
)
)
{
#ifdef DEBUG_PRO_DATA
d_printf
(
"End bytes error!!!!!!
\n
"
);
#endif
pData
++
;
remainLen
--
;
continue
;
}
// 打印一帧数据,需要时在CommDef.h文件中打开DEBUG_PRO_DATA宏
#ifdef DEBUG_PRO_DATA
for
(
i
=
0
;
i
<
frameLen
;
++
i
)
{
d_printf
(
"%x "
,
pData
[
i
]);
}
d_printf
(
"
\n
"
);
#endif
// 计算和校验 (ID + Len + 数据内容)
calcSum
=
0
;
for
(
i
=
2
;
i
<
frameLen
-
3
;
i
++
)
{
calcSum
+=
pData
[
i
];
}
// 获取接收到的校验和
frameSum
=
pData
[
frameLen
-
3
];
if
(
calcSum
==
frameSum
)
{
// 解析一帧数据
if
(
ProcParseCbk
!=
Protocol_NULL
)
{
// 传递从ID开始到校验和之前的数据
ProcParseCbk
(
pData
+
2
,
dataLen
+
2
);
}
if
(
ProtocolSetData_Cbk
!=
Protocol_NULL
)
{
// 填充协议数据结构
ProcData
.
ID
=
pData
[
2
];
ProcData
.
DataLen
=
dataLen
;
// 复制数据内容
memcpy
(
ProcData
.
Data
,
pData
+
4
,
dataLen
);
// 回调处理
ProtocolSetData_Cbk
(
&
ProcData
);
}
}
else
{
#ifdef DEBUG_PRO_DATA
d_printf
(
"CheckSum error: calc = %x, recv = %x!!!!!!
\n
"
,
calcSum
,
frameSum
);
#endif
}
pData
+=
frameLen
;
remainLen
-=
frameLen
;
}
return
len
-
remainLen
;
}
/**
* 根据协议格式进行拼接
*/
/**
* @brief 串口协议数据拼接,如初始化发送函数,调用此函数后,数据已通过串口发送
* @param[in] cmdID 命令字
* @param[in] pData 协议数据内容(不包括协议头、长度、帧序号、命令字、校验和,从数据域算起)
* @param[in] len 数据域长度
*
* @return 已发送的数据长度
*
* @since 1.0.0
*/
Protocol_uint32_t
Protocol_Send
(
const
Protocol_uint16_t
cmdID
,
const
Protocol_uint8_t
*
pData
,
Protocol_uint8_t
len
)
{
int
i
;
Protocol_uint8_t
checksum
=
0
;
Protocol_uint8_t
dataBuf
[
256
];
Protocol_uint32_t
frameLen
;
if
(
len
+
DATA_PACKAGE_MIN_LEN
>
256
)
{
// printf("sendProtocol data is too len !!!\n");
return
0
;
}
dataBuf
[
0
]
=
CMD_HEAD1
;
dataBuf
[
1
]
=
CMD_HEAD2
;
// 同步帧头 Sync frame header
dataBuf
[
2
]
=
(
Protocol_uint8_t
)
cmdID
;
// 报文ID
dataBuf
[
3
]
=
len
;
// 数据长度
frameLen
=
4
;
// 数据内容 Data
for
(
i
=
0
;
i
<
len
;
++
i
)
{
dataBuf
[
frameLen
]
=
pData
[
i
];
frameLen
++
;
}
// 计算校验和 (ID + Len + 数据内容)
checksum
=
0
;
for
(
i
=
2
;
i
<
frameLen
;
i
++
)
{
checksum
+=
dataBuf
[
i
];
}
// 添加校验和
dataBuf
[
frameLen
]
=
checksum
;
frameLen
++
;
// 添加结束字节
dataBuf
[
frameLen
]
=
CMD_END1
;
frameLen
++
;
dataBuf
[
frameLen
]
=
CMD_END2
;
frameLen
++
;
if
(
UARTSend_Cbk
!=
Protocol_NULL
)
{
return
UARTSend_Cbk
(
dataBuf
,
frameLen
);
}
else
{
return
0
;
}
}
YueJin_test_bench/source/Appliciation/Protocol_Lib.h
0 → 100644
View file @
af19864e
#ifndef PROTOCOL_LIB_H
#define PROTOCOL_LIB_H
/*
Platform_32Bit
Platform_16Bit
*/
#ifdef Platform_16Bit
#define Protocol_uint8_t unsigned char
#define Protocol_uint16_t unsigned int
#define Protocol_uint32_t unsigned long
#else
#define Protocol_uint8_t unsigned char
#define Protocol_uint16_t unsigned short
#define Protocol_uint32_t unsigned int
#define Protocol_uint64_t unsigned long long
#endif
#ifndef Protocol_NULL
#define Protocol_NULL ( void * )0u
#endif
/* NULL */
/**<0x59 0x44 ID Len DATA0-DATAN SUM 0x4B 0x4A*/
#define DATA_PACKAGE_MIN_LEN 7
/**< 0x59 0x44 + ID + Len + 至少一个数据字节 + SUM + 0x4B 0x4A */
#define DATA_PACKAGE_FIXED_LEN 6
/**< 未计算在长度内的数据 0x59 0x44 + ID + Len + SUM + 0x4B 0x4A */
#define CMD_HEAD1 0x59
#define CMD_HEAD2 0x44
#define CMD_END1 0x4B
#define CMD_END2 0x4A
/**@struct Protocol_Data_t
* @brief 解析后的协议数据
*/
typedef
struct
{
Protocol_uint8_t
ID
;
/**< 报文ID */
Protocol_uint8_t
DataLen
;
/**< 有效数据长度 DATA0-DATAN*/
Protocol_uint8_t
Data
[
256
];
/**< 有效数据内容 DATA0-DATAN*/
}
Protocol_Data_t
;
typedef
Protocol_uint8_t
(
*
UARTOpen
)(
void
);
typedef
Protocol_uint32_t
(
*
UARTSend
)(
const
Protocol_uint8_t
*
pData
,
Protocol_uint32_t
u32Len
);
typedef
Protocol_uint32_t
(
*
UARTRead
)(
Protocol_uint8_t
*
pData
,
Protocol_uint32_t
u32Len
);
typedef
void
(
*
ProtocolSetData
)(
const
Protocol_Data_t
*
pData
);
typedef
void
(
*
ProcParse
)(
const
Protocol_uint8_t
*
pData
,
Protocol_uint32_t
u32Len
);
typedef
void
(
*
UARTClose
)(
void
);
/**@struct Protocol_Func_t
* @brief 协议解析回调函数
*/
typedef
struct
{
UARTOpen
UARTOpen_Cbk
;
/**< 串口打开回调 */
UARTSend
UARTSend_Cbk
;
/**< 串口发送回调 */
UARTRead
UARTRead_Cbk
;
/**< 串口读取回调 */
UARTClose
UARTClose_Cbk
;
/**< 串口关闭回调 */
ProcParse
ProcParseCbk
;
/**< 解析后的数据, 不包含协议头尾和校验,和ProtocolSetData_Cbk二选一 */
ProtocolSetData
ProtocolSetData_Cbk
;
/**< 不包含 0x59 0x44 + ID + Len + SUM + 0x4B 0x4A,和ProcParse二选一 */
}
Protocol_Func_t
;
void
Protocol_Init
(
Protocol_uint8_t
*
pMemSpace
,
Protocol_uint32_t
MemLen
,
Protocol_Func_t
*
pFunc
);
void
Protocol_Service
(
void
);
Protocol_uint32_t
Protocol_Parse
(
const
Protocol_uint8_t
*
pData
,
Protocol_uint32_t
len
);
Protocol_uint32_t
Protocol_Send
(
const
Protocol_uint16_t
cmdID
,
const
Protocol_uint8_t
*
pData
,
Protocol_uint8_t
len
);
#endif
YueJin_test_bench/source/Appliciation/Protocol_User.c
0 → 100644
View file @
af19864e
#include "Protocol_User.h"
#include "RTE_GPIO.h"
#include "api_RS485.h"
#include "Barcode_Scanner.h"
#include "Protocol_Lib.h" // 添加Protocol_Data_t定义
#include <string.h> // 添加memcpy等函数声明
#define UART_TX_MAX_DEPTH 1024UL //(2 * 1024UL) // 4K
#define UART_RX_MAX_DEPTH (2 * 1024UL) // 4K
#define UART_DATA_BUF_LEN (2 * 1024UL) // 4K
uint32_t
u32ActiveCount
=
0
;
uint32_t
u32ActiveReset
=
0
;
typedef
struct
__attribute__
((
aligned
(
4
)))
{
Protocol_uint32_t
read_pos
;
Protocol_uint32_t
write_pos
;
Protocol_uint8_t
Rx_Buffer
[
UART_RX_MAX_DEPTH
];
}
UARTRxBuf_t
;
typedef
struct
__attribute__
((
aligned
(
4
)))
{
Protocol_uint32_t
read_pos
;
Protocol_uint32_t
write_pos
;
Protocol_uint8_t
Tx_Buffer
[
UART_TX_MAX_DEPTH
];
}
UARTTxBuf_t
;
static
UARTRxBuf_t
UARTRxBuf
;
static
UARTTxBuf_t
UARTTxBuf
;
static
Protocol_uint8_t
UsartDataBuf
[
256
];
static
Protocol_uint8_t
mDataBufPtr
[
UART_DATA_BUF_LEN
];
static
Protocol_uint8_t
Protocol_OpenUart
(
void
);
static
Protocol_uint32_t
Protocol_UartRead
(
Protocol_uint8_t
*
UartRea_pData
,
Protocol_uint32_t
len
);
static
Protocol_uint32_t
Protocol_UartSend
(
const
Protocol_uint8_t
*
UartSend_pData
,
Protocol_uint32_t
u32Len
);
static
void
Protocol_UartHandle
(
const
Protocol_Data_t
*
UartHandle_pData
);
void
Protocol_KL30_Wakeup_Init
(
void
)
{
Protocol_Func_t
pFunc
;
pFunc
.
UARTOpen_Cbk
=
Protocol_OpenUart
;
pFunc
.
UARTSend_Cbk
=
Protocol_UartSend
;
pFunc
.
UARTRead_Cbk
=
Protocol_UartRead
;
pFunc
.
UARTClose_Cbk
=
Protocol_NULL
;
pFunc
.
ProcParseCbk
=
Protocol_NULL
;
pFunc
.
ProtocolSetData_Cbk
=
Protocol_UartHandle
;
UARTTxBuf
.
read_pos
=
0
;
UARTTxBuf
.
write_pos
=
0
;
UARTRxBuf
.
read_pos
=
0
;
UARTRxBuf
.
write_pos
=
0
;
Protocol_Init
(
mDataBufPtr
,
UART_DATA_BUF_LEN
,
&
pFunc
);
}
void
Protocol_Send_Service
(
void
)
{
Protocol_uint32_t
i
=
0u
;
Protocol_uint32_t
DataLen
=
0u
;
Protocol_uint32_t
SendLen
=
0u
;
if
(
UARTTxBuf
.
write_pos
==
UARTTxBuf
.
read_pos
)
{
return
;
}
if
(
UARTTxBuf
.
write_pos
>
UARTTxBuf
.
read_pos
)
{
DataLen
=
UARTTxBuf
.
write_pos
-
UARTTxBuf
.
read_pos
;
}
else
{
DataLen
=
UART_TX_MAX_DEPTH
-
(
UARTTxBuf
.
read_pos
-
UARTTxBuf
.
write_pos
);
}
if
(
DataLen
>
255
)
{
SendLen
=
255
;
}
else
{
SendLen
=
DataLen
;
}
for
(
i
=
0u
;
i
<
SendLen
;
i
++
)
{
UsartDataBuf
[
i
]
=
UARTTxBuf
.
Tx_Buffer
[
UARTTxBuf
.
read_pos
];
UARTTxBuf
.
read_pos
=
(
UARTTxBuf
.
read_pos
+
1
)
%
UART_TX_MAX_DEPTH
;
}
Uart0_IntSend
(
UsartDataBuf
,
SendLen
);
}
static
Protocol_uint8_t
Protocol_OpenUart
(
void
)
{
#if 0
UART_Channel_Config_st_t loc_config;
loc_config.u32UARTChEn = 1;
loc_config.u32UARTbps = 115200;
loc_config.pfnUARTConfirmCallBack = Protocol_NULL;
loc_config.pfnUARTReadMsgCallBack = UART_Put;
UART_Init(UART_RLIN31, &loc_config);
#endif
return
1
;
}
static
Protocol_uint32_t
Protocol_UartRead
(
Protocol_uint8_t
*
UartRea_pData
,
Protocol_uint32_t
len
)
{
Protocol_uint32_t
i
=
0
;
Protocol_uint32_t
DataLen
=
0u
;
Protocol_uint32_t
ReadLen
=
0u
;
if
(
UARTRxBuf
.
write_pos
==
UARTRxBuf
.
read_pos
)
{
return
0
;
//队列空
}
if
(
UARTRxBuf
.
write_pos
>
UARTRxBuf
.
read_pos
)
{
DataLen
=
UARTRxBuf
.
write_pos
-
UARTRxBuf
.
read_pos
;
}
else
{
DataLen
=
UART_RX_MAX_DEPTH
-
(
UARTRxBuf
.
read_pos
-
UARTRxBuf
.
write_pos
);
}
if
(
len
>
DataLen
)
{
ReadLen
=
DataLen
;
}
else
{
ReadLen
=
len
;
}
for
(
i
=
0u
;
i
<
ReadLen
;
i
++
)
{
UartRea_pData
[
i
]
=
UARTRxBuf
.
Rx_Buffer
[
UARTRxBuf
.
read_pos
];
UARTRxBuf
.
read_pos
=
(
UARTRxBuf
.
read_pos
+
1
)
%
UART_RX_MAX_DEPTH
;
}
return
ReadLen
;
}
static
Protocol_uint32_t
Protocol_UartSend
(
const
Protocol_uint8_t
*
UartSend_pData
,
Protocol_uint32_t
u32Len
)
{
Protocol_uint8_t
dataBuf
[
256
];
Protocol_uint32_t
frameLen
=
0
;
// 构建协议帧(适配Protocol_Lib格式)
dataBuf
[
frameLen
++
]
=
CMD_HEAD1
;
// 帧头
dataBuf
[
frameLen
++
]
=
CMD_HEAD2
;
dataBuf
[
frameLen
++
]
=
u32Len
+
4
;
// 总长度(数据+4字节固定)
dataBuf
[
frameLen
++
]
=
0
;
// 帧序号
dataBuf
[
frameLen
++
]
=
BARCODE_CMD_ID
;
// 条码指令ID
// 拷贝有效数据
if
(
u32Len
>
0
&&
UartSend_pData
!=
Protocol_NULL
)
{
memcpy
(
&
dataBuf
[
frameLen
],
UartSend_pData
,
u32Len
);
frameLen
+=
u32Len
;
}
// 计算CRC16校验和
Protocol_uint16_t
checksum
=
getCheckSum
(
dataBuf
+
2
,
frameLen
-
2
);
dataBuf
[
frameLen
++
]
=
(
checksum
>>
8
)
&
0xFF
;
dataBuf
[
frameLen
++
]
=
checksum
&
0xFF
;
// 写入发送缓冲区
Protocol_uint32_t
RemainLen
=
0u
;
if
(
UARTTxBuf
.
write_pos
>=
UARTTxBuf
.
read_pos
)
{
RemainLen
=
UART_TX_MAX_DEPTH
-
(
UARTTxBuf
.
write_pos
-
UARTTxBuf
.
read_pos
);
}
else
{
RemainLen
=
UARTTxBuf
.
read_pos
-
UARTTxBuf
.
write_pos
;
}
if
(
frameLen
>
RemainLen
)
{
return
1
;
// 队列已满
}
for
(
Protocol_uint32_t
i
=
0
;
i
<
frameLen
;
i
++
)
{
UARTTxBuf
.
Tx_Buffer
[
UARTTxBuf
.
write_pos
]
=
dataBuf
[
i
];
UARTTxBuf
.
write_pos
=
(
UARTTxBuf
.
write_pos
+
1
)
%
UART_TX_MAX_DEPTH
;
}
return
0
;
}
static
void
Protocol_UartHandle
(
const
Protocol_Data_t
*
UartHandle_pData
)
{
uint8_t
ID04
[
1
]
=
{
0
};
u32ActiveCount
=
0
;
if
(
UartHandle_pData
->
CmdID
==
ESP32_MCU_0x10
)
{
BlueTooth
.
BlueTooth_St
=
UartHandle_pData
->
Data
[
0
];
if
(
BlueTooth
.
BlueTooth_St
==
BLUE_STATE_ON
)
{
Protocol_Send
(
MCU_ESP32_0x20
,
Protocol_NULL
,
0
);
}
}
else
if
(
UartHandle_pData
->
CmdID
==
ESP32_MCU_0x12
)
{
BlueTooth
.
BLE_St
=
UartHandle_pData
->
Data
[
0
];
}
else
if
(
UartHandle_pData
->
CmdID
==
ESP32_MCU_0x05
)
{
BlueTooth
.
ESP32_SWV
=
UartHandle_pData
->
Data
[
0
];
}
else
if
(
UartHandle_pData
->
CmdID
==
ESP32_MCU_0x02
)
{
BlueTooth
.
ESP32_Reset
=
UartHandle_pData
->
Data
[
0
];
if
(
BlueTooth
.
ESP32_Reset
==
1
)
{
ID04
[
0
]
=
1
;
Protocol_Send
(
MCU_ESP32_0x04
,
ID04
,
1
);
}
else
if
(
BlueTooth
.
ESP32_Reset
==
2
)
{
__NVIC_SystemReset
();
}
else
{
;
}
}
else
if
(
UartHandle_pData
->
CmdID
==
ESP32_MCU_0x01
)
{
if
(
UartHandle_pData
->
Data
[
0
]
==
0x33
)
{
BlueTooth
.
Navigation_St
=
EM_ESP32_NAVI_ST_NAVIGATING
;
}
else
if
(
UartHandle_pData
->
Data
[
0
]
==
0x35
)
{
BlueTooth
.
Navigation_St
=
EM_ESP32_NAVI_ST_STANDBY
;
}
else
{
;
}
BlueTooth
.
Navigation_Code
=
UartHandle_pData
->
Data
[
1
];
BlueTooth
.
Navigation_Mileage
=
((
UartHandle_pData
->
Data
[
5
]
<<
24
)
|
(
UartHandle_pData
->
Data
[
4
]
<<
16
)
|
(
UartHandle_pData
->
Data
[
3
]
<<
8
)
|
UartHandle_pData
->
Data
[
2
]);
}
else
if
(
UartHandle_pData
->
CmdID
==
BARCODE_CMD_ID
)
{
// 处理条码数据
memcpy
(
BarCode
,
UartHandle_pData
->
Data
,
UartHandle_pData
->
DataLen
);
BarCode
[
UartHandle_pData
->
DataLen
]
=
'\0'
;
// 添加字符串结束符
}
else
{
//非本协议数据,不处理
}
}
void
Protocol_ESP32_Active_Service
(
void
)
{
if
(
RTE_GPIO_Get_Level
(
L_BIASBITSW_POW
)
==
1
)
{
if
(
u32ActiveCount
>=
200
)
{
u32ActiveReset
=
0
;
RTE_GPIO_Set_Level
(
L_BIASBITSW_POW
,
RTE_GPIO_LEVEL_LOW
);
}
else
{
u32ActiveCount
++
;
}
}
else
{
if
(
u32ActiveReset
<=
2
)
{
u32ActiveReset
++
;
}
else
{
u32ActiveReset
=
0
;
u32ActiveCount
=
0
;
RTE_GPIO_Set_Level
(
L_BIASBITSW_POW
,
RTE_GPIO_LEVEL_HIGH
);
}
}
}
void
UART_Put
(
Protocol_uint16_t
Data
)
{
Protocol_uint32_t
nextPos
=
0u
;
nextPos
=
(
UARTRxBuf
.
write_pos
+
1
)
%
UART_RX_MAX_DEPTH
;
if
(
nextPos
==
UARTRxBuf
.
read_pos
)
{
//队列已满,无法插入队列
}
else
{
UARTRxBuf
.
Rx_Buffer
[
UARTRxBuf
.
write_pos
]
=
(
Protocol_uint8_t
)
Data
;
UARTRxBuf
.
write_pos
=
(
UARTRxBuf
.
write_pos
+
1
)
%
UART_RX_MAX_DEPTH
;
}
//return;
}
YueJin_test_bench/source/Appliciation/Protocol_User.h
0 → 100644
View file @
af19864e
#ifndef PROTOCOL_USER_H
#define PROTOCOL_USER_H
//#include "Application.h"
#include "Protocol_Lib.h"
#include <stdio.h>
#include <stdint.h>
void
Protocol_KL30_Wakeup_Init
(
void
);
void
Protocol_Send_Service
(
void
);
// 10ms任务调用
void
UART_Put
(
Protocol_uint16_t
Data
);
void
Protocol_ESP32_Active_Service
(
void
);
#endif
YueJin_test_bench/source/Appliciation/Task.c
View file @
af19864e
...
...
@@ -52,6 +52,7 @@ void Sys_Run_Mode_Pseudo_Real_Time_Tasks(void)
TFT_LCD_Display_Update_Service
(
);
Fre_In_Service
(
FRE_VEHICLE
);
MENU_CHECK_STEP
=
11
;
//Fre_In_Service(FRE_ENGINE);
}
/*============================================================================*/
...
...
@@ -258,14 +259,45 @@ void Sys_Run_Mode_10ms_Tasks_Group(void)
{
MENU_CHECK_STEP
=
3
;
backsend
();
RS485_User_Tx_Data
();
// RS485_TX_finish = 0;
// backsend();
if
(
RS485_TX_finish
==
0
)
{
LINE_OUT_NEG_09
=
1
;
if
(
1
==
LINE_OUT_NEG_09
)
{
RS485_User_Tx_Data
();
}
}
else
{
LINE_OUT_NEG_09
=
0
;
if
(
LINE_OUT_NEG_09
==
0
)
{
Recv_Byte
();
}
}
if
(
clearodotime
<
3000
)
{
clearodotime
++
;
}
else
{
clearodotime
=
0
;
}
if
(
clearodotime
>=
1500
)
{
// Port_SetPortPinLevel(2,9,PortGpioHigh);
queren
=
1
;
}
else
{
queren
=
0
;
}
}
}
...
...
@@ -572,7 +604,7 @@ void Sys_Exact_50us_Tasks(void)
/*==============================================================================
��ȷ��100ms��ʱ���� ��ֹ�������б��е�����
------------------------------------------------------------------------------*/
uint32_t
clearodotime
=
0
;
uint32_t
clearodotime
flash
=
0
;
void
Sys_Exact_100ms_Tasks
(
void
)
{
if
(
connectbleFlag
==
1
)
...
...
@@ -610,10 +642,10 @@ void Sys_Exact_100ms_Tasks(void)
startIGONtime
=
0
;
}
}
if
(
clearodotime
<
0xFFFFFFFF
)
if
(
clearodotime
flash
<
0xFFFFFFFF
)
{
clearodotime
++
;
if
(
clearodotime
%
20
==
0
)
clearodotime
flash
++
;
if
(
clearodotime
flash
%
20
==
0
)
{
if
(
R485_0x80_msg
[
11
]
<
5
)
{
...
...
@@ -630,7 +662,7 @@ void Sys_Exact_100ms_Tasks(void)
}
else
{
clearodotime
=
0
;
clearodotime
flash
=
0
;
}
}
/*============================================================================*/
...
...
YueJin_test_bench/source/Appliciation/api_RS485.c
View file @
af19864e
...
...
@@ -499,9 +499,18 @@ void RS485_User_Tx_Data(void)
#endif
}
uint8_t
backtime
=
0
;
void
backsend
(
void
)
{
if
(
RS485_send_time
>=
50
)
if
(
clearOdoFlag
==
0
)
{
backtime
=
20
;
}
else
{
backtime
=
10
;
}
if
(
RS485_send_time
>=
backtime
)
{
RS485_send_time
=
0
;
RS485_TX_finish
=
0
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment