221 lines
4.6 KiB
C
221 lines
4.6 KiB
C
|
#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
|
|||
|
}
|
|||
|
|
|||
|
|