Browse Source

优化外设串口管理方式使其可通过修改顶层配置修改

Lizongdi 1 day ago
parent
commit
63126e1036
  1. 13
      RBcore/TL720D.c
  2. 14
      RBcore/client_setting.c
  3. 47
      RBcore/drv_interface.c
  4. 4
      RBcore/ground_manger.c
  5. 21
      RBcore/include/drv_interface.h
  6. 10
      controller/msp_MK32.c
  7. 4
      library/common/common_cfg.h.in

13
RBcore/TL720D.c

@ -135,7 +135,14 @@ static void decode_TL720D(const char *buf, uint32_t _iSize)
void TL720D_Init(void) void TL720D_Init(void)
{ {
TUartUserData *pt4851UserData = UART_userdata_init(1, -1, 512); if (NULL == g_apstUart[CFG_TL720D_COM])
g_ptrs485_1 = rd_ComCreate(check_TL720D, decode_TL720D, RS485_1_Send, pt4851UserData->m_buf_size, pt4851UserData); {
UART_IT_init(g_ptrs485_1); 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);
}
} }

14
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 + 2] = (crc>>8) &0xff;
g_IV_buffer[IV_o_stream.bytes_written + 3] = crc & 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; break;
} }
@ -156,16 +156,16 @@ void client_setting_Init(void)
}; };
(void)osThreadNew(Send_IV, NULL, &Send_PV_attributes); (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); TUartUserData *ptUartUserData = UART_userdata_init(CFG_CLI_SET_COM, -1, 512);
g_ptlpuart = rd_ComCreate(check_PV, decode_PV, LPUART_Send, ptUartUserData->m_buf_size, ptUartUserData); g_apstUart[CFG_CLI_SET_COM] = rd_ComCreate(check_PV, decode_PV, LPUART_Send, ptUartUserData->m_buf_size, ptUartUserData);
UART_IT_init(g_ptlpuart); UART_IT_init(g_apstUart[CFG_CLI_SET_COM]);
} }
else 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秒
} }

47
RBcore/drv_interface.c

@ -37,14 +37,7 @@ extern TComCtrl *g_ptUartCtrl;
/*----------------------------------------------* /*----------------------------------------------*
* 全局变量 * * 全局变量 *
*----------------------------------------------*/ *----------------------------------------------*/
TComCtrl *g_ptrs485_1 = NULL; TComCtrl *g_apstUart[COM_MAX] = {NULL, NULL, NULL, NULL, NULL, NULL, NULL, 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_ptCAN1 = NULL; TComCtrl *g_ptCAN1 = NULL;
TComCtrl *g_ptCAN2 = NULL; TComCtrl *g_ptCAN2 = NULL;
@ -65,7 +58,7 @@ CV_struct_define g_stCV = {0};
int RS485_1_Send(char *_pBuffer, uint32_t _iSize) int RS485_1_Send(char *_pBuffer, uint32_t _iSize)
{ {
HAL_GPIO_WritePin(RS485_1_DIR_GPIO_Port, RS485_1_DIR_Pin, GPIO_PIN_SET); 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); 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); HAL_GPIO_WritePin(RS485_1_DIR_GPIO_Port, RS485_1_DIR_Pin, GPIO_PIN_RESET);
return iRet; return iRet;
@ -73,7 +66,7 @@ int RS485_1_Send(char *_pBuffer, uint32_t _iSize)
int LTE_7S0_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); int iRet = HAL_UART_Transmit(ptUartUserData->m_uart, (uint8_t *)_pBuffer, _iSize, 100);
return iRet; return iRet;
} }
@ -81,7 +74,7 @@ int LTE_7S0_Send(char *_pBuffer, uint32_t _iSize)
int RS485_2_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); 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); 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); HAL_GPIO_WritePin(RS485_2_DIR_GPIO_Port, RS485_2_DIR_Pin, GPIO_PIN_RESET);
return iRet; return iRet;
@ -89,14 +82,14 @@ int RS485_2_Send(char *_pBuffer, uint32_t _iSize)
int InterCall_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); int iRet = HAL_UART_Transmit(ptUartUserData->m_uart, (uint8_t *)_pBuffer, _iSize, 100);
return iRet; return iRet;
} }
int E28_SBUS_Send(char *_pBuffer, uint32_t _iSize) 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); int iRet = HAL_UART_Transmit(ptUartUserData->m_uart, (uint8_t *)_pBuffer, _iSize, 100);
return iRet; return iRet;
} }
@ -104,7 +97,7 @@ int E28_SBUS_Send(char *_pBuffer, uint32_t _iSize)
int RS485_3_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); 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); 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); HAL_GPIO_WritePin(RS485_3_DIR_GPIO_Port, RS485_3_DIR_Pin, GPIO_PIN_RESET);
return iRet; return iRet;
@ -113,7 +106,7 @@ int RS485_3_Send(char *_pBuffer, uint32_t _iSize)
int RS485_4_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); 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); 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); HAL_GPIO_WritePin(RS485_4_DIR_GPIO_Port, RS485_4_DIR_Pin, GPIO_PIN_RESET);
return iRet; return iRet;
@ -121,7 +114,7 @@ int RS485_4_Send(char *_pBuffer, uint32_t _iSize)
int LPUART_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); int iRet = HAL_UART_Transmit(ptUartUserData->m_uart, (uint8_t *)_pBuffer, _iSize, 100);
return iRet; return iRet;
} }
@ -141,39 +134,39 @@ void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{ {
if (huart->Instance == USART1) if (huart->Instance == USART1)
{ {
UART_RX_IRQHandler(g_ptrs485_1); UART_RX_IRQHandler(g_apstUart[COM_RS485_1]);
} }
else if (huart->Instance == USART2) else if (huart->Instance == USART2)
{ {
UART_RX_IRQHandler(g_ptlte_7S0); UART_RX_IRQHandler(g_apstUart[COM_LTE_7S0]);
} }
else if (huart->Instance == USART3) else if (huart->Instance == USART3)
{ {
#ifdef USE_PRINT #ifdef USE_PRINT
UART_RX_IRQHandler(g_ptUartCtrl); UART_RX_IRQHandler(g_ptUartCtrl);
#else #else
UART_RX_IRQHandler(g_ptrs485_2); UART_RX_IRQHandler(g_apstUart[COM_RS485_2]);
#endif #endif
} }
else if (huart->Instance == UART4) else if (huart->Instance == UART4)
{ {
UART_RX_IRQHandler(g_ptInterCall); UART_RX_IRQHandler(g_apstUart[COM_INTERCALL]);
} }
else if (huart->Instance == UART5) else if (huart->Instance == UART5)
{ {
UART_RX_IRQHandler(g_ptSbus); UART_RX_IRQHandler(g_apstUart[COM_SBUS]);
} }
else if (huart->Instance == USART6) else if (huart->Instance == USART6)
{ {
UART_RX_IRQHandler(g_ptrs485_3); UART_RX_IRQHandler(g_apstUart[COM_RS485_3]);
} }
else if (huart->Instance == UART7) else if (huart->Instance == UART7)
{ {
UART_RX_IRQHandler(g_ptrs485_4); UART_RX_IRQHandler(g_apstUart[COM_RS485_4]);
} }
else if (huart->Instance == LPUART1) else if (huart->Instance == LPUART1)
{ {
UART_RX_IRQHandler(g_ptlpuart); UART_RX_IRQHandler(g_apstUart[COM_LPUART]);
} }
} }
#endif #endif
@ -232,7 +225,7 @@ void lpuart_task(void *argument)
while(1) 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) 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) while(1)
{ {
rd_ComRead(g_ptrs485_1, pcBuffer, 64); rd_ComRead(g_apstUart[COM_RS485_1], pcBuffer, 64);
} }
} }

4
RBcore/ground_manger.c

@ -58,8 +58,8 @@ void Send_ground(void *argument)
void ground_manger_init(void) void ground_manger_init(void)
{ {
TUartUserData *ptUartUserData = UART_userdata_init(7, -1, 512); TUartUserData *ptUartUserData = UART_userdata_init(7, -1, 512);
g_ptrs485_4 = rd_ComCreate(NULL, NULL, RS485_4_Send, ptUartUserData->m_buf_size, ptUartUserData); g_apstUart[COM_RS485_4] = rd_ComCreate(NULL, NULL, RS485_4_Send, ptUartUserData->m_buf_size, ptUartUserData);
UART_IT_init(g_ptrs485_4); UART_IT_init(g_apstUart[COM_RS485_4]);
const osThreadAttr_t Send_ground_attributes = { const osThreadAttr_t Send_ground_attributes = {
.name = "Send_ground", .name = "Send_ground",

21
RBcore/include/drv_interface.h

@ -71,19 +71,22 @@ extern "C"{
/*==============================================* /*==============================================*
* constants or macros define * * 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 * * project-wide global variables *
*----------------------------------------------*/ *----------------------------------------------*/
extern TComCtrl *g_ptrs485_1; extern TComCtrl *g_apstUart[COM_MAX];
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_ptCAN1; extern TComCtrl *g_ptCAN1;
extern TComCtrl *g_ptCAN2; extern TComCtrl *g_ptCAN2;

10
controller/msp_MK32.c

@ -123,15 +123,15 @@ void decode_MK32(const char *buf, uint32_t _iSize)
void controller_init(void) void controller_init(void)
{ {
if (NULL == g_ptSbus) if (NULL == g_apstUart[CFG_MK32_COM])
{ {
TUartUserData *ptSbus = UART_userdata_init(5, -1, 512); TUartUserData *ptSbus = UART_userdata_init(CFG_MK32_COM, -1, 512);
g_ptSbus = rd_ComCreate(check_MK32, decode_MK32, E28_SBUS_Send, ptSbus->m_buf_size, ptSbus); g_apstUart[CFG_MK32_COM] = rd_ComCreate(check_MK32, decode_MK32, E28_SBUS_Send, ptSbus->m_buf_size, ptSbus);
UART_IT_init(g_ptSbus); UART_IT_init(g_apstUart[CFG_MK32_COM]);
} }
else else
{ {
rd_ComAddDev(g_ptSbus, check_MK32, decode_MK32); rd_ComAddDev(g_apstUart[CFG_MK32_COM], check_MK32, decode_MK32);
} }
} }

4
library/common/common_cfg.h.in

@ -32,6 +32,10 @@ extern "C"{
#cmakedefine USE_LWIP #cmakedefine USE_LWIP
#cmakedefine USE_W25QXX #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 LUACOM_ID @LUACOM_ID@
#define PRINT_ID @PRINT_ID@ #define PRINT_ID @PRINT_ID@

Loading…
Cancel
Save