@@ -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> */
/* <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 xStateLedTaskHdlr ;
TaskHandle_t xFanCtrlTaskHdlr ;
TaskHandle_t xDht11TaskHdlr ;
TaskHandle_t xDht11TaskHdlr ;
TaskHandle_t xRelayCtrlTaskHdlr ;
TaskHandle_t xLoRaToGateTskHdlr ;
TaskHandle_t xLoRaToGateTskHdlr ;
TaskHandle_t xLoRaMsgRecTskHdlr ;
TaskHandle_t xLoRaMsgRecTskHdlr ;
/* <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> о <EFBFBD> <D0BE> <EFBFBD> */
/* <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> о <EFBFBD> <D0BE> <EFBFBD> */
QueueHandle_t xQueueTempHdlr ;
QueueHandle_t xQueueTempHdlr ;
QueueHandle_t xQueueHumiHdlr ;
QueueHandle_t xQueueHumiHdlr ;
QueueHandle_t xQueueUsart3Re Hdlr ;
QueueHandle_t xQueueUsart3Irq Hdlr ;
/* <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ<EFBFBD> ź<EFBFBD> <C5BA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> */
/* <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ<EFBFBD> ź<EFBFBD> <C5BA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> */
SemaphoreHandle_t xSemLedOnHandler ;
SemaphoreHandle_t xSemLedOnHandler ;
SemaphoreHandle_t xSemLedOffHandler ;
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> */
/* <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 )
void vStateLedTask ( void * pvParameters )
{
{
while ( 1 )
while ( 1 )
{
{
vPc13LedOn( ) ;
// vPc13LedOn();
vTaskDelay( 1000 ) ;
// vTaskDelay(1000);
vPc13LedOff( ) ;
// vPc13LedOff();
vTaskDelay( 1000 ) ;
// 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 ucRecTempData = 0 ;
uint8_t ucRecHumiData = 0 ;
uint8_t ucRecHumiData = 0 ;
uint8_t testData = 0xAC ;
uint8_t testData = 0xAC ;
uint8_t ledOff = 0xAD ;
uint8_t ledOff = 0xAD ;
/* <20> <> <EFBFBD> <EFBFBD> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ<EFBFBD> ж<EFBFBD> <D0B6> Ƿ<EFBFBD> <C7B7> <EFBFBD> <EFBFBD> ճɹ<D5B3> */
/* <20> <> <EFBFBD> <EFBFBD> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ<EFBFBD> ж<EFBFBD> <D0B6> Ƿ<EFBFBD> <C7B7> <EFBFBD> <EFBFBD> ճɹ<D5B3> */
BaseType_t xQueueTempRetval , xQueueHumiRetval ;
BaseType_t xQueueTempRetval , xQueueHumiRetval ;
while ( 1 )
while ( 1 )
@@ -94,21 +122,16 @@ void vLoRaToGatePktTask(void *pvParameters)
/* code */
/* code */
vUsart3SendArray ( & ucRecTempData , 1 ) ;
vUsart3SendArray ( & ucRecTempData , 1 ) ;
vUsart3SendArray ( & ucRecHumiData , 1 ) ;
vUsart3SendArray ( & ucRecHumiData , 1 ) ;
}
}
if ( xSemaphoreTake ( xSemLedOnHandler , pdMS_TO_TICKS ( 10 ) ) = = pdTRUE )
if ( xSemaphoreTake ( xSemLedOnHandler , pdMS_TO_TICKS ( 10 ) ) = = pdTRUE )
{
{
/* code */
/* code */
vUsart3SendArray ( & testData , 1 ) ;
vUsart3SendArray ( & testData , 1 ) ;
vPc13LedOn ( ) ;
} else if ( xSemaphoreTake ( xSemLedOffHandler , pdMS_TO_TICKS ( 10 ) ) = = pdTRUE )
}
else if ( xSemaphoreTake ( xSemLedOffHandler , pdMS_TO_TICKS ( 10 ) ) = = pdTRUE )
{
{
/* code */
/* code */
vUsart3SendArray ( & ledOff , 1 ) ;
vUsart3SendArray ( & ledOff , 1 ) ;
vPc13LedOff ( ) ;
}
}
vTaskDelay ( 1000 ) ;
vTaskDelay ( 1000 ) ;
}
}
}
}
@@ -119,9 +142,9 @@ void vLoRaMsgRecTask(void *pvParameters)
uint8_t ucRetvalQueueNodeId = 0 , ucRetvalQueueExeId = 0 , ucRetvalQueueExeSta = 0 ;
uint8_t ucRetvalQueueNodeId = 0 , ucRetvalQueueExeId = 0 , ucRetvalQueueExeSta = 0 ;
while ( 1 )
while ( 1 )
{
{
ucRetvalQueueNodeId = xQueueReceive ( xQueueUsart3Re Hdlr , & ucDataRecNodeId , portMAX_DELAY ) ;
ucRetvalQueueNodeId = xQueueReceive ( xQueueUsart3Irq Hdlr , & ucDataRecNodeId , portMAX_DELAY ) ;
ucRetvalQueueExeId = xQueueReceive ( xQueueUsart3Re Hdlr , & ucDataRecExeId , portMAX_DELAY ) ;
ucRetvalQueueExeId = xQueueReceive ( xQueueUsart3Irq Hdlr , & ucDataRecExeId , portMAX_DELAY ) ;
ucRetvalQueueExeSta = xQueueReceive ( xQueueUsart3Re Hdlr , & ucDataRecExeSta , portMAX_DELAY ) ;
ucRetvalQueueExeSta = xQueueReceive ( xQueueUsart3Irq Hdlr , & ucDataRecExeSta , portMAX_DELAY ) ;
while ( ucRetvalQueueNodeId = = pdTRUE & & ucRetvalQueueExeId = = pdTRUE & & ucRetvalQueueExeSta = = pdTRUE )
while ( ucRetvalQueueNodeId = = pdTRUE & & ucRetvalQueueExeId = = pdTRUE & & ucRetvalQueueExeSta = = pdTRUE )
{
{
/* code */
/* code */
@@ -133,6 +156,14 @@ void vLoRaMsgRecTask(void *pvParameters)
{
{
/* code */
/* code */
xSemaphoreGive ( xSemLedOffHandler ) ;
xSemaphoreGive ( xSemLedOffHandler ) ;
} else if ( xLoRaMsgProcess ( ucDataRecNodeId , ucDataRecExeId , ucDataRecExeSta ) = = statusFanOn )
{
/* code */
xSemaphoreGive ( xSemFanOnHdlr ) ;
} else if ( xLoRaMsgProcess ( ucDataRecNodeId , ucDataRecExeId , ucDataRecExeSta ) = = statusFanOn )
{
/* code */
xSemaphoreGive ( xSemFanOffHdlr ) ;
}
}
break ;
break ;
}
}
@@ -141,16 +172,21 @@ void vLoRaMsgRecTask(void *pvParameters)
void vCreateTasksList ( void )
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> */
/* <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(
xTaskCreate(
// ( TaskFunction_t ) vStateLedTask,
( TaskFunction_t ) vStateLedTask,
// (char * ) " TaskName_StateLed",
( char * ) " TaskName_StateLed" ,
// ( configSTACK_DEPTH_TYPE) 512,
( configSTACK_DEPTH_TYPE) 512 ,
// (void * ) NULL,
( void * ) NULL ,
// ( UBaseType_t ) 2,
( UBaseType_t ) 2 ,
// ( TaskHandle_t * ) & xStateLedTaskHdlr);
( TaskHandle_t * ) & xStateLedTaskHdlr) ;
xTaskCreate (
( TaskFunction_t ) vFanControlTask ,
( char * ) " TaskName_FanControl " ,
( configSTACK_DEPTH_TYPE ) 256 ,
( void * ) NULL ,
( UBaseType_t ) 2 ,
( TaskHandle_t * ) & xFanCtrlTaskHdlr ) ;
xTaskCreate (
xTaskCreate (
( TaskFunction_t ) vDht11Task ,
( TaskFunction_t ) vDht11Task ,
( char * ) " TaskName_DHT11 " ,
( char * ) " TaskName_DHT11 " ,
@@ -172,8 +208,6 @@ void vCreateTasksList(void)
( void * ) NULL ,
( void * ) NULL ,
( UBaseType_t ) 2 ,
( UBaseType_t ) 2 ,
( TaskHandle_t * ) & xLoRaMsgRecTskHdlr ) ;
( TaskHandle_t * ) & xLoRaMsgRecTskHdlr ) ;
/* <20> ˳<EFBFBD> <CBB3> ٽ<EFBFBD> <D9BD> <EFBFBD> */
// taskEXIT_CRITICAL();
}
}
void vCreateQueuesList ( void )
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> <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>
* <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> */
* ԭ<> <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 (
xQueueTempHdlr = xQueueCreate (
( UBaseType_t ) 5 ,
( UBaseType_t ) 5 ,
( UBaseType_t ) sizeof ( uint8_t ) ) ;
( UBaseType_t ) sizeof ( uint8_t ) ) ;
xQueueHumiHdlr = xQueueCreate (
xQueueHumiHdlr = xQueueCreate (
( UBaseType_t ) 5 ,
( UBaseType_t ) 5 ,
( UBaseType_t ) sizeof ( uint8_t ) ) ;
( UBaseType_t ) sizeof ( uint8_t ) ) ;
xQueueUsart3Re Hdlr = xQueueCreate (
xQueueUsart3Irq Hdlr = xQueueCreate (
( UBaseType_t ) 64 ,
( UBaseType_t ) 64 ,
( UBaseType_t ) sizeof ( uint8_t * ) ) ;
( UBaseType_t ) sizeof ( uint8_t * ) ) ;
if ( xQueueTempHdlr = = NULL | | xQueueHumiHdlr = = NULL | | xQueueUsart3Re Hdlr = = NULL )
if ( xQueueTempHdlr = = NULL | | xQueueHumiHdlr = = NULL | | xQueueUsart3Irq Hdlr = = NULL )
{
{
/* code */
/* code */
vUsart3Printf ( " Queue Init Failed. \r \n " ) ;
vUsart3Printf ( " Queue Init Failed. \r \n " ) ;
@@ -199,8 +233,10 @@ void vCreateQueuesList(void)
void vCreateSemaphoreList ( void )
void vCreateSemaphoreList ( void )
{
{
xSemLedOnHandler = xSemaphoreCreateBinary ( ) ;
xSemLedOnHandler = xSemaphoreCreateBinary ( ) ;
xSemLedOffHandler = xSemaphoreCreateBinary ( ) ;
xSemLedOffHandler = xSemaphoreCreateBinary ( ) ;
xSemFanOnHdlr = xSemaphoreCreateBinary ( ) ;
xSemFanOffHdlr = xSemaphoreCreateBinary ( ) ;
}
}
int main ( void )
int main ( void )