11.12_1:解决了接收信号量的bug,优化了网关控制节点执行器的延迟。
This commit is contained in:
@@ -11,29 +11,57 @@
|
||||
|
||||
/* <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һһ<D2BB><D2BB>Ӧ<EFBFBD><D3A6> */
|
||||
TaskHandle_t xStateLedTaskHdlr;
|
||||
TaskHandle_t xFanCtrlTaskHdlr;
|
||||
TaskHandle_t xDht11TaskHdlr;
|
||||
TaskHandle_t xRelayCtrlTaskHdlr;
|
||||
TaskHandle_t xLoRaToGateTskHdlr;
|
||||
TaskHandle_t xLoRaMsgRecTskHdlr;
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>о<EFBFBD><D0BE><EFBFBD> */
|
||||
QueueHandle_t xQueueTempHdlr;
|
||||
QueueHandle_t xQueueHumiHdlr;
|
||||
QueueHandle_t xQueueUsart3ReHdlr;
|
||||
QueueHandle_t xQueueUsart3IrqHdlr;
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
SemaphoreHandle_t xSemLedOnHandler;
|
||||
SemaphoreHandle_t xSemLedOffHandler;
|
||||
SemaphoreHandle_t xSemFanOnHdlr;
|
||||
SemaphoreHandle_t xSemFanOffHdlr;
|
||||
|
||||
/* <20><>˸LED<45><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ָ<EFBFBD>룬<EFBFBD><EBA3AC><EFBFBD><EFBFBD>NULL<4C><4C> */
|
||||
void vStateLedTask(void *pvParameters)
|
||||
{
|
||||
while(1)
|
||||
{
|
||||
vPc13LedOn();
|
||||
vTaskDelay(1000);
|
||||
vPc13LedOff();
|
||||
vTaskDelay(1000);
|
||||
// vPc13LedOn();
|
||||
// vTaskDelay(1000);
|
||||
// vPc13LedOff();
|
||||
// vTaskDelay(1000);
|
||||
if (xSemaphoreTake(xSemLedOnHandler, pdMS_TO_TICKS(10)) == pdTRUE)
|
||||
{
|
||||
vPc13LedOn();
|
||||
xSemaphoreGive(xSemLedOnHandler);
|
||||
} else if (xSemaphoreTake(xSemLedOffHandler, pdMS_TO_TICKS(10)) == pdTRUE)
|
||||
{
|
||||
/* code */
|
||||
vPc13LedOff();
|
||||
xSemaphoreGive(xSemLedOffHandler);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void vFanControlTask(void *pvParameters)
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
/* code */
|
||||
if (xSemaphoreTake(xSemFanOnHdlr, pdMS_TO_TICKS(10)) == pdTRUE)
|
||||
{
|
||||
vFanOn();
|
||||
} else if (xSemaphoreTake(xSemFanOffHdlr, pdMS_TO_TICKS(10)) == pdTRUE)
|
||||
{
|
||||
/* code */
|
||||
vFanOff();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,8 +100,8 @@ void vLoRaToGatePktTask(void *pvParameters)
|
||||
{
|
||||
uint8_t ucRecTempData = 0;
|
||||
uint8_t ucRecHumiData = 0;
|
||||
uint8_t testData = 0xAC;
|
||||
uint8_t ledOff = 0xAD;
|
||||
uint8_t testData = 0xAC;
|
||||
uint8_t ledOff = 0xAD;
|
||||
/* <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ճɹ<D5B3> */
|
||||
BaseType_t xQueueTempRetval, xQueueHumiRetval;
|
||||
while (1)
|
||||
@@ -93,22 +121,17 @@ void vLoRaToGatePktTask(void *pvParameters)
|
||||
{
|
||||
/* code */
|
||||
vUsart3SendArray(&ucRecTempData, 1);
|
||||
vUsart3SendArray(&ucRecHumiData, 1);
|
||||
|
||||
vUsart3SendArray(&ucRecHumiData, 1);
|
||||
}
|
||||
if (xSemaphoreTake(xSemLedOnHandler, pdMS_TO_TICKS(10)) == pdTRUE)
|
||||
{
|
||||
/* code */
|
||||
vUsart3SendArray(&testData, 1);
|
||||
vPc13LedOn();
|
||||
}
|
||||
else if (xSemaphoreTake(xSemLedOffHandler, pdMS_TO_TICKS(10)) == pdTRUE)
|
||||
} else if (xSemaphoreTake(xSemLedOffHandler, pdMS_TO_TICKS(10)) == pdTRUE)
|
||||
{
|
||||
/* code */
|
||||
vUsart3SendArray(&ledOff, 1);
|
||||
vPc13LedOff();
|
||||
}
|
||||
|
||||
vTaskDelay(1000);
|
||||
}
|
||||
}
|
||||
@@ -119,9 +142,9 @@ void vLoRaMsgRecTask(void *pvParameters)
|
||||
uint8_t ucRetvalQueueNodeId = 0, ucRetvalQueueExeId = 0, ucRetvalQueueExeSta = 0;
|
||||
while (1)
|
||||
{
|
||||
ucRetvalQueueNodeId = xQueueReceive(xQueueUsart3ReHdlr, &ucDataRecNodeId, portMAX_DELAY);
|
||||
ucRetvalQueueExeId = xQueueReceive(xQueueUsart3ReHdlr, &ucDataRecExeId, portMAX_DELAY);
|
||||
ucRetvalQueueExeSta = xQueueReceive(xQueueUsart3ReHdlr, &ucDataRecExeSta, portMAX_DELAY);
|
||||
ucRetvalQueueNodeId = xQueueReceive(xQueueUsart3IrqHdlr, &ucDataRecNodeId, portMAX_DELAY);
|
||||
ucRetvalQueueExeId = xQueueReceive(xQueueUsart3IrqHdlr, &ucDataRecExeId, portMAX_DELAY);
|
||||
ucRetvalQueueExeSta = xQueueReceive(xQueueUsart3IrqHdlr, &ucDataRecExeSta, portMAX_DELAY);
|
||||
while (ucRetvalQueueNodeId == pdTRUE && ucRetvalQueueExeId == pdTRUE && ucRetvalQueueExeSta == pdTRUE)
|
||||
{
|
||||
/* code */
|
||||
@@ -133,6 +156,14 @@ void vLoRaMsgRecTask(void *pvParameters)
|
||||
{
|
||||
/* code */
|
||||
xSemaphoreGive(xSemLedOffHandler);
|
||||
} else if (xLoRaMsgProcess(ucDataRecNodeId, ucDataRecExeId, ucDataRecExeSta) == statusFanOn)
|
||||
{
|
||||
/* code */
|
||||
xSemaphoreGive(xSemFanOnHdlr);
|
||||
} else if (xLoRaMsgProcess(ucDataRecNodeId, ucDataRecExeId, ucDataRecExeSta) == statusFanOn)
|
||||
{
|
||||
/* code */
|
||||
xSemaphoreGive(xSemFanOffHdlr);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -141,16 +172,21 @@ void vLoRaMsgRecTask(void *pvParameters)
|
||||
|
||||
void vCreateTasksList(void)
|
||||
{
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD>ٽ<EFBFBD><D9BD><EFBFBD> */
|
||||
// taskENTER_CRITICAL();
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F1A3ACB2><EFBFBD><EFBFBD>ֱ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ơ<EFBFBD><C6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>ջ<EFBFBD><D5BB>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><D8B2><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
// xTaskCreate(
|
||||
// (TaskFunction_t ) vStateLedTask,
|
||||
// (char * ) "TaskName_StateLed",
|
||||
// (configSTACK_DEPTH_TYPE) 512,
|
||||
// (void * ) NULL,
|
||||
// (UBaseType_t ) 2,
|
||||
// (TaskHandle_t * ) &xStateLedTaskHdlr);
|
||||
xTaskCreate(
|
||||
(TaskFunction_t ) vStateLedTask,
|
||||
(char * ) "TaskName_StateLed",
|
||||
(configSTACK_DEPTH_TYPE) 512,
|
||||
(void * ) NULL,
|
||||
(UBaseType_t ) 2,
|
||||
(TaskHandle_t * ) &xStateLedTaskHdlr);
|
||||
xTaskCreate(
|
||||
(TaskFunction_t ) vFanControlTask,
|
||||
(char * ) "TaskName_FanControl",
|
||||
(configSTACK_DEPTH_TYPE) 256,
|
||||
(void * ) NULL,
|
||||
(UBaseType_t ) 2,
|
||||
(TaskHandle_t * ) &xFanCtrlTaskHdlr);
|
||||
xTaskCreate(
|
||||
(TaskFunction_t ) vDht11Task,
|
||||
(char * ) "TaskName_DHT11",
|
||||
@@ -172,8 +208,6 @@ void vCreateTasksList(void)
|
||||
(void * ) NULL,
|
||||
(UBaseType_t ) 2,
|
||||
(TaskHandle_t * ) &xLoRaMsgRecTskHdlr);
|
||||
/* <20>˳<EFBFBD><CBB3>ٽ<EFBFBD><D9BD><EFBFBD> */
|
||||
// taskEXIT_CRITICAL();
|
||||
}
|
||||
|
||||
void vCreateQueuesList(void)
|
||||
@@ -181,16 +215,16 @@ void vCreateQueuesList(void)
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>Ƕ<EFBFBD><C7B6>еij<D0B5><C4B3><EFBFBD>,Ҳ<><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܴ<EFBFBD><DCB4>Ŷ<EFBFBD><C5B6>ٸ<EFBFBD><D9B8><EFBFBD><EFBFBD>ݣ<EFBFBD>
|
||||
* <20>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD>ݵĴ<DDB5>С<EFBFBD><D0A1><EFBFBD><EFBFBD>λΪ<CEBB>ֽڣ<D6BD><DAA3><EFBFBD>stm32<33><32>uint8_tָ<74><D6B8><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>4<EFBFBD>ֽڡ<D6BD>
|
||||
* ԭ<><D4AD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>Ƕ<EFBFBD><C7B6>о<EFBFBD><D0BE><EFBFBD><EFBFBD>Ľṹ<C4BD>壬<EFBFBD><E5A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>涨<EFBFBD><E6B6A8>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD><D5B6>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> */
|
||||
xQueueTempHdlr = xQueueCreate(
|
||||
(UBaseType_t) 5,
|
||||
(UBaseType_t) sizeof(uint8_t));
|
||||
xQueueHumiHdlr = xQueueCreate(
|
||||
(UBaseType_t) 5,
|
||||
(UBaseType_t) sizeof(uint8_t));
|
||||
xQueueUsart3ReHdlr = xQueueCreate(
|
||||
(UBaseType_t) 64,
|
||||
(UBaseType_t) sizeof(uint8_t *));
|
||||
if (xQueueTempHdlr == NULL || xQueueHumiHdlr == NULL || xQueueUsart3ReHdlr == NULL)
|
||||
xQueueTempHdlr = xQueueCreate(
|
||||
(UBaseType_t) 5,
|
||||
(UBaseType_t) sizeof(uint8_t));
|
||||
xQueueHumiHdlr = xQueueCreate(
|
||||
(UBaseType_t) 5,
|
||||
(UBaseType_t) sizeof(uint8_t));
|
||||
xQueueUsart3IrqHdlr = xQueueCreate(
|
||||
(UBaseType_t) 64,
|
||||
(UBaseType_t) sizeof(uint8_t *));
|
||||
if (xQueueTempHdlr == NULL || xQueueHumiHdlr == NULL || xQueueUsart3IrqHdlr == NULL)
|
||||
{
|
||||
/* code */
|
||||
vUsart3Printf("Queue Init Failed.\r\n");
|
||||
@@ -199,8 +233,10 @@ void vCreateQueuesList(void)
|
||||
|
||||
void vCreateSemaphoreList(void)
|
||||
{
|
||||
xSemLedOnHandler = xSemaphoreCreateBinary();
|
||||
xSemLedOnHandler = xSemaphoreCreateBinary();
|
||||
xSemLedOffHandler = xSemaphoreCreateBinary();
|
||||
xSemFanOnHdlr = xSemaphoreCreateBinary();
|
||||
xSemFanOffHdlr = xSemaphoreCreateBinary();
|
||||
}
|
||||
|
||||
int main(void)
|
||||
|
||||
Reference in New Issue
Block a user