gateway_mcu/CH32V303-FreeRTOS/App/application/Src/busIdleDetection.c

221 lines
4.6 KiB
C
Raw Normal View History

2025-02-28 08:57:09 +00:00
#include "busIdleDetection.h"
#ifdef RS485BUSIDLE1
#include "uart_dev.h"
/* ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ķ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
static TimerHandle_t J1_485_Swtmr = NULL;
static TimerHandle_t J2_485_Swtmr = NULL;
static TimerHandle_t J3_485_Swtmr = NULL;
static TimerHandle_t J4_485_Swtmr = NULL;
static TimerHandle_t J5_0_485_Swtmr = NULL;
static void J1_485_tmrCallback(void* parameter);
static void J2_485_tmrCallback(void* parameter);
static void J3_485_tmrCallback(void* parameter);
static void J4_485_tmrCallback(void* parameter);
static void J5_0_485_tmrCallback(void* parameter);
#define softwareDelay (30 / (1000 / configTICK_RATE_HZ))
/*
* @brief <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
* @param
* @retval
*
*/
void softwareTimeInit(void)
{
J1_485_Swtmr = xTimerCreate((const char*)"J1Timer",
softwareDelay, //<2F><>ʱ
(UBaseType_t )pdFALSE, //<2F><><EFBFBD><EFBFBD>ģʽ
(void *)1, //Ϊÿ<CEAA><C3BF><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΨһID
(TimerCallbackFunction_t)J1_485_tmrCallback); //<2F>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
J2_485_Swtmr = xTimerCreate((const char*)"J2Timer",
softwareDelay,
(UBaseType_t )pdFALSE,
(void *)2,
(TimerCallbackFunction_t)J2_485_tmrCallback);
J3_485_Swtmr = xTimerCreate((const char*)"J3Timer",
softwareDelay,
(UBaseType_t )pdFALSE,
(void *)3,
(TimerCallbackFunction_t)J3_485_tmrCallback);
J4_485_Swtmr = xTimerCreate((const char*)"J4Timer",
softwareDelay,
(UBaseType_t )pdFALSE,
(void *)4,
(TimerCallbackFunction_t)J4_485_tmrCallback);
J5_0_485_Swtmr = xTimerCreate((const char*)"J5_0Timer",
softwareDelay,
(UBaseType_t )pdFALSE,
(void *)5,
(TimerCallbackFunction_t)J5_0_485_tmrCallback);
}
void J1_485_tmrCallback(void* parameter)
{
setBUSIDLEFlag(g_J1_uart6_handle, 0);
}
void J2_485_tmrCallback(void* parameter)
{
setBUSIDLEFlag(g_J2_uart7_handle, 0);
}
void J3_485_tmrCallback(void* parameter)
{
setBUSIDLEFlag(g_J3_usart2_handle, 0);
}
void J4_485_tmrCallback(void* parameter)
{
setBUSIDLEFlag(g_J4_uart8_handle, 0);
}
void J5_0_485_tmrCallback(void* parameter)
{
setBUSIDLEFlag(g_J5_0_usart3_handle, 0);
}
/*
* @brief J1_485<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param
* @retval
*
*/
void J1_485_IN_IDLE(void)
{
xTimerStartFromISR(J1_485_Swtmr, 0);
}
/*
* @brief J2_485<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param
* @retval
*
*/
void J2_485_IN_IDLE(void)
{
xTimerStartFromISR(J2_485_Swtmr, 0);
}
/*
* @brief J3_485<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param
* @retval
*
*/
void J3_485_IN_IDLE(void)
{
xTimerStartFromISR(J3_485_Swtmr, 0);
}
/*
* @brief J4_485<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param
* @retval
*
*/
void J4_485_IN_IDLE(void)
{
xTimerStartFromISR(J4_485_Swtmr, 0);
}
/*
* @brief J5_0_485<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param
* @retval
*
*/
void J5_0_485_IN_IDLE(void)
{
xTimerStartFromISR(J5_0_485_Swtmr, 0);
}
/*
* @brief J1_485<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϺ󣬵<EFBFBD>һ<EFBFBD>ν<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param
* @retval
*
*/
void J1_485_IN_RXNE(void)
{
xTimerStopFromISR(J1_485_Swtmr, 0);
}
/*
* @brief J2_485<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϺ󣬵<EFBFBD>һ<EFBFBD>ν<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param
* @retval
*
*/
void J2_485_IN_RXNE(void)
{
xTimerStopFromISR(J2_485_Swtmr, 0);
}
/*
* @brief J3_485<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϺ󣬵<EFBFBD>һ<EFBFBD>ν<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param
* @retval
*
*/
void J3_485_IN_RXNE(void)
{
xTimerStopFromISR(J3_485_Swtmr, 0);
}
/*
* @brief J4_485<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϺ󣬵<EFBFBD>һ<EFBFBD>ν<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param
* @retval
*
*/
void J4_485_IN_RXNE(void)
{
xTimerStopFromISR(J4_485_Swtmr, 0);
}
/*
* @brief J5_0_485<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϺ󣬵<EFBFBD>һ<EFBFBD>ν<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param
* @retval
*
*/
void J5_0_485_IN_RXNE(void)
{
xTimerStopFromISR(J5_0_485_Swtmr, 0);
}
#endif
/*
* @brief <EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param
* @retval 0 <EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>
1 <EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>
0xFF <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
uint8_t getRs485State(device_handle device)
{
#ifdef RS485BUSIDLE1
#ifdef UARTINTERRUPTSEND
return (getUartSendState(device) || getBUSIDLEFlag(device));
#endif
#endif
}
uint8_t getUartState(device_handle device)
{
#ifdef UARTINTERRUPTSEND
return getUartSendState(device);
#endif
}