From 05eeda22ae20345f8aeb07d33d947e0b082af222 Mon Sep 17 00:00:00 2001 From: wangxujie Date: Thu, 10 Jul 2025 13:18:33 +0800 Subject: [PATCH] =?UTF-8?q?BUG=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MDK-ARM/semi-finished_product_testing.uvoptx | 19 +-- .../semi-finished_product_testing.hex | 124 +++++++++--------- User/application/src/tcpserverc.c | 12 +- User/system/user_gpio.c | 30 ++--- 4 files changed, 85 insertions(+), 100 deletions(-) diff --git a/MDK-ARM/semi-finished_product_testing.uvoptx b/MDK-ARM/semi-finished_product_testing.uvoptx index af2b709..a2ef724 100644 --- a/MDK-ARM/semi-finished_product_testing.uvoptx +++ b/MDK-ARM/semi-finished_product_testing.uvoptx @@ -148,24 +148,7 @@ -U420014000D0000504A51544E -O2254 -SF1800 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC800 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F407VGTx$CMSIS\Flash\STM32F4xx_1024.FLM) - - - 0 - 0 - 2413 - 1 -
134234468
- 0 - 0 - 0 - 0 - 0 - 1 - ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c - - \\semi_finished_product_testing\../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c\2413 -
-
+ 0 diff --git a/MDK-ARM/semi-finished_product_testing/semi-finished_product_testing.hex b/MDK-ARM/semi-finished_product_testing/semi-finished_product_testing.hex index 2f5d05b..ea97fae 100644 --- a/MDK-ARM/semi-finished_product_testing/semi-finished_product_testing.hex +++ b/MDK-ARM/semi-finished_product_testing/semi-finished_product_testing.hex @@ -3650,8 +3650,8 @@ :10E400000E493046FFF793FB01F054FC074641F2FA :10E410008B3207493846FFF747FCFF21384601F0A9 :10E42000CFFA074606493846FFF781FBBDE8F08181 -:10E43000047201085148010875480108094801089B -:10E440002D4801082DE9F04106460D46174600BF4C +:10E4300004720108614801088D4801080948010873 +:10E44000354801082DE9F04106460D46174600BF44 :10E45000002F08D100BF10A340F6C5021AA124A0C6 :10E46000F7F75AFF00BF00BF15B93046BDE8F0818D :10E470002C8D74B12820844202DD211A89B200E07B @@ -5249,66 +5249,66 @@ :1047E000417373657274696F6E202225732220668F :1047F00061696C6564206174206C696E6520256454 :1048000020696E2025730A0070B505460C461646D1 -:1048100004492046FDF7E0FD01200349087000200F -:1048200070BD0000994801080B00002070B50546D6 -:104830000C46164604492046FDF7CEFD01200349EB -:104840000870002070BD0000014901080C00002024 -:1048500070B505460C46164604492046FDF7BCFDDA -:10486000012003490870002070BD0000ED4A0108D6 -:104870000800002070B505460C461646044920463F -:10488000FDF7AAFD012003490870002070BD00005B -:10489000614B0108090000202DE9F04107460D4653 -:1048A00014461E46C4B121892846FDF74DFE104826 -:1048B000056022890F486168EBF728FD0E4890F8E3 -:1048C0003D00202804D1227A0A490B48F2F734FA35 -:1048D0002046F7F7F1FC08E03EB9002007490870D0 -:1048E0002846F9F799FABDE8F0810020FBE70000BF -:1048F000B4010020721600205C2F00200B00002065 -:104900002DE9F043CDB081460E4614461F46802166 -:104910002DA8EBF722FD80210DA8EBF71EFD002549 -:10492000A846002C7ED021893046FDF70DFE674851 -:10493000066022892DA86168EBF7E8FC257A9DF8CE -:10494000B400AA2804D1681E2DA9085C3C280DD00B -:104950004FF0070801222DA90DA8F2F753F8012303 -:1049600042460DA93046FFF7ABF99FE0E81E81B241 -:104970000DF1B50002F016FBA91E2DAA515C88426C -:104980000DD04FF0070802222DA90DA8F2F73AF832 -:10499000012342460DA93046FFF792F986E09DF8C3 -:1049A000B8200DF1B9016846EBF7B0FC9DF8B700EF -:1049B00088B94FF00B084649C1F800D02DAA0DA9BF -:1049C00043480068F2F738F8012342460DA9304603 -:1049D000FFF776F96AE09DF8B70001280DD13D494F -:1049E000C1F800D008460068F2F7A8F801232A466B -:1049F0002DA93046FFF764F958E09DF8B70002286A -:104A000017D13549C1F800D0084600684078C01D6C -:104A100000F0FF082DAA0DA92F48006800F0C6FD80 -:104A2000012300E046E042460DA93046FFF748F971 -:104A30003CE09DF8B70003280DD12849C1F800D00B -:104A40000846006800F01CFE01232A462DA93046C6 -:104A5000FFF736F92AE09DF8B700042803D10020BB -:104A60001F49087022E09DF8B700052811D14FF0CA -:104A70000C081C49C1F800D02DAA0DA919480068DE -:104A8000F2F70CF8012342460DA93046FFF718F95A -:104A90000CE04FF0070803222DA90DA8F1F7B2FF93 -:104AA000012342460DA93046FFF70AF92046F7F7E1 -:104AB00003FC09E047B900200B4908703046F9F7BC -:104AC000ABF94DB0BDE8F0830020FAE7B801002053 -:104AD000C4010020C8010020BC010020C00100204A -:104AE0000D000020CC0100200C0000202DE9F04139 -:104AF00007460D4614461E46ECB121892846FDF7AF -:104B000023FD12480560228911486168EBF7FEFB1E -:104B1000104890F83D00202809D1002201210E48BC -:104B2000EDF7E8FC227A0A490A48F2F705F920462F -:104B3000F7F7C2FB08E03EB9002008490870284694 -:104B4000F9F76AF9BDE8F0810020FBE7A801002031 -:104B500076220020902E0020000C02400800002049 -:104B60002DE9F04107460D4614461E46ECB1218959 -:104B70002846FDF7E9FC1248056022891148616862 -:104B8000EBF7C4FB104890F83D00202809D1002223 -:104B900010210E48EDF7AEFC227A0A490A48F2F7D6 -:104BA000CBF82046F7F788FB08E03EB9002008491B -:104BB00008702846F9F730F9BDE8F0810020FBE7DE -:104BC000AC010020741C0020182F0020000C0240B3 +:1048100005492046FDF7E0FD0448046001200449F5 +:104820000870002070BD0000B9480108B4010020E4 +:104830000B00002070B505460C461646054920467B +:10484000FDF7CAFD044804600120044908700020F7 +:1048500070BD000019490108B80100200C000020BB +:1048600070B505460C46164605492046FDF7B4FDD1 +:1048700004480460012004490870002070BD000055 +:10488000FD4A0108A80100200800002070B5054677 +:104890000C46164605492046FDF79EFD0448046077 +:1048A000012004490870002070BD0000694B010818 +:1048B000AC010020090000202DE9F04107460D461B +:1048C00014461E46B4B121892846FDF73DFE2289D3 +:1048D0000E486168EBF71AFD0D4890F83D0020285E +:1048E00004D1227A09490A48F2F726FA2046F7F756 +:1048F000E3FC08E03EB90020064908702846F9F7B5 +:104900008BFABDE8F0810020FBE700007216002062 +:104910005C2F00200B0000202DE9F043CDB0814634 +:104920000E4614461F4680212DA8EBF716FD802168 +:104930000DA8EBF712FD0025A846002C7ED021899A +:104940003046FDF701FE22892DA86168EBF7DEFCF9 +:10495000257A9DF8B400AA2804D1681E2DA9085C08 +:104960003C280DD04FF0070801222DA90DA8F2F721 +:1049700049F8012342460DA93046FFF7A1F99FE00F +:10498000E81E81B20DF1B50002F00CFBA91E2DAAA4 +:10499000515C88420DD04FF0070802222DA90DA8C6 +:1049A000F2F730F8012342460DA93046FFF788F9A7 +:1049B00086E09DF8B8200DF1B9016846EBF7A6FC3A +:1049C0009DF8B70088B94FF00B084549C1F800D0F1 +:1049D0002DAA0DA942480068F2F72EF8012342469D +:1049E0000DA93046FFF76CF96AE09DF8B700012881 +:1049F0000DD13C49C1F800D008460068F2F79EF896 +:104A000001232A462DA93046FFF75AF958E09DF8B0 +:104A1000B700022817D13449C1F800D00846006811 +:104A20004078C01D00F0FF082DAA0DA92E4800688F +:104A300000F0BCFD012342460DA900E044E03046F1 +:104A4000FFF73EF93CE09DF8B70003280DD1274958 +:104A5000C1F800D00846006800F012FE01232A4683 +:104A60002DA93046FFF72CF92AE09DF8B70004285D +:104A700003D100201E49087022E09DF8B7000528E8 +:104A800011D14FF00C081B49C1F800D02DAA0DA977 +:104A900018480068F2F702F8012342460DA9304693 +:104AA000FFF70EF90CE04FF0070803222DA90DA81F +:104AB000F1F7A8FF012342460DA93046FFF700F9A0 +:104AC0002046F7F7F9FB09E047B900200A490870CA +:104AD0003046F9F7A1F94DB0BDE8F0830020FAE7C0 +:104AE000C4010020C8010020BC010020C00100203A +:104AF0000D000020CC0100200C0000202DE9F04129 +:104B000007460D4614461E46DCB121892846FDF7AE +:104B10001BFD228910486168EBF7F8FB0F4890F8FD +:104B20003D00202809D1002201210D48EDF7E2FCCB +:104B3000227A09490948F2F7FFF82046F7F7BCFB4B +:104B400008E03EB90020074908702846F9F764F9E3 +:104B5000BDE8F0810020FBE776220020902E0020A7 +:104B6000000C0240080000202DE9F04107460D46E8 +:104B700014461E46DCB121892846FDF7E5FC228952 +:104B800010486168EBF7C2FB0F4890F83D00202801 +:104B900009D1002210210D48EDF7ACFC227A094919 +:104BA0000948F2F7C9F82046F7F786FB08E03EB956 +:104BB0000020074908702846F9F72EF9BDE8F08172 +:104BC0000020FBE7741C0020182F0020000C02407E :104BD0000900002038B504460D46F5F7D1F817480E :104BE00004601748056006211648F8F7C1FC002844 :104BF0000AD000BF00BF14A340F261221EA127A06B diff --git a/User/application/src/tcpserverc.c b/User/application/src/tcpserverc.c index 6f74fd7..9bfdb62 100644 --- a/User/application/src/tcpserverc.c +++ b/User/application/src/tcpserverc.c @@ -47,7 +47,6 @@ static err_t tcpecho_recv_hart1(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, /* 更新窗口*/ tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 - server_pcb_hart1 = tpcb; // 直接赋值 memcpy(hart1_uart5.tx_data, (int *)p->payload, p->tot_len); if (huart5.gState == HAL_UART_STATE_READY) { @@ -71,7 +70,6 @@ static err_t tcpecho_recv_hart2(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, /* 更新窗口*/ tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 - server_pcb_hart2 = tpcb; // 直接赋值 memcpy(hart2_uart2.tx_data, (int *)p->payload, p->tot_len); if (huart2.gState == HAL_UART_STATE_READY) { @@ -97,7 +95,6 @@ static err_t tcpecho_recv_ble1(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, /* 更新窗口*/ tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 - server_pcb_ble1 = tpcb; // 直接赋值 memcpy(ble1_uart6.tx_data, (int *)p->payload, p->tot_len); if (huart6.gState == HAL_UART_STATE_READY) @@ -123,7 +120,7 @@ static err_t tcpecho_recv_ble2(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, /* 更新窗口*/ tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 - server_pcb_ble2 = tpcb; // 直接赋值 + memcpy(ble2_uart3.tx_data, (int *)p->payload, p->tot_len); if (huart3.gState == HAL_UART_STATE_READY) { @@ -151,7 +148,7 @@ static err_t tcpecho_recv_control(void *arg, struct tcp_pcb *tpcb, struct pbuf * /* 更新窗口*/ tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 - server_pcb_control = tpcb; // 直接赋值 + memcpy(tcp_rx_data, (int *)p->payload, p->tot_len); rx_data_len = p->tot_len; /*1. 对接收的数据做异或校验、帧头帧尾判断,校验失败返回信息,校验通过继续下一步、校验数据从帧头后面到校验位结束*/ @@ -242,6 +239,7 @@ static err_t tcpecho_recv_control(void *arg, struct tcp_pcb *tpcb, struct pbuf * static err_t tcpecho_accept_hart1(void *arg, struct tcp_pcb *newpcb, err_t err) // 由于这个函数是*tcp_accept_fn类型的,形参的数量和类型必须一致 { tcp_recv(newpcb, tcpecho_recv_hart1); // 当收到数据时,回调用户自己写的tcpecho_recv + server_pcb_hart1 = newpcb; // 直接赋值 tcp_echo_flags_hart1 = 1; // HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_3); // 停止蜂鸣器PWM输出,用于关闭蜂鸣器发声 return ERR_OK; @@ -250,6 +248,7 @@ static err_t tcpecho_accept_hart1(void *arg, struct tcp_pcb *newpcb, err_t err) static err_t tcpecho_accept_hart2(void *arg, struct tcp_pcb *newpcb, err_t err) // 由于这个函数是*tcp_accept_fn类型的 { tcp_recv(newpcb, tcpecho_recv_hart2); // 当收到数据时,回调用户自己写的tcpecho_recv + server_pcb_hart2 = newpcb; // 直接赋值 tcp_echo_flags_hart2 = 1; // HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_3); // 停止蜂鸣器PWM输出,用于关闭蜂鸣器发声 return ERR_OK; @@ -258,6 +257,7 @@ static err_t tcpecho_accept_hart2(void *arg, struct tcp_pcb *newpcb, err_t err) static err_t tcpecho_accept_ble1(void *arg, struct tcp_pcb *newpcb, err_t err) // 由于这个函数是*tcp_accept_fn类型的 { tcp_recv(newpcb, tcpecho_recv_ble1); // 当收到数据时,回调用户自己写的tcpecho_recv + server_pcb_ble1 = newpcb; // 直接赋值 tcp_echo_flags_ble1 = 1; // HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_3); // 停止蜂鸣器PWM输出,用于关闭蜂鸣器发声 return ERR_OK; @@ -266,6 +266,7 @@ static err_t tcpecho_accept_ble1(void *arg, struct tcp_pcb *newpcb, err_t err) / static err_t tcpecho_accept_ble2(void *arg, struct tcp_pcb *newpcb, err_t err) // 由于这个函数是*tcp_accept_fn类型的 { tcp_recv(newpcb, tcpecho_recv_ble2); // 当收到数据时,回调用户自己写的tcpecho_recv + server_pcb_ble2 = newpcb; // 直接赋值 tcp_echo_flags_ble2 = 1; // HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_3); // 停止蜂鸣器PWM输出,用于关闭蜂鸣器发声 return ERR_OK; @@ -273,6 +274,7 @@ static err_t tcpecho_accept_ble2(void *arg, struct tcp_pcb *newpcb, err_t err) / static err_t tcpecho_accept_control(void *arg, struct tcp_pcb *newpcb, err_t err) // 由于这个函数是*tcp_accept_fn类型的 { tcp_recv(newpcb, tcpecho_recv_control); // 当收到数据时,回调用户自己写的tcpecho_recv + server_pcb_control = newpcb; // 直接赋值 tcp_echo_flags_control = 1; // HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_3); // 停止蜂鸣器PWM输出,用于关闭蜂鸣器发声 return ERR_OK; diff --git a/User/system/user_gpio.c b/User/system/user_gpio.c index c0623d4..2fdc627 100644 --- a/User/system/user_gpio.c +++ b/User/system/user_gpio.c @@ -7,8 +7,8 @@ uint8_t di_state_now[DI_MAX] = {0}; void user_write_gpio(communication_do_t *do_data) { uint8_t i = 0; - uint8_t start_addr = do_data->start_addr; // 写输出的起始地址 - uint8_t length = do_data->num; // 写输出的数量 + uint8_t start_addr = do_data->start_addr; // дʼַ + uint8_t length = do_data->num; // д for (i = 0; i < length; i++) { if (do_data->data[i] == 0x01) @@ -24,20 +24,20 @@ void user_write_gpio(communication_do_t *do_data) void user_read_gpio(communication_di_t *di_data, uint8_t *tx_data, const uint8_t *const rx_data) { uint8_t i = 0; - uint8_t start_addr = di_data->start_addr; // 读输入的起始地址 - uint8_t length = di_data->num; // 读输入的数量 - uint8_t tx_data_len = 7 + length; // 数据长度 - tx_data[0] = FRAME_HEAD; // 帧头 - tx_data[1] = COM_OK; // 状态 - tx_data[2] = rx_data[2]; // 设备号 - tx_data[3] = rx_data[3]; // 命令号 - tx_data[4] = length; // 数据长度 + uint8_t start_addr = di_data->start_addr; // ʼַ + uint8_t length = di_data->num; // + uint8_t tx_data_len = 7 + length; // ݳ + tx_data[0] = FRAME_HEAD; // ֡ͷ + tx_data[1] = COM_OK; // ״̬ + tx_data[2] = rx_data[2]; // 豸 + tx_data[3] = rx_data[3]; // + tx_data[4] = length; // ݳ for (i = 0; i < length; i++) { tx_data[5 + i] = gpio_di_test(DI_1 + i + start_addr); } - tx_data[5 + length] = xor_compute(tx_data + 1, tx_data_len - 3); // 异或校验 - tx_data[6 + length] = FRAME_TAIL; // 帧尾 + tx_data[5 + length] = xor_compute(tx_data + 1, tx_data_len - 3); // У + tx_data[6 + length] = FRAME_TAIL; // ֡β } void user_gpio_trigger(void) @@ -62,11 +62,11 @@ void user_gpio_trigger(void) } if ((send_data_flag_cmd != 0) && (1 == tcp_echo_flags_control)) { - tx_data[5 + DI_MAX] = xor_compute(tx_data + 1, tx_data_len - 3); // 寮傛垨鏍¢獙 - tx_data[6 + DI_MAX] = FRAME_TAIL; // 甯у熬 + tx_data[5 + DI_MAX] = xor_compute(tx_data + 1, tx_data_len - 3); // 异或校验 + tx_data[6 + DI_MAX] = FRAME_TAIL; // 帧尾 user_send_data_control(tx_data, tx_data_len); send_data_flag_cmd++; - if (send_data_flag_cmd > 3) // 杩炵画涓夋涓婁綅鏈烘病鏈夊洖搴旓紝鍒欏仠姝㈠彂閫佹暟鎹寘 + if (send_data_flag_cmd > 3) // 连续三?上位机没有回应,则停止发送数? { send_data_flag_cmd = 0; }