187 lines
5.1 KiB
C
187 lines
5.1 KiB
C
|
|
|||
|
#include "slaveBusIdleDetection.h"
|
|||
|
#include "semphr.h"
|
|||
|
|
|||
|
|
|||
|
static TimerHandle_t J1_485_Swtmr = NULL;
|
|||
|
static TimerHandle_t J3_485_Swtmr = NULL;
|
|||
|
static TimerHandle_t J5_485_Swtmr = NULL;
|
|||
|
static TimerHandle_t J7_485_Swtmr = NULL;
|
|||
|
static TimerHandle_t J8_485_Swtmr = NULL;
|
|||
|
static TimerHandle_t J9_485_Swtmr = NULL;
|
|||
|
|
|||
|
static void J1_485_tmrCallback(void* parameter);
|
|||
|
static void J3_485_tmrCallback(void* parameter);
|
|||
|
static void J5_485_tmrCallback(void* parameter);
|
|||
|
static void J7_485_tmrCallback(void* parameter);
|
|||
|
static void J8_485_tmrCallback(void* parameter);
|
|||
|
static void J9_485_tmrCallback(void* parameter);
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ź<EFBFBD><C5BA><EFBFBD>
|
|||
|
SemaphoreHandle_t J1_IDLESemaphore = NULL;
|
|||
|
SemaphoreHandle_t J3_IDLESemaphore = NULL;
|
|||
|
SemaphoreHandle_t J5_IDLESemaphore = NULL;
|
|||
|
SemaphoreHandle_t J7_IDLESemaphore = NULL;
|
|||
|
SemaphoreHandle_t J8_IDLESemaphore = NULL;
|
|||
|
SemaphoreHandle_t J9_IDLESemaphore = NULL;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1>Ϊ30mS */
|
|||
|
#define softwareDelay (30 / (1000 / configTICK_RATE_HZ))
|
|||
|
|
|||
|
/*
|
|||
|
* @brief <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD><EFBFBD>м<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*
|
|||
|
*/
|
|||
|
void slaveIdleInit(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>
|
|||
|
|
|||
|
J3_485_Swtmr = xTimerCreate((const char*)"J3Timer",
|
|||
|
softwareDelay,
|
|||
|
(UBaseType_t )pdFALSE,
|
|||
|
(void *)2,
|
|||
|
(TimerCallbackFunction_t)J3_485_tmrCallback);
|
|||
|
|
|||
|
J5_485_Swtmr = xTimerCreate((const char*)"J5Timer",
|
|||
|
softwareDelay,
|
|||
|
(UBaseType_t )pdFALSE,
|
|||
|
(void *)2,
|
|||
|
(TimerCallbackFunction_t)J5_485_tmrCallback);
|
|||
|
|
|||
|
J7_485_Swtmr = xTimerCreate((const char*)"J7Timer",
|
|||
|
softwareDelay,
|
|||
|
(UBaseType_t )pdFALSE,
|
|||
|
(void *)2,
|
|||
|
(TimerCallbackFunction_t)J7_485_tmrCallback);
|
|||
|
|
|||
|
J8_485_Swtmr = xTimerCreate((const char*)"J8Timer",
|
|||
|
softwareDelay,
|
|||
|
(UBaseType_t )pdFALSE,
|
|||
|
(void *)2,
|
|||
|
(TimerCallbackFunction_t)J8_485_tmrCallback);
|
|||
|
|
|||
|
J9_485_Swtmr = xTimerCreate((const char*)"J9Timer",
|
|||
|
softwareDelay,
|
|||
|
(UBaseType_t )pdFALSE,
|
|||
|
(void *)2,
|
|||
|
(TimerCallbackFunction_t)J9_485_tmrCallback);
|
|||
|
|
|||
|
J1_IDLESemaphore = xSemaphoreCreateBinary();
|
|||
|
xSemaphoreGive(J1_IDLESemaphore);
|
|||
|
J3_IDLESemaphore = xSemaphoreCreateBinary();
|
|||
|
xSemaphoreGive(J3_IDLESemaphore);
|
|||
|
J5_IDLESemaphore = xSemaphoreCreateBinary();
|
|||
|
xSemaphoreGive(J5_IDLESemaphore);
|
|||
|
J7_IDLESemaphore = xSemaphoreCreateBinary();
|
|||
|
xSemaphoreGive(J7_IDLESemaphore);
|
|||
|
J8_IDLESemaphore = xSemaphoreCreateBinary();
|
|||
|
xSemaphoreGive(J8_IDLESemaphore);
|
|||
|
J9_IDLESemaphore = xSemaphoreCreateBinary();
|
|||
|
xSemaphoreGive(J9_IDLESemaphore);
|
|||
|
}
|
|||
|
|
|||
|
void J1_485_tmrCallback(void* parameter)
|
|||
|
{
|
|||
|
xSemaphoreGiveFromISR(J1_IDLESemaphore, 0);
|
|||
|
}
|
|||
|
void J3_485_tmrCallback(void* parameter)
|
|||
|
{
|
|||
|
xSemaphoreGiveFromISR(J3_IDLESemaphore, 0);
|
|||
|
}
|
|||
|
void J5_485_tmrCallback(void* parameter)
|
|||
|
{
|
|||
|
xSemaphoreGiveFromISR(J5_IDLESemaphore, 0);
|
|||
|
}
|
|||
|
void J7_485_tmrCallback(void* parameter)
|
|||
|
{
|
|||
|
xSemaphoreGiveFromISR(J7_IDLESemaphore, 0);
|
|||
|
}
|
|||
|
void J8_485_tmrCallback(void* parameter)
|
|||
|
{
|
|||
|
xSemaphoreGiveFromISR(J8_IDLESemaphore, 0);
|
|||
|
}
|
|||
|
void J9_485_tmrCallback(void* parameter)
|
|||
|
{
|
|||
|
xSemaphoreGiveFromISR(J9_IDLESemaphore, 0);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/*
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*
|
|||
|
*/
|
|||
|
void J1_485_IN_IDLE(void)
|
|||
|
{
|
|||
|
xTimerStartFromISR(J1_485_Swtmr, 0);
|
|||
|
}
|
|||
|
void J3_485_IN_IDLE(void)
|
|||
|
{
|
|||
|
xTimerStartFromISR(J3_485_Swtmr, 0);
|
|||
|
}
|
|||
|
void J5_485_IN_IDLE(void)
|
|||
|
{
|
|||
|
xTimerStartFromISR(J5_485_Swtmr, 0);
|
|||
|
}
|
|||
|
void J7_485_IN_IDLE(void)
|
|||
|
{
|
|||
|
xTimerStartFromISR(J7_485_Swtmr, 0);
|
|||
|
}
|
|||
|
void J8_485_IN_IDLE(void)
|
|||
|
{
|
|||
|
xTimerStartFromISR(J8_485_Swtmr, 0);
|
|||
|
}
|
|||
|
void J9_485_IN_IDLE(void)
|
|||
|
{
|
|||
|
xTimerStartFromISR(J9_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 J1_485_IN_RXNE(void)
|
|||
|
{
|
|||
|
xTimerStopFromISR(J1_485_Swtmr, 0);
|
|||
|
xSemaphoreTakeFromISR(J1_IDLESemaphore, 0);
|
|||
|
}
|
|||
|
void J3_485_IN_RXNE(void)
|
|||
|
{
|
|||
|
xTimerStopFromISR(J3_485_Swtmr, 0);
|
|||
|
xSemaphoreTakeFromISR(J3_IDLESemaphore, 0);
|
|||
|
}
|
|||
|
void J5_485_IN_RXNE(void)
|
|||
|
{
|
|||
|
xTimerStopFromISR(J5_485_Swtmr, 0);
|
|||
|
xSemaphoreTakeFromISR(J5_IDLESemaphore, 0);
|
|||
|
}
|
|||
|
void J7_485_IN_RXNE(void)
|
|||
|
{
|
|||
|
xTimerStopFromISR(J7_485_Swtmr, 0);
|
|||
|
xSemaphoreTakeFromISR(J7_IDLESemaphore, 0);
|
|||
|
}
|
|||
|
void J8_485_IN_RXNE(void)
|
|||
|
{
|
|||
|
xTimerStopFromISR(J8_485_Swtmr, 0);
|
|||
|
xSemaphoreTakeFromISR(J8_IDLESemaphore, 0);
|
|||
|
}
|
|||
|
void J9_485_IN_RXNE(void)
|
|||
|
{
|
|||
|
xTimerStopFromISR(J9_485_Swtmr, 0);
|
|||
|
xSemaphoreTakeFromISR(J9_IDLESemaphore, 0);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|