gateway_mcu/CH32V303-FreeRTOS/App/application/Host/Src/hostBusIdleDetection.c

125 lines
3.5 KiB
C
Raw Permalink Normal View History

#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);
}