Browse Source

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

master
Lizongdi 1 day ago
parent
commit
c7d5b67741
  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)
{
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);
}
}

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 + 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秒
}

47
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);
}
}

4
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",

21
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;

10
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);
}
}

4
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@

Loading…
Cancel
Save