125 lines
3.5 KiB
C
125 lines
3.5 KiB
C
|
|
|||
|
#include "hostBusIdleDetection.h"
|
|||
|
|
|||
|
static TimerHandle_t J0_485_Swtmr = NULL;
|
|||
|
static TimerHandle_t J2_485_Swtmr = NULL;
|
|||
|
static TimerHandle_t J4_485_Swtmr = NULL;
|
|||
|
static TimerHandle_t J6_485_Swtmr = NULL;
|
|||
|
|
|||
|
static void J0_485_tmrCallback(void* parameter);
|
|||
|
static void J2_485_tmrCallback(void* parameter);
|
|||
|
static void J4_485_tmrCallback(void* parameter);
|
|||
|
static void J6_485_tmrCallback(void* parameter);
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ź<EFBFBD><C5BA><EFBFBD>
|
|||
|
SemaphoreHandle_t J0_IDLESemaphore = NULL;
|
|||
|
SemaphoreHandle_t J2_IDLESemaphore = NULL;
|
|||
|
SemaphoreHandle_t J4_IDLESemaphore = NULL;
|
|||
|
SemaphoreHandle_t J6_IDLESemaphore = NULL;
|
|||
|
|
|||
|
#define softwareDelay (30 / (1000 / configTICK_RATE_HZ))
|
|||
|
|
|||
|
void hostIdleInit(void)
|
|||
|
{
|
|||
|
J0_485_Swtmr = xTimerCreate((const char*)"J0Timer",
|
|||
|
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)J0_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);
|
|||
|
|
|||
|
J4_485_Swtmr = xTimerCreate((const char*)"J4Timer",
|
|||
|
softwareDelay,
|
|||
|
(UBaseType_t )pdFALSE,
|
|||
|
(void *)2,
|
|||
|
(TimerCallbackFunction_t)J4_485_tmrCallback);
|
|||
|
|
|||
|
J6_485_Swtmr = xTimerCreate((const char*)"J6Timer",
|
|||
|
softwareDelay,
|
|||
|
(UBaseType_t )pdFALSE,
|
|||
|
(void *)2,
|
|||
|
(TimerCallbackFunction_t)J6_485_tmrCallback);
|
|||
|
|
|||
|
J0_IDLESemaphore = xSemaphoreCreateBinary();
|
|||
|
xSemaphoreGive(J0_IDLESemaphore);
|
|||
|
J2_IDLESemaphore = xSemaphoreCreateBinary();
|
|||
|
xSemaphoreGive(J2_IDLESemaphore);
|
|||
|
J4_IDLESemaphore = xSemaphoreCreateBinary();
|
|||
|
xSemaphoreGive(J4_IDLESemaphore);
|
|||
|
J6_IDLESemaphore = xSemaphoreCreateBinary();
|
|||
|
xSemaphoreGive(J6_IDLESemaphore);
|
|||
|
}
|
|||
|
|
|||
|
void J0_485_tmrCallback(void* parameter)
|
|||
|
{
|
|||
|
xSemaphoreGiveFromISR(J0_IDLESemaphore, 0);
|
|||
|
}
|
|||
|
void J2_485_tmrCallback(void* parameter)
|
|||
|
{
|
|||
|
xSemaphoreGiveFromISR(J2_IDLESemaphore, 0);
|
|||
|
}
|
|||
|
void J4_485_tmrCallback(void* parameter)
|
|||
|
{
|
|||
|
xSemaphoreGiveFromISR(J4_IDLESemaphore, 0);
|
|||
|
}
|
|||
|
void J6_485_tmrCallback(void* parameter)
|
|||
|
{
|
|||
|
xSemaphoreGiveFromISR(J6_IDLESemaphore, 0);
|
|||
|
}
|
|||
|
|
|||
|
/*
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*
|
|||
|
*/
|
|||
|
void J0_485_IN_IDLE(void)
|
|||
|
{
|
|||
|
xTimerStartFromISR(J0_485_Swtmr, 0);
|
|||
|
}
|
|||
|
void J2_485_IN_IDLE(void)
|
|||
|
{
|
|||
|
xTimerStartFromISR(J2_485_Swtmr, 0);
|
|||
|
}
|
|||
|
void J4_485_IN_IDLE(void)
|
|||
|
{
|
|||
|
xTimerStartFromISR(J4_485_Swtmr, 0);
|
|||
|
}
|
|||
|
void J6_485_IN_IDLE(void)
|
|||
|
{
|
|||
|
xTimerStartFromISR(J6_485_Swtmr, 0);
|
|||
|
}
|
|||
|
|
|||
|
/*
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϺ<EFBFBD>һ<EFBFBD>ν<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*
|
|||
|
*/
|
|||
|
void J0_485_IN_RXNE(void)
|
|||
|
{
|
|||
|
xTimerStopFromISR(J0_485_Swtmr, 0);
|
|||
|
xSemaphoreTakeFromISR(J0_IDLESemaphore, 0);
|
|||
|
}
|
|||
|
void J2_485_IN_RXNE(void)
|
|||
|
{
|
|||
|
xTimerStopFromISR(J2_485_Swtmr, 0);
|
|||
|
xSemaphoreTakeFromISR(J2_IDLESemaphore, 0);
|
|||
|
}
|
|||
|
void J4_485_IN_RXNE(void)
|
|||
|
{
|
|||
|
xTimerStopFromISR(J4_485_Swtmr, 0);
|
|||
|
xSemaphoreTakeFromISR(J4_IDLESemaphore, 0);
|
|||
|
}
|
|||
|
void J6_485_IN_RXNE(void)
|
|||
|
{
|
|||
|
xTimerStopFromISR(J6_485_Swtmr, 0);
|
|||
|
xSemaphoreTakeFromISR(J6_IDLESemaphore, 0);
|
|||
|
}
|
|||
|
|