[Upload Code]:add com deal code

This commit is contained in:
Brin 2025-06-04 01:29:24 +08:00
parent e7e8f6fffe
commit 237c17e181
12 changed files with 4219 additions and 3779 deletions

View File

@ -8,6 +8,7 @@
"mymattress_ctrl.h": "c", "mymattress_ctrl.h": "c",
"can.h": "c", "can.h": "c",
"mcu_body_analyzer.h": "c", "mcu_body_analyzer.h": "c",
"mysensor_deal.h": "c" "mysensor_deal.h": "c",
"protocol_parser.h": "c"
} }
} }

View File

@ -63,6 +63,8 @@ extern uint8_t sensor_uart_rx_buffer[SENSOR_RX_BUFFER_SIZE];
extern uint16_t output_uart_rx_len; extern uint16_t output_uart_rx_len;
extern uint8_t output_uart_rx_buffer[OUTPUT_RX_BUFFER_SIZE]; extern uint8_t output_uart_rx_buffer[OUTPUT_RX_BUFFER_SIZE];
extern char Project_Version[16];
/* USER CODE END EM */ /* USER CODE END EM */
/* Exported functions prototypes ---------------------------------------------*/ /* Exported functions prototypes ---------------------------------------------*/

View File

@ -7,6 +7,15 @@ extern "C"
#endif #endif
#include "main.h" #include "main.h"
typedef enum
{
STATE_WAIT_RECV = 0,
STATE_PARSE_FRAME,
STATE_HANDLE_CMD,
// 错误处理
STATE_BACK_WAIT,
} CommState;
extern struct rt_event output_uart_rx_event; extern struct rt_event output_uart_rx_event;
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -0,0 +1,59 @@
#ifndef PROTOCOL_PARSER_H
#define PROTOCOL_PARSER_H
#include <stdint.h>
#include <stdbool.h>
#define FRAME_HEAD_1 0xA5
#define FRAME_HEAD_2 0xA5
#define VERSION 0x01
#define MAX_PAYLOAD_LEN 268
// FRAME_CTL 标志位宏定义1字节共8位
// Bit7 - CRC 校验
#define FRAME_CTL_CRC_EN (1 << 7)
// Bit6 - 是否需要ACK
#define FRAME_CTL_ACK_REQ (1 << 6)
#define FRAME_CTL_NACK_REQ (0 << 6)
// Bit5~4 - 加密方式
#define FRAME_CTL_ENC_NONE (0 << 4) // 不加密
#define FRAME_CTL_ENC_XOR (1 << 4) // XOR 加密
#define FRAME_CTL_ENC_AES (2 << 4) // AES 加密(预留)
// Bit0 - 帧类型
#define FRAME_CTL_TYPE_DATA (0 << 0)
#define FRAME_CTL_TYPE_ACK (1 << 0)
// protocol_parser.h 或 utils.h 中添加
#ifndef BSWAP16
#define BSWAP16(x) ((((x) & 0xFF00) >> 8) | (((x) & 0x00FF) << 8))
#endif
// 常见控制域组合宏
#define FRAME_CTL_DATA_CRC_NACK (FRAME_CTL_CRC_EN | FRAME_CTL_NACK_REQ | FRAME_CTL_TYPE_DATA | FRAME_CTL_ENC_NONE)
typedef struct __attribute__((packed))
{
uint8_t head[2];
uint8_t version;
uint8_t frame_ctl;
uint16_t seq_num;
uint16_t payload_len;
uint8_t payload[MAX_PAYLOAD_LEN];
uint16_t crc;
// 解析后的状态标志位(独立字段)
uint8_t need_ack : 1; // 需要ACK
uint8_t is_ack : 1; // ACK帧还是数据
uint8_t crc_enabled : 1;
uint8_t encrypted : 1;
uint8_t decrypted : 1;
uint8_t reserved : 3;
} ProtocolFrame;
void Protocol_BuildFrame(ProtocolFrame *frame, uint8_t frame_ctl, uint16_t seq,
const uint8_t *payload, uint16_t payload_len, bool enable_crc);
bool Protocol_ParseFrame(const uint8_t *data, uint16_t len, ProtocolFrame *frame);
uint16_t Protocol_CRC16_CCITT(uint16_t pre_crc, const uint8_t *data, uint16_t len);
#endif

View File

@ -42,6 +42,7 @@
/* Private macro -------------------------------------------------------------*/ /* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */ /* USER CODE BEGIN PM */
char Project_Version[16] = {"V1.0.0"};
/* USER CODE END PM */ /* USER CODE END PM */
/* Private variables ---------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/

View File

@ -5,8 +5,161 @@
#include "rtthread.h" #include "rtthread.h"
#include "mySensor_deal.h" #include "mySensor_deal.h"
#include "myEdge_ai_app.h" #include "myEdge_ai_app.h"
#include "myOutput_deal.h"
#include "protocol_parser.h"
static ProtocolFrame resp;
static ProtocolFrame rx_frame;
static uint8_t send_buf[512];
static uint8_t recv_buf[512];
static uint16_t recv_len = 0;
static rt_tick_t start_tick = 0;
static rt_uint16_t seq_num = 1;
static rt_uint16_t Upload_Time = 100;
static CommState comm_state = STATE_WAIT_RECV;
//////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////
// 状态包上传
uint8_t myPayload[8 + 260] = {0x02, 0x11};
static void upload_StatusPackage(void)
{
rt_uint8_t output_frame_ctrl = FRAME_CTL_TYPE_DATA;
// TODO:数据填充
//---------------------------------------------
//---------------------------------------------
output_frame_ctrl |= FRAME_CTL_CRC_EN;
Protocol_BuildFrame(&resp,
output_frame_ctrl,
seq_num++,
myPayload,
sizeof(myPayload),
true);
// uart_send((uint8_t *)&resp, 8 + sizeof(payload) + 2);
hex_dump_simple((uint8_t *)&resp, 8 + sizeof(myPayload) + 2);
rt_memcpy(send_buf, (uint8_t *)&resp, 8 + sizeof(myPayload) + 2);
}
// 状态机处理
static void comm_state_machine_run(void)
{
rt_uint32_t e;
switch (comm_state)
{
case STATE_WAIT_RECV:
{
// rt_kprintf("Wait Message...\n");
if (rt_event_recv(&output_uart_rx_event, 0x01, RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR, RT_WAITING_FOREVER, &e) == RT_EOK)
{
rt_kprintf("Deal Data Ready...\n");
hex_dump_simple(output_uart_rx_buffer, output_uart_rx_len);
// 拷贝 成功
rt_memcpy(recv_buf, output_uart_rx_buffer, output_uart_rx_len);
recv_len = output_uart_rx_len;
comm_state = STATE_PARSE_FRAME;
rt_memset(output_uart_rx_buffer, 0, sizeof(output_uart_rx_buffer));
}
break;
}
case STATE_PARSE_FRAME:
{
if (Protocol_ParseFrame(recv_buf, recv_len, &rx_frame) == true)
{
rt_kprintf("Parse Data Done...\n");
if (rx_frame.is_ack)
{
// 收到 ACK 帧,可处理 ACK 状态标志 继续等待接收
rt_kprintf("[ACK] Frame received. SEQ=%d\n", rx_frame.seq_num);
comm_state = STATE_BACK_WAIT;
}
else
{
// 非 ACK跳转执行命令
comm_state = STATE_HANDLE_CMD;
}
}
else
{
rt_kprintf("Parse Data Fail...\n");
comm_state = STATE_BACK_WAIT;
}
break;
}
case STATE_HANDLE_CMD:
{
uint8_t mcmd = rx_frame.payload[0];
uint8_t scmd = rx_frame.payload[1];
// 软件版本读取命令
if (mcmd == 0x02 && scmd == 0x12)
{
rt_uint8_t output_frame_ctrl = FRAME_CTL_TYPE_ACK;
uint8_t payload[1 + 1 + 16] = {0x02, 0x12, 0x00};
rt_memcpy(&payload[3], Project_Version, rt_strlen(Project_Version));
if (rx_frame.crc_enabled)
output_frame_ctrl |= FRAME_CTL_CRC_EN;
Protocol_BuildFrame(&resp,
output_frame_ctrl,
rx_frame.seq_num,
payload,
sizeof(payload),
true);
// uart_send((uint8_t *)&resp, 8 + sizeof(payload) + 2);
hex_dump_simple((uint8_t *)&resp, 8 + sizeof(payload) + 2);
}
// 设置状态包上报间隔
else if (mcmd == 0x02 && scmd == 0x10)
{
rt_uint8_t output_frame_ctrl = FRAME_CTL_TYPE_ACK;
uint8_t payload[1 + 1 + 1 + 2] = {0x02, 0x10, 0x00};
Upload_Time = (rx_frame.payload[2] << 8) + (rx_frame.payload[3]);
// 0.1秒~30秒 都是正常范围
if (Upload_Time >= 100 && Upload_Time <= 30000)
payload[2] = 0x00;
else
payload[2] = 0xe1;
payload[3] = rx_frame.payload[2];
payload[4] = rx_frame.payload[3];
if (rx_frame.crc_enabled)
output_frame_ctrl |= FRAME_CTL_CRC_EN;
Protocol_BuildFrame(&resp,
output_frame_ctrl,
rx_frame.seq_num,
payload,
sizeof(payload),
true);
// uart_send((uint8_t *)&resp, 8 + sizeof(payload) + 2);
hex_dump_simple((uint8_t *)&resp, 8 + sizeof(payload) + 2);
}
else
{
rt_kprintf("[WARN] Unhandled CMD: MCMD=0x%02X SCMD=0x%02X\n", mcmd, scmd);
}
comm_state = STATE_BACK_WAIT;
break;
}
case STATE_BACK_WAIT:
{
rt_memset(&rx_frame, 0, sizeof(&rx_frame));
rt_memset(recv_buf, 0, sizeof(recv_buf));
recv_len = 0;
comm_state = STATE_WAIT_RECV;
break;
}
default:
break;
}
// 默认上报状态
if (rt_tick_get_millisecond() - start_tick > Upload_Time)
{
upload_StatusPackage();
start_tick = rt_tick_get_millisecond();
}
}
//////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////
/* 定义线程栈与控制块(静态分配) */ /* 定义线程栈与控制块(静态分配) */
@ -19,21 +172,10 @@ static rt_uint8_t output_thread_stack[OUTPUT_THREAD_STACK_SIZE];
// rt_uint16_t start_pos = 0; // rt_uint16_t start_pos = 0;
static void output_thread_entry(void *parameter) static void output_thread_entry(void *parameter)
{ {
rt_uint32_t e;
while (1) while (1)
{ {
// rt_kprintf("Wait Message...\n"); // comm_state_machine_run();
if (rt_event_recv(&output_uart_rx_event, 0x01, RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR, RT_WAITING_FOREVER, &e) == RT_EOK) upload_StatusPackage();
{
// 处理函数 拷贝 成功
// if (extract_mattress_frame(output_uart_rx_buffer, sizeof(output_uart_rx_buffer)))
// {
// model.status = AI_STATUS_IDLE;
rt_kprintf("Deal Data Ready...\n");
// rt_event_send(&data_ready_event, 0x01);
// }
rt_memset(output_uart_rx_buffer, 0, sizeof(output_uart_rx_buffer));
}
rt_thread_mdelay(15); rt_thread_mdelay(15);
} }
} }

View File

@ -0,0 +1,106 @@
#include <main.h>
#include "protocol_parser.h"
#define XOR_KEY 0x5A
static void xor_crypt(uint8_t *data, uint16_t len)
{
for (uint16_t i = 0; i < len; i++)
{
data[i] ^= XOR_KEY;
}
}
uint16_t Protocol_CRC16_CCITT(uint16_t pre_crc, const uint8_t *data, uint16_t len)
{
uint16_t crc16 = pre_crc;
uint8_t i;
while (len--)
{
for (i = 0x80; i != 0; i >>= 1)
{
if ((crc16 & 0x8000) != 0)
{
crc16 = crc16 << 1;
crc16 = crc16 ^ 0x3121;
}
else
{
crc16 = crc16 << 1;
}
if ((*data & i) != 0)
{
crc16 = crc16 ^ 0x3121;
}
}
data++;
}
return crc16;
}
uint16_t crc = 0;
void Protocol_BuildFrame(ProtocolFrame *frame, uint8_t frame_ctl, uint16_t seq,
const uint8_t *payload, uint16_t payload_len, bool enable_crc)
{
frame->head[0] = FRAME_HEAD_1;
frame->head[1] = FRAME_HEAD_2;
frame->version = VERSION;
frame->frame_ctl = frame_ctl;
frame->seq_num = BSWAP16(seq);
frame->payload_len = BSWAP16(payload_len);
rt_memcpy(frame->payload, payload, payload_len);
// 若设置加密标志位,则加密
if ((frame_ctl & 0x30) >> 4 == 0x01)
{
xor_crypt(frame->payload, payload_len);
}
if (enable_crc)
{
crc = Protocol_CRC16_CCITT(0xFFFF, (uint8_t *)frame, 6 + payload_len);
// 高低位交换
frame->crc = BSWAP16(crc);
}
else
{
frame->crc = 0;
}
}
bool Protocol_ParseFrame(const uint8_t *data, uint16_t len, ProtocolFrame *frame)
{
if (len < 9 || data[0] != FRAME_HEAD_1 || data[1] != FRAME_HEAD_2)
return false;
rt_memcpy(frame->head, data, 2);
frame->version = data[2];
frame->frame_ctl = data[3];
frame->seq_num = (data[4] << 8) | data[5];
frame->payload_len = (data[6] << 8) | data[7];
uint16_t total_len = 8 + frame->payload_len;
uint16_t with_crc_len = total_len + ((frame->frame_ctl & 0x80) ? 2 : 0);
if (len < with_crc_len)
return false;
rt_memcpy(frame->payload, &data[8], frame->payload_len);
// 设置状态标志
frame->need_ack = (frame->frame_ctl & 0x40) ? 1 : 0;
frame->is_ack = (frame->frame_ctl & 0x01) ? 1 : 0;
frame->crc_enabled = (frame->frame_ctl & 0x80) ? 1 : 0;
frame->encrypted = ((frame->frame_ctl & 0x30) >> 4) == 0x01;
frame->decrypted = 0;
// CRC 校验
if (frame->crc_enabled)
{
frame->crc = (data[8 + frame->payload_len] << 8) | data[8 + frame->payload_len + 1];
uint16_t crc_calc = Protocol_CRC16_CCITT(0xFFFF, data, 8 + frame->payload_len);
if (frame->crc != crc_calc)
return false;
}
// 加密解密(仅支持 XOR
if (frame->encrypted)
{
xor_crypt(frame->payload, frame->payload_len);
frame->decrypted = 1;
}
return true;
}

File diff suppressed because one or more lines are too long

View File

@ -140,12 +140,12 @@
<SetRegEntry> <SetRegEntry>
<Number>0</Number> <Number>0</Number>
<Key>DLGUARM</Key> <Key>DLGUARM</Key>
<Name></Name> <Name>d</Name>
</SetRegEntry> </SetRegEntry>
<SetRegEntry> <SetRegEntry>
<Number>0</Number> <Number>0</Number>
<Key>JL2CM3</Key> <Key>JL2CM3</Key>
<Name>-U59800869 -O78 -S5 -ZTIFSpeedSel1000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8001 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F405RGTx$CMSIS\Flash\STM32F4xx_1024.FLM)</Name> <Name>-U59800869 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8001 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F405RGTx$CMSIS\Flash\STM32F4xx_1024.FLM)</Name>
</SetRegEntry> </SetRegEntry>
<SetRegEntry> <SetRegEntry>
<Number>0</Number> <Number>0</Number>
@ -158,13 +158,56 @@
<Name>-U-O142 -O2254 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F405RGTx$CMSIS\Flash\STM32F4xx_1024.FLM)</Name> <Name>-U-O142 -O2254 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F405RGTx$CMSIS\Flash\STM32F4xx_1024.FLM)</Name>
</SetRegEntry> </SetRegEntry>
</TargetDriverDllRegistry> </TargetDriverDllRegistry>
<Breakpoint/> <Breakpoint>
<Bp>
<Number>0</Number>
<Type>0</Type>
<LineNumber>60</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>134227730</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>..\Core\Src\protocol_parser.c</Filename>
<ExecCommand></ExecCommand>
<Expression>\\XM_01\../Core/Src/protocol_parser.c\60</Expression>
</Bp>
<Bp>
<Number>1</Number>
<Type>0</Type>
<LineNumber>41</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>134255062</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>..\Core\Src\myOutput_deal.c</Filename>
<ExecCommand></ExecCommand>
<Expression>\\XM_01\../Core/Src/myOutput_deal.c\41</Expression>
</Bp>
</Breakpoint>
<WatchWindow1> <WatchWindow1>
<Ww> <Ww>
<count>0</count> <count>0</count>
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>aiInData</ItemText> <ItemText>aiInData</ItemText>
</Ww> </Ww>
<Ww>
<count>1</count>
<WinNumber>1</WinNumber>
<ItemText>crc</ItemText>
</Ww>
<Ww>
<count>2</count>
<WinNumber>1</WinNumber>
<ItemText>send_buf</ItemText>
</Ww>
</WatchWindow1> </WatchWindow1>
<Tracepoint> <Tracepoint>
<THDelay>0</THDelay> <THDelay>0</THDelay>
@ -406,6 +449,18 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<bShared>0</bShared> <bShared>0</bShared>
</File> </File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>15</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\Core\Src\protocol_parser.c</PathWithFileName>
<FilenameWithoutPath>protocol_parser.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group> </Group>
<Group> <Group>
@ -416,7 +471,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>15</FileNumber> <FileNumber>16</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -428,7 +483,7 @@
</File> </File>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>16</FileNumber> <FileNumber>17</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -440,7 +495,7 @@
</File> </File>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>17</FileNumber> <FileNumber>18</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -452,7 +507,7 @@
</File> </File>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>18</FileNumber> <FileNumber>19</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -464,7 +519,7 @@
</File> </File>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>19</FileNumber> <FileNumber>20</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -476,7 +531,7 @@
</File> </File>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>20</FileNumber> <FileNumber>21</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -488,7 +543,7 @@
</File> </File>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>21</FileNumber> <FileNumber>22</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -500,7 +555,7 @@
</File> </File>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>22</FileNumber> <FileNumber>23</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -512,7 +567,7 @@
</File> </File>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>23</FileNumber> <FileNumber>24</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -524,7 +579,7 @@
</File> </File>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>24</FileNumber> <FileNumber>25</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -536,7 +591,7 @@
</File> </File>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>25</FileNumber> <FileNumber>26</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -548,7 +603,7 @@
</File> </File>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>26</FileNumber> <FileNumber>27</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -560,7 +615,7 @@
</File> </File>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>27</FileNumber> <FileNumber>28</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -572,7 +627,7 @@
</File> </File>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>28</FileNumber> <FileNumber>29</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -584,7 +639,7 @@
</File> </File>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>29</FileNumber> <FileNumber>30</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -604,7 +659,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>30</FileNumber> <FileNumber>31</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -624,7 +679,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>5</GroupNumber> <GroupNumber>5</GroupNumber>
<FileNumber>31</FileNumber> <FileNumber>32</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -636,7 +691,7 @@
</File> </File>
<File> <File>
<GroupNumber>5</GroupNumber> <GroupNumber>5</GroupNumber>
<FileNumber>32</FileNumber> <FileNumber>33</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -656,7 +711,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>6</GroupNumber> <GroupNumber>6</GroupNumber>
<FileNumber>33</FileNumber> <FileNumber>34</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -668,7 +723,7 @@
</File> </File>
<File> <File>
<GroupNumber>6</GroupNumber> <GroupNumber>6</GroupNumber>
<FileNumber>34</FileNumber> <FileNumber>35</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -680,7 +735,7 @@
</File> </File>
<File> <File>
<GroupNumber>6</GroupNumber> <GroupNumber>6</GroupNumber>
<FileNumber>35</FileNumber> <FileNumber>36</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -692,7 +747,7 @@
</File> </File>
<File> <File>
<GroupNumber>6</GroupNumber> <GroupNumber>6</GroupNumber>
<FileNumber>36</FileNumber> <FileNumber>37</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -704,7 +759,7 @@
</File> </File>
<File> <File>
<GroupNumber>6</GroupNumber> <GroupNumber>6</GroupNumber>
<FileNumber>37</FileNumber> <FileNumber>38</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -716,7 +771,7 @@
</File> </File>
<File> <File>
<GroupNumber>6</GroupNumber> <GroupNumber>6</GroupNumber>
<FileNumber>38</FileNumber> <FileNumber>39</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -728,7 +783,7 @@
</File> </File>
<File> <File>
<GroupNumber>6</GroupNumber> <GroupNumber>6</GroupNumber>
<FileNumber>39</FileNumber> <FileNumber>40</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -740,7 +795,7 @@
</File> </File>
<File> <File>
<GroupNumber>6</GroupNumber> <GroupNumber>6</GroupNumber>
<FileNumber>40</FileNumber> <FileNumber>41</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -752,7 +807,7 @@
</File> </File>
<File> <File>
<GroupNumber>6</GroupNumber> <GroupNumber>6</GroupNumber>
<FileNumber>41</FileNumber> <FileNumber>42</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -764,7 +819,7 @@
</File> </File>
<File> <File>
<GroupNumber>6</GroupNumber> <GroupNumber>6</GroupNumber>
<FileNumber>42</FileNumber> <FileNumber>43</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -784,7 +839,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>7</GroupNumber> <GroupNumber>7</GroupNumber>
<FileNumber>43</FileNumber> <FileNumber>44</FileNumber>
<FileType>5</FileType> <FileType>5</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -804,7 +859,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>44</FileNumber> <FileNumber>45</FileNumber>
<FileType>4</FileType> <FileType>4</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -824,7 +879,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>9</GroupNumber> <GroupNumber>9</GroupNumber>
<FileNumber>45</FileNumber> <FileNumber>46</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -836,7 +891,7 @@
</File> </File>
<File> <File>
<GroupNumber>9</GroupNumber> <GroupNumber>9</GroupNumber>
<FileNumber>46</FileNumber> <FileNumber>47</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -848,7 +903,7 @@
</File> </File>
<File> <File>
<GroupNumber>9</GroupNumber> <GroupNumber>9</GroupNumber>
<FileNumber>47</FileNumber> <FileNumber>48</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -860,7 +915,7 @@
</File> </File>
<File> <File>
<GroupNumber>9</GroupNumber> <GroupNumber>9</GroupNumber>
<FileNumber>48</FileNumber> <FileNumber>49</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -872,7 +927,7 @@
</File> </File>
<File> <File>
<GroupNumber>9</GroupNumber> <GroupNumber>9</GroupNumber>
<FileNumber>49</FileNumber> <FileNumber>50</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -892,7 +947,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>10</GroupNumber> <GroupNumber>10</GroupNumber>
<FileNumber>50</FileNumber> <FileNumber>51</FileNumber>
<FileType>2</FileType> <FileType>2</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -904,7 +959,7 @@
</File> </File>
<File> <File>
<GroupNumber>10</GroupNumber> <GroupNumber>10</GroupNumber>
<FileNumber>51</FileNumber> <FileNumber>52</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -924,7 +979,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>11</GroupNumber> <GroupNumber>11</GroupNumber>
<FileNumber>52</FileNumber> <FileNumber>53</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -936,7 +991,7 @@
</File> </File>
<File> <File>
<GroupNumber>11</GroupNumber> <GroupNumber>11</GroupNumber>
<FileNumber>53</FileNumber> <FileNumber>54</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -948,7 +1003,7 @@
</File> </File>
<File> <File>
<GroupNumber>11</GroupNumber> <GroupNumber>11</GroupNumber>
<FileNumber>54</FileNumber> <FileNumber>55</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -960,7 +1015,7 @@
</File> </File>
<File> <File>
<GroupNumber>11</GroupNumber> <GroupNumber>11</GroupNumber>
<FileNumber>55</FileNumber> <FileNumber>56</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -972,7 +1027,7 @@
</File> </File>
<File> <File>
<GroupNumber>11</GroupNumber> <GroupNumber>11</GroupNumber>
<FileNumber>56</FileNumber> <FileNumber>57</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -984,7 +1039,7 @@
</File> </File>
<File> <File>
<GroupNumber>11</GroupNumber> <GroupNumber>11</GroupNumber>
<FileNumber>57</FileNumber> <FileNumber>58</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -996,7 +1051,7 @@
</File> </File>
<File> <File>
<GroupNumber>11</GroupNumber> <GroupNumber>11</GroupNumber>
<FileNumber>58</FileNumber> <FileNumber>59</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1008,7 +1063,7 @@
</File> </File>
<File> <File>
<GroupNumber>11</GroupNumber> <GroupNumber>11</GroupNumber>
<FileNumber>59</FileNumber> <FileNumber>60</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1020,7 +1075,7 @@
</File> </File>
<File> <File>
<GroupNumber>11</GroupNumber> <GroupNumber>11</GroupNumber>
<FileNumber>60</FileNumber> <FileNumber>61</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1032,7 +1087,7 @@
</File> </File>
<File> <File>
<GroupNumber>11</GroupNumber> <GroupNumber>11</GroupNumber>
<FileNumber>61</FileNumber> <FileNumber>62</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1044,7 +1099,7 @@
</File> </File>
<File> <File>
<GroupNumber>11</GroupNumber> <GroupNumber>11</GroupNumber>
<FileNumber>62</FileNumber> <FileNumber>63</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1056,7 +1111,7 @@
</File> </File>
<File> <File>
<GroupNumber>11</GroupNumber> <GroupNumber>11</GroupNumber>
<FileNumber>63</FileNumber> <FileNumber>64</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1068,7 +1123,7 @@
</File> </File>
<File> <File>
<GroupNumber>11</GroupNumber> <GroupNumber>11</GroupNumber>
<FileNumber>64</FileNumber> <FileNumber>65</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1080,7 +1135,7 @@
</File> </File>
<File> <File>
<GroupNumber>11</GroupNumber> <GroupNumber>11</GroupNumber>
<FileNumber>65</FileNumber> <FileNumber>66</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1092,7 +1147,7 @@
</File> </File>
<File> <File>
<GroupNumber>11</GroupNumber> <GroupNumber>11</GroupNumber>
<FileNumber>66</FileNumber> <FileNumber>67</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1104,7 +1159,7 @@
</File> </File>
<File> <File>
<GroupNumber>11</GroupNumber> <GroupNumber>11</GroupNumber>
<FileNumber>67</FileNumber> <FileNumber>68</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -1116,7 +1171,7 @@
</File> </File>
<File> <File>
<GroupNumber>11</GroupNumber> <GroupNumber>11</GroupNumber>
<FileNumber>68</FileNumber> <FileNumber>69</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>

View File

@ -610,6 +610,11 @@
<FileType>1</FileType> <FileType>1</FileType>
<FilePath>../Core/Src/stm32f4xx_hal_msp.c</FilePath> <FilePath>../Core/Src/stm32f4xx_hal_msp.c</FilePath>
</File> </File>
<File>
<FileName>protocol_parser.c</FileName>
<FileType>1</FileType>
<FilePath>..\Core\Src\protocol_parser.c</FilePath>
</File>
</Files> </Files>
</Group> </Group>
<Group> <Group>

File diff suppressed because it is too large Load Diff

View File

@ -67,6 +67,7 @@
| | CAN总线调试完成 可以通讯 完成线程 | | | | CAN总线调试完成 可以通讯 完成线程 | |
| 2025-06-03 | 完成算法计算腰部位置代码移植 | 后续还需要更改 | | 2025-06-03 | 完成算法计算腰部位置代码移植 | 后续还需要更改 |
| | 增加串口3作为输出 用于CAN替换 | 增加处理线程 | | | 增加串口3作为输出 用于CAN替换 | 增加处理线程 |
| 2025-06-04 | 完成串口协议的对接 | |
--- ---