123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- #include <stdio.h>
- #include "freertos/FreeRTOS.h"
- #include "freertos/task.h"
- #include "driver/gpio.h"
- #define LED_RED GPIO_NUM_2
- #define LED_GREEN GPIO_NUM_4
- QueueHandle_t xQueue;
- void getQueueValue(void *pvParameter)
- {
- int32_t value_to_recieve;
- BaseType_t xStatusRecieve;
- //const TickType_t xTicksToWait = pdMS_TO_TICKS( 50 );
- gpio_num_t red_led = LED_RED ;
- //uint8_t led_value = 0;
- //gpio_reset_pin(red_led);
- gpio_set_direction(red_led, GPIO_MODE_OUTPUT);
- for(;;){
- //led_value = 1;
- gpio_set_level(red_led, 1);
- xStatusRecieve = xQueueReceive(xQueue, &value_to_recieve, 0);
- //printf("%d get value task \n",uxTaskGetStackHighWaterMark(NULL));
- //if(xStatusRecieve != pdPASS){
- // printf("cant get value \n");
- //}
- //else{
- //printf("value recieved is %d \n",value_to_recieve);
- //}
- //led_value = 0;
- gpio_set_level(red_led, 0);
- vTaskDelay(pdMS_TO_TICKS(200));
- }
- }
- void putQueueValue(void *pvParameters) {
- int32_t value_to_send = (int32_t ) pvParameters;
- //value_to_send = (int32_t) pvParameters ;
- BaseType_t xStatusSend;
- //TickType_t xTicksToWait = 1000;
- gpio_num_t green_led = LED_GREEN ;
- //uint8_t led_value = 0;
- //gpio_reset_pin(green_led);
- gpio_set_direction(green_led, GPIO_MODE_OUTPUT);
- for(;;){
- gpio_set_level(green_led, 1);
- xStatusSend = xQueueSendToBack(xQueue,&value_to_send,0);
- gpio_set_level(green_led, 0);
- vTaskDelay(pdMS_TO_TICKS(1000));
- }
- }
- extern "C" void app_main()
- //void app_main(void) //requires setup- and loop function
- {
-
- xQueue = xQueueCreate(1,sizeof(int32_t));
- if (xQueue != NULL){
- xTaskCreate(putQueueValue,"Sender",2048,(void*)100 , 1,NULL);
- xTaskCreate(getQueueValue,"Reciever",2048,NULL,1,NULL);
-
-
- }
- else{
- printf("not enough space");
- }
- }
|