3 changed files with 190 additions and 38 deletions
@ -0,0 +1,186 @@ |
|||
/******************************************************************************
|
|||
|
|||
版权所有 (C), 2018-2099, Radkil |
|||
|
|||
****************************************************************************** |
|||
文 件 名 : drv_interface.c |
|||
版 本 号 : 初稿 |
|||
作 者 : radkil |
|||
生成日期 : 2026年5月27日 |
|||
最近修改 : |
|||
功能描述 : 对外接口层 |
|||
|
|||
修改历史 : |
|||
1.日 期 : 2026年5月27日 |
|||
作 者 : radkil |
|||
修改内容 : 创建文件 |
|||
|
|||
******************************************************************************/ |
|||
#include "bsp_config.h" |
|||
#include "main.h" |
|||
#include "bsp_uart.h" |
|||
#include "bsp_CAN.h" |
|||
|
|||
/*----------------------------------------------*
|
|||
* 外部变量说明 * |
|||
*----------------------------------------------*/ |
|||
|
|||
/*----------------------------------------------*
|
|||
* 外部函数原型说明 * |
|||
*----------------------------------------------*/ |
|||
|
|||
/*----------------------------------------------*
|
|||
* 内部函数原型说明 * |
|||
*----------------------------------------------*/ |
|||
|
|||
/*----------------------------------------------*
|
|||
* 全局变量 * |
|||
*----------------------------------------------*/ |
|||
TComCtrl *g_ptRS485_1; |
|||
TComCtrl *g_ptRS485_2; |
|||
TComCtrl *g_ptRS485_3; |
|||
TComCtrl *g_ptRS485_4; |
|||
TComCtrl *g_ptLTE_7S0; |
|||
TComCtrl *g_ptE28_SBUS; |
|||
TComCtrl *g_ptInterCall; |
|||
|
|||
TComCtrl *g_ptFDCAN1; |
|||
TComCtrl *g_ptFDCAN2; |
|||
/*----------------------------------------------*
|
|||
* 模块级变量 * |
|||
*----------------------------------------------*/ |
|||
|
|||
/*----------------------------------------------*
|
|||
* 常量定义 * |
|||
*----------------------------------------------*/ |
|||
|
|||
/*----------------------------------------------*
|
|||
* 宏定义 * |
|||
*----------------------------------------------*/ |
|||
|
|||
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; |
|||
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; |
|||
} |
|||
|
|||
int LTE_7S0_Send(char *_pBuffer, uint32_t _iSize) |
|||
{ |
|||
TUartUserData *ptUartUserData = (TUartUserData *)g_ptLTE_7S0->m_pUserData; |
|||
int iRet = HAL_UART_Transmit(ptUartUserData->m_uart, (uint8_t *)_pBuffer, _iSize, 100); |
|||
return iRet; |
|||
} |
|||
|
|||
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; |
|||
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; |
|||
} |
|||
|
|||
int InterCall_Send(char *_pBuffer, uint32_t _iSize) |
|||
{ |
|||
TUartUserData *ptUartUserData = (TUartUserData *)g_ptInterCall->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_ptE28_SBUS->m_pUserData; |
|||
int iRet = HAL_UART_Transmit(ptUartUserData->m_uart, (uint8_t *)_pBuffer, _iSize, 100); |
|||
return iRet; |
|||
} |
|||
|
|||
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; |
|||
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; |
|||
} |
|||
|
|||
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; |
|||
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; |
|||
} |
|||
|
|||
int FDCAN1_Send(char *_pBuffer, uint32_t _iSize) |
|||
{ |
|||
return CAN_TX_FIFOQ(g_ptFDCAN1, _pBuffer[0], &_pBuffer[4], _iSize); |
|||
} |
|||
|
|||
int FDCAN2_Send(char *_pBuffer, uint32_t _iSize) |
|||
{ |
|||
return CAN_TX_FIFOQ(g_ptFDCAN2, _pBuffer[0], &_pBuffer[4], _iSize); |
|||
} |
|||
|
|||
#ifndef CONFIG_UART_IT_IDLEDMA |
|||
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) |
|||
{ |
|||
if (huart->Instance == USART1) |
|||
{ |
|||
UART_RX_IRQHandler(g_ptRS485_1); |
|||
} |
|||
else if (huart->Instance == USART2) |
|||
{ |
|||
UART_RX_IRQHandler(g_ptLTE_7S0); |
|||
} |
|||
else if (huart->Instance == USART3) |
|||
{ |
|||
UART_RX_IRQHandler(g_ptRS485_2); |
|||
} |
|||
else if (huart->Instance == UART4) |
|||
{ |
|||
UART_RX_IRQHandler(g_ptInterCall); |
|||
} |
|||
else if (huart->Instance == UART5) |
|||
{ |
|||
UART_RX_IRQHandler(g_ptE28_SBUS); |
|||
} |
|||
else if (huart->Instance == USART6) |
|||
{ |
|||
UART_RX_IRQHandler(g_ptRS485_3); |
|||
} |
|||
else if (huart->Instance == UART7) |
|||
{ |
|||
UART_RX_IRQHandler(g_ptRS485_4); |
|||
} |
|||
} |
|||
#endif |
|||
|
|||
void HAL_FDCAN_ErrorStatusCallback(FDCAN_HandleTypeDef *hfdcan, uint32_t ErrorStatusITs) |
|||
{ |
|||
if (hfdcan->Instance == FDCAN1) |
|||
{ |
|||
MX_FDCAN1_Init(); |
|||
} |
|||
else if (hfdcan->Instance == FDCAN2) |
|||
{ |
|||
MX_FDCAN2_Init(); |
|||
} |
|||
} |
|||
|
|||
void HAL_FDCAN_RxFifo0Callback(FDCAN_HandleTypeDef *hfdcan, uint32_t RxFifo0ITs) |
|||
{ |
|||
if (hfdcan->Instance == FDCAN1) |
|||
{ |
|||
CAN_RX_IRQHandler(g_ptFDCAN1); |
|||
} |
|||
else if (hfdcan->Instance == FDCAN2) |
|||
{ |
|||
CAN_RX_IRQHandler(g_ptFDCAN2); |
|||
} |
|||
} |
|||
|
|||
|
|||
Loading…
Reference in new issue