diff --git a/RBcore/TL720D.c b/RBcore/TL720D.c index ebbada0..0939d10 100644 --- a/RBcore/TL720D.c +++ b/RBcore/TL720D.c @@ -133,26 +133,9 @@ static void decode_TL720D(const char *buf, uint32_t _iSize) } } -void Read_TL720D(void *argument) -{ - char pcBuffer[64] = {0}; - - while(1) - { - rd_ComRead(g_ptrs485_1, pcBuffer, 64); - } -} - 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); - - const osThreadAttr_t Read_TL720D_attributes = { - .name = "Read_TL720D", - .stack_size = THREAD_DEFAULT_STACK, - .priority = (osPriority_t) osPriorityRealtime1, - }; - (void)osThreadNew(Read_TL720D, NULL, &Read_TL720D_attributes); } diff --git a/RBcore/client_setting.c b/RBcore/client_setting.c index c5854a5..5c59be4 100644 --- a/RBcore/client_setting.c +++ b/RBcore/client_setting.c @@ -145,7 +145,7 @@ static void Send_IV(void *argument) } } -void SendIV_Init(void) +void client_setting_Init(void) { g_uiIVModuleID = MsgCenter_Register(MODULE_NAME_SENDIV, SendIV_ModuleHandler); @@ -155,4 +155,17 @@ void SendIV_Init(void) .priority = (osPriority_t) osPriorityRealtime1, }; (void)osThreadNew(Send_IV, NULL, &Send_PV_attributes); + + if (NULL == g_ptlpuart) + { + 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); + } + else + { + rd_ComAddDev(g_ptlpuart, check_PV, decode_PV); + } + + rd_ComSetRecvTime(g_ptlpuart, 1500);// PV平均一到两秒发一条,这里超时时间设置为1.5秒 } diff --git a/RBcore/drv_interface.c b/RBcore/drv_interface.c index de9f110..51d8bec 100644 --- a/RBcore/drv_interface.c +++ b/RBcore/drv_interface.c @@ -37,17 +37,17 @@ extern TComCtrl *g_ptUartCtrl; /*----------------------------------------------* * 全局变量 * *----------------------------------------------*/ -TComCtrl *g_ptrs485_1; -TComCtrl *g_ptrs485_2; -TComCtrl *g_ptrs485_3; -TComCtrl *g_ptrs485_4; -TComCtrl *g_ptlte_7S0; -TComCtrl *g_ptSbus; -TComCtrl *g_ptInterCall; -TComCtrl *g_ptlpuart; - -TComCtrl *g_ptCAN1; -TComCtrl *g_ptCAN2; +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_ptCAN1 = NULL; +TComCtrl *g_ptCAN2 = NULL; CV_struct_define g_stCV = {0}; /*----------------------------------------------* @@ -119,7 +119,7 @@ int RS485_4_Send(char *_pBuffer, uint32_t _iSize) return iRet; } -int LPUART_PV_Send(char *_pBuffer, uint32_t _iSize) +int LPUART_Send(char *_pBuffer, uint32_t _iSize) { TUartUserData *ptUartUserData = (TUartUserData *)g_ptlpuart->m_pUserData; int iRet = HAL_UART_Transmit(ptUartUserData->m_uart, (uint8_t *)_pBuffer, _iSize, 100); @@ -226,7 +226,7 @@ void HAL_FDCAN_RxFifo0Callback(FDCAN_HandleTypeDef *hfdcan, uint32_t RxFifo0ITs) } } -void Read_PV(void *argument) +void lpuart_task(void *argument) { char pcBuffer[64] = {0}; @@ -236,7 +236,7 @@ void Read_PV(void *argument) } } -void Read_motor(void *argument) +void CAN1_task(void *argument) { char pcBuffer[32] = {0}; @@ -246,12 +246,32 @@ void Read_motor(void *argument) } } +void Sbus_task(void *argument) +{ + char pcBuffer[52] = {0}; + + while (1) + { + rd_ComRead(g_ptSbus, pcBuffer, 25); + } +} + +void rs485_1_task(void *argument) +{ + char pcBuffer[64] = {0}; + + while(1) + { + rd_ComRead(g_ptrs485_1, pcBuffer, 64); + } +} + extern void MotorTask(void *argument); extern int check_PV(char *_pBuffer, uint32_t _iSize); extern void decode_PV(const char *buf, uint32_t _iSize); extern void ground_manger_init(void); extern void Custom_Task(void *argument); -void SendIV_Init(void); +void client_setting_Init(void); void TL720D_Init(void); void RBcore_Init(void); void controller_init(void); @@ -264,7 +284,7 @@ void Drv_InterfaceInit(void) MsgCenter_Init(); GF_BSP_EEPROM_ReadBytes((uint8_t *)&g_stCV, GF_BSP_EEPROM_CV_struct_define_Start_Address, sizeof(CV_struct_define)); - SendIV_Init(); + client_setting_Init(); // ground_manger_init(); const osThreadAttr_t Custom_attributes = { @@ -282,30 +302,40 @@ void Drv_InterfaceInit(void) }; (void)osThreadNew(MotorTask, NULL, &motor_task_attributes); - const osThreadAttr_t Read_motor_attributes = { - .name = "Read_motor", + const osThreadAttr_t CAN1_task_attributes = { + .name = "CAN1_task", .stack_size = THREAD_DEFAULT_STACK, .priority = (osPriority_t) osPriorityRealtime1, }; - (void)osThreadNew(Read_motor, NULL, &Read_motor_attributes); + (void)osThreadNew(CAN1_task, NULL, &CAN1_task_attributes); RBcore_Init(); controller_init(); - TUartUserData *ptUartUserData = UART_userdata_init(0, -1, 512); - g_ptlpuart = rd_ComCreate(check_PV, decode_PV, LPUART_PV_Send, ptUartUserData->m_buf_size, ptUartUserData); - UART_IT_init(g_ptlpuart); - rd_ComSetRecvTime(g_ptlpuart, 1500);// PV平均一到两秒发一条,这里超时时间设置为1.5秒 + const osThreadAttr_t Sbus_task_attributes = { + .name = "Sbus_task", + .stack_size = THREAD_DEFAULT_STACK, + .priority = (osPriority_t) osPriorityRealtime1, + }; + (void)osThreadNew(Sbus_task, NULL, &Sbus_task_attributes); - const osThreadAttr_t Read_PV_attributes = { - .name = "Read_PV", + const osThreadAttr_t lpuart_task_attributes = { + .name = "lpuart_task", .stack_size = THREAD_DEFAULT_STACK, .priority = (osPriority_t) osPriorityRealtime1, }; - (void)osThreadNew(Read_PV, NULL, &Read_PV_attributes); + (void)osThreadNew(lpuart_task, NULL, &lpuart_task_attributes); TL720D_Init(); + + const osThreadAttr_t rs485_1_task_attributes = { + .name = "rs485_1_task", + .stack_size = THREAD_DEFAULT_STACK, + .priority = (osPriority_t) osPriorityRealtime1, + }; + (void)osThreadNew(rs485_1_task, NULL, &rs485_1_task_attributes); + daemon_Init(); //Timer_Init(); diff --git a/RBcore/include/drv_interface.h b/RBcore/include/drv_interface.h index 0ab031f..aab2632 100644 --- a/RBcore/include/drv_interface.h +++ b/RBcore/include/drv_interface.h @@ -93,6 +93,7 @@ extern CV_struct_define g_stCV; * routines' or functions' implementations * *----------------------------------------------*/ +extern int LPUART_Send(char *_pBuffer, uint32_t _iSize); extern int E28_SBUS_Send(char *_pBuffer, uint32_t _iSize); extern int FDCAN1_Send(char *_pBuffer, uint32_t _iSize); extern int FDCAN2_Send(char *_pBuffer, uint32_t _iSize); diff --git a/controller/msp_MK32.c b/controller/msp_MK32.c index 9159320..7f5161a 100644 --- a/controller/msp_MK32.c +++ b/controller/msp_MK32.c @@ -121,28 +121,18 @@ void decode_MK32(const char *buf, uint32_t _iSize) } } -void Read_MK32(void *argument) +void controller_init(void) { - char pcBuffer[52] = {0}; - - while (1) + if (NULL == g_ptSbus) { - rd_ComRead(g_ptSbus, pcBuffer, 25); + 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); + } + else + { + rd_ComAddDev(g_ptSbus, check_MK32, decode_MK32); } -} - -void controller_init(void) -{ - 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); - - const osThreadAttr_t MK32_Task_attributes = { - .name = "Read_MK32", - .stack_size = THREAD_DEFAULT_STACK, - .priority = (osPriority_t) osPriorityRealtime1, - }; - (void)osThreadNew(Read_MK32, NULL, &MK32_Task_attributes); } WEAK void MK32_Key_Func(SP_MSP_MK32_Button *_pstMK32, int _iMode, int _iSubMode)