From 63126e1036134a1b6bbb825dfeea29dfc151b719 Mon Sep 17 00:00:00 2001 From: Lizongdi <1210855344@qq.com> Date: Tue, 29 Sep 2026 16:34:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=A4=96=E8=AE=BE=E4=B8=B2?= =?UTF-8?q?=E5=8F=A3=E7=AE=A1=E7=90=86=E6=96=B9=E5=BC=8F=E4=BD=BF=E5=85=B6?= =?UTF-8?q?=E5=8F=AF=E9=80=9A=E8=BF=87=E4=BF=AE=E6=94=B9=E9=A1=B6=E5=B1=82?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- RBcore/TL720D.c | 13 +++++++--- RBcore/client_setting.c | 14 +++++----- RBcore/drv_interface.c | 47 +++++++++++++++------------------- RBcore/ground_manger.c | 4 +-- RBcore/include/drv_interface.h | 21 ++++++++------- controller/msp_MK32.c | 10 ++++---- library/common/common_cfg.h.in | 4 +++ 7 files changed, 60 insertions(+), 53 deletions(-) diff --git a/RBcore/TL720D.c b/RBcore/TL720D.c index 0939d10..427ed21 100644 --- a/RBcore/TL720D.c +++ b/RBcore/TL720D.c @@ -135,7 +135,14 @@ static void decode_TL720D(const char *buf, uint32_t _iSize) void TL720D_Init(void) { - TUartUserData *pt4851UserData = UART_userdata_init(1, -1, 512); - g_ptrs485_1 = rd_ComCreate(check_TL720D, decode_TL720D, RS485_1_Send, pt4851UserData->m_buf_size, pt4851UserData); - UART_IT_init(g_ptrs485_1); + if (NULL == g_apstUart[CFG_TL720D_COM]) + { + TUartUserData *pt4851UserData = UART_userdata_init(CFG_TL720D_COM, -1, 512); + g_apstUart[CFG_TL720D_COM] = rd_ComCreate(check_TL720D, decode_TL720D, RS485_1_Send, pt4851UserData->m_buf_size, pt4851UserData); + UART_IT_init(g_apstUart[CFG_TL720D_COM]); + } + else + { + rd_ComAddDev(g_apstUart[CFG_TL720D_COM], check_TL720D, decode_TL720D); + } } diff --git a/RBcore/client_setting.c b/RBcore/client_setting.c index 5c59be4..6609074 100644 --- a/RBcore/client_setting.c +++ b/RBcore/client_setting.c @@ -128,7 +128,7 @@ static void SendIV_ModuleHandler(const Msg_t *pstMsg) g_IV_buffer[IV_o_stream.bytes_written + 2] = (crc>>8) &0xff; g_IV_buffer[IV_o_stream.bytes_written + 3] = crc & 0xff;; - rd_ComSend(g_ptlpuart, g_IV_buffer, IV_o_stream.bytes_written + 4); + rd_ComSend(g_apstUart[COM_LPUART], g_IV_buffer, IV_o_stream.bytes_written + 4); } break; } @@ -156,16 +156,16 @@ void client_setting_Init(void) }; (void)osThreadNew(Send_IV, NULL, &Send_PV_attributes); - if (NULL == g_ptlpuart) + if (NULL == g_apstUart[CFG_CLI_SET_COM]) { - TUartUserData *ptUartUserData = UART_userdata_init(0, -1, 512); - g_ptlpuart = rd_ComCreate(check_PV, decode_PV, LPUART_Send, ptUartUserData->m_buf_size, ptUartUserData); - UART_IT_init(g_ptlpuart); + TUartUserData *ptUartUserData = UART_userdata_init(CFG_CLI_SET_COM, -1, 512); + g_apstUart[CFG_CLI_SET_COM] = rd_ComCreate(check_PV, decode_PV, LPUART_Send, ptUartUserData->m_buf_size, ptUartUserData); + UART_IT_init(g_apstUart[CFG_CLI_SET_COM]); } else { - rd_ComAddDev(g_ptlpuart, check_PV, decode_PV); + rd_ComAddDev(g_apstUart[CFG_CLI_SET_COM], check_PV, decode_PV); } - rd_ComSetRecvTime(g_ptlpuart, 1500);// PV平均一到两秒发一条,这里超时时间设置为1.5秒 + rd_ComSetRecvTime(g_apstUart[CFG_CLI_SET_COM], 1500);// PV平均一到两秒发一条,这里超时时间设置为1.5秒 } diff --git a/RBcore/drv_interface.c b/RBcore/drv_interface.c index 51d8bec..2feeb34 100644 --- a/RBcore/drv_interface.c +++ b/RBcore/drv_interface.c @@ -37,14 +37,7 @@ extern TComCtrl *g_ptUartCtrl; /*----------------------------------------------* * 全局变量 * *----------------------------------------------*/ -TComCtrl *g_ptrs485_1 = NULL; -TComCtrl *g_ptrs485_2 = NULL; -TComCtrl *g_ptrs485_3 = NULL; -TComCtrl *g_ptrs485_4 = NULL; -TComCtrl *g_ptlte_7S0 = NULL; -TComCtrl *g_ptSbus = NULL; -TComCtrl *g_ptInterCall = NULL; -TComCtrl *g_ptlpuart = NULL; +TComCtrl *g_apstUart[COM_MAX] = {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}; TComCtrl *g_ptCAN1 = NULL; TComCtrl *g_ptCAN2 = NULL; @@ -65,7 +58,7 @@ CV_struct_define g_stCV = {0}; int RS485_1_Send(char *_pBuffer, uint32_t _iSize) { HAL_GPIO_WritePin(RS485_1_DIR_GPIO_Port, RS485_1_DIR_Pin, GPIO_PIN_SET); - TUartUserData *ptUartUserData = (TUartUserData *)g_ptrs485_1->m_pUserData; + TUartUserData *ptUartUserData = (TUartUserData *)g_apstUart[COM_RS485_1]->m_pUserData; int iRet = HAL_UART_Transmit(ptUartUserData->m_uart, (uint8_t *)_pBuffer, _iSize, 100); HAL_GPIO_WritePin(RS485_1_DIR_GPIO_Port, RS485_1_DIR_Pin, GPIO_PIN_RESET); return iRet; @@ -73,7 +66,7 @@ int RS485_1_Send(char *_pBuffer, uint32_t _iSize) int LTE_7S0_Send(char *_pBuffer, uint32_t _iSize) { - TUartUserData *ptUartUserData = (TUartUserData *)g_ptlte_7S0->m_pUserData; + TUartUserData *ptUartUserData = (TUartUserData *)g_apstUart[COM_LTE_7S0]->m_pUserData; int iRet = HAL_UART_Transmit(ptUartUserData->m_uart, (uint8_t *)_pBuffer, _iSize, 100); return iRet; } @@ -81,7 +74,7 @@ int LTE_7S0_Send(char *_pBuffer, uint32_t _iSize) int RS485_2_Send(char *_pBuffer, uint32_t _iSize) { HAL_GPIO_WritePin(RS485_2_DIR_GPIO_Port, RS485_2_DIR_Pin, GPIO_PIN_SET); - TUartUserData *ptUartUserData = (TUartUserData *)g_ptrs485_2->m_pUserData; + TUartUserData *ptUartUserData = (TUartUserData *)g_apstUart[COM_RS485_2]->m_pUserData; int iRet = HAL_UART_Transmit(ptUartUserData->m_uart, (uint8_t *)_pBuffer, _iSize, 100); HAL_GPIO_WritePin(RS485_2_DIR_GPIO_Port, RS485_2_DIR_Pin, GPIO_PIN_RESET); return iRet; @@ -89,14 +82,14 @@ int RS485_2_Send(char *_pBuffer, uint32_t _iSize) int InterCall_Send(char *_pBuffer, uint32_t _iSize) { - TUartUserData *ptUartUserData = (TUartUserData *)g_ptInterCall->m_pUserData; + TUartUserData *ptUartUserData = (TUartUserData *)g_apstUart[COM_INTERCALL]->m_pUserData; int iRet = HAL_UART_Transmit(ptUartUserData->m_uart, (uint8_t *)_pBuffer, _iSize, 100); return iRet; } int E28_SBUS_Send(char *_pBuffer, uint32_t _iSize) { - TUartUserData *ptUartUserData = (TUartUserData *)g_ptSbus->m_pUserData; + TUartUserData *ptUartUserData = (TUartUserData *)g_apstUart[COM_SBUS]->m_pUserData; int iRet = HAL_UART_Transmit(ptUartUserData->m_uart, (uint8_t *)_pBuffer, _iSize, 100); return iRet; } @@ -104,7 +97,7 @@ int E28_SBUS_Send(char *_pBuffer, uint32_t _iSize) int RS485_3_Send(char *_pBuffer, uint32_t _iSize) { HAL_GPIO_WritePin(RS485_3_DIR_GPIO_Port, RS485_3_DIR_Pin, GPIO_PIN_SET); - TUartUserData *ptUartUserData = (TUartUserData *)g_ptrs485_3->m_pUserData; + TUartUserData *ptUartUserData = (TUartUserData *)g_apstUart[COM_RS485_3]->m_pUserData; int iRet = HAL_UART_Transmit(ptUartUserData->m_uart, (uint8_t *)_pBuffer, _iSize, 100); HAL_GPIO_WritePin(RS485_3_DIR_GPIO_Port, RS485_3_DIR_Pin, GPIO_PIN_RESET); return iRet; @@ -113,7 +106,7 @@ int RS485_3_Send(char *_pBuffer, uint32_t _iSize) int RS485_4_Send(char *_pBuffer, uint32_t _iSize) { HAL_GPIO_WritePin(RS485_4_DIR_GPIO_Port, RS485_4_DIR_Pin, GPIO_PIN_SET); - TUartUserData *ptUartUserData = (TUartUserData *)g_ptrs485_4->m_pUserData; + TUartUserData *ptUartUserData = (TUartUserData *)g_apstUart[COM_RS485_4]->m_pUserData; int iRet = HAL_UART_Transmit(ptUartUserData->m_uart, (uint8_t *)_pBuffer, _iSize, 100); HAL_GPIO_WritePin(RS485_4_DIR_GPIO_Port, RS485_4_DIR_Pin, GPIO_PIN_RESET); return iRet; @@ -121,7 +114,7 @@ int RS485_4_Send(char *_pBuffer, uint32_t _iSize) int LPUART_Send(char *_pBuffer, uint32_t _iSize) { - TUartUserData *ptUartUserData = (TUartUserData *)g_ptlpuart->m_pUserData; + TUartUserData *ptUartUserData = (TUartUserData *)g_apstUart[COM_LPUART]->m_pUserData; int iRet = HAL_UART_Transmit(ptUartUserData->m_uart, (uint8_t *)_pBuffer, _iSize, 100); return iRet; } @@ -141,39 +134,39 @@ void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { if (huart->Instance == USART1) { - UART_RX_IRQHandler(g_ptrs485_1); + UART_RX_IRQHandler(g_apstUart[COM_RS485_1]); } else if (huart->Instance == USART2) { - UART_RX_IRQHandler(g_ptlte_7S0); + UART_RX_IRQHandler(g_apstUart[COM_LTE_7S0]); } else if (huart->Instance == USART3) { #ifdef USE_PRINT UART_RX_IRQHandler(g_ptUartCtrl); #else - UART_RX_IRQHandler(g_ptrs485_2); + UART_RX_IRQHandler(g_apstUart[COM_RS485_2]); #endif } else if (huart->Instance == UART4) { - UART_RX_IRQHandler(g_ptInterCall); + UART_RX_IRQHandler(g_apstUart[COM_INTERCALL]); } else if (huart->Instance == UART5) { - UART_RX_IRQHandler(g_ptSbus); + UART_RX_IRQHandler(g_apstUart[COM_SBUS]); } else if (huart->Instance == USART6) { - UART_RX_IRQHandler(g_ptrs485_3); + UART_RX_IRQHandler(g_apstUart[COM_RS485_3]); } else if (huart->Instance == UART7) { - UART_RX_IRQHandler(g_ptrs485_4); + UART_RX_IRQHandler(g_apstUart[COM_RS485_4]); } else if (huart->Instance == LPUART1) { - UART_RX_IRQHandler(g_ptlpuart); + UART_RX_IRQHandler(g_apstUart[COM_LPUART]); } } #endif @@ -232,7 +225,7 @@ void lpuart_task(void *argument) while(1) { - rd_ComRead(g_ptlpuart, pcBuffer, 64); + rd_ComRead(g_apstUart[COM_LPUART], pcBuffer, 64); } } @@ -252,7 +245,7 @@ void Sbus_task(void *argument) while (1) { - rd_ComRead(g_ptSbus, pcBuffer, 25); + rd_ComRead(g_apstUart[COM_SBUS], pcBuffer, 25); } } @@ -262,7 +255,7 @@ void rs485_1_task(void *argument) while(1) { - rd_ComRead(g_ptrs485_1, pcBuffer, 64); + rd_ComRead(g_apstUart[COM_RS485_1], pcBuffer, 64); } } diff --git a/RBcore/ground_manger.c b/RBcore/ground_manger.c index d582f9b..6ff0229 100644 --- a/RBcore/ground_manger.c +++ b/RBcore/ground_manger.c @@ -58,8 +58,8 @@ void Send_ground(void *argument) void ground_manger_init(void) { TUartUserData *ptUartUserData = UART_userdata_init(7, -1, 512); - g_ptrs485_4 = rd_ComCreate(NULL, NULL, RS485_4_Send, ptUartUserData->m_buf_size, ptUartUserData); - UART_IT_init(g_ptrs485_4); + g_apstUart[COM_RS485_4] = rd_ComCreate(NULL, NULL, RS485_4_Send, ptUartUserData->m_buf_size, ptUartUserData); + UART_IT_init(g_apstUart[COM_RS485_4]); const osThreadAttr_t Send_ground_attributes = { .name = "Send_ground", diff --git a/RBcore/include/drv_interface.h b/RBcore/include/drv_interface.h index aab2632..b085bad 100644 --- a/RBcore/include/drv_interface.h +++ b/RBcore/include/drv_interface.h @@ -71,19 +71,22 @@ extern "C"{ /*==============================================* * constants or macros define * *----------------------------------------------*/ - +typedef enum { + COM_LPUART = 0, + COM_RS485_1, + COM_LTE_7S0, + COM_RS485_2, + COM_INTERCALL, + COM_SBUS, + COM_RS485_3, + COM_RS485_4, + COM_MAX +} BHBF_Com_e; /*==============================================* * project-wide global variables * *----------------------------------------------*/ -extern TComCtrl *g_ptrs485_1; -extern TComCtrl *g_ptrs485_2; -extern TComCtrl *g_ptrs485_3; -extern TComCtrl *g_ptrs485_4; -extern TComCtrl *g_ptlte_7S0; -extern TComCtrl *g_ptSbus; -extern TComCtrl *g_ptInterCall; -extern TComCtrl *g_ptlpuart; +extern TComCtrl *g_apstUart[COM_MAX]; extern TComCtrl *g_ptCAN1; extern TComCtrl *g_ptCAN2; diff --git a/controller/msp_MK32.c b/controller/msp_MK32.c index 7f5161a..869e128 100644 --- a/controller/msp_MK32.c +++ b/controller/msp_MK32.c @@ -123,15 +123,15 @@ void decode_MK32(const char *buf, uint32_t _iSize) void controller_init(void) { - if (NULL == g_ptSbus) + if (NULL == g_apstUart[CFG_MK32_COM]) { - TUartUserData *ptSbus = UART_userdata_init(5, -1, 512); - g_ptSbus = rd_ComCreate(check_MK32, decode_MK32, E28_SBUS_Send, ptSbus->m_buf_size, ptSbus); - UART_IT_init(g_ptSbus); + TUartUserData *ptSbus = UART_userdata_init(CFG_MK32_COM, -1, 512); + g_apstUart[CFG_MK32_COM] = rd_ComCreate(check_MK32, decode_MK32, E28_SBUS_Send, ptSbus->m_buf_size, ptSbus); + UART_IT_init(g_apstUart[CFG_MK32_COM]); } else { - rd_ComAddDev(g_ptSbus, check_MK32, decode_MK32); + rd_ComAddDev(g_apstUart[CFG_MK32_COM], check_MK32, decode_MK32); } } diff --git a/library/common/common_cfg.h.in b/library/common/common_cfg.h.in index 95c8a94..385115e 100644 --- a/library/common/common_cfg.h.in +++ b/library/common/common_cfg.h.in @@ -32,6 +32,10 @@ extern "C"{ #cmakedefine USE_LWIP #cmakedefine USE_W25QXX +#define CFG_MK32_COM @CFG_MK32_COM@ +#define CFG_CLI_SET_COM @CFG_CLI_SET_COM@ +#define CFG_TL720D_COM @CFG_TL720D_COM@ + #define LUACOM_ID @LUACOM_ID@ #define PRINT_ID @PRINT_ID@