#include <string.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/event_groups.h"
#include "freertos/queue.h"
#include "esp_log.h"
//#define EVENTWAIT
#define EVENTGET
//#define QUEUE
#define
QUEUE_LENGTH
10
#define
QUEUE_SIZE
10
#define
DATA_SIZE
100
#define
WAIT_BIT
BIT1
static const char *TAG = "MAIN";
TaskHandle_t xTask1 = NULL, xTask2 = NULL;
QueueHandle_t xQueue;
EventGroupHandle_t xEvent;
void task1(void *pvParameter)
{
ESP_LOGI(pcTaskGetTaskName(0), "Start");
TickType_t
startTick = 0;
TickType_t
endTick = 0;
TickType_t
diffTick = 0;
uint32_t
counter = 0;
startTick =
xTaskGetTickCount();
for(uint32_t
i=0;i<100000;i++) {
counter++;
EventBits_t bits = xEventGroupWaitBits(xEvent,
WAIT_BIT,
pdFALSE,
pdFALSE,
0);
}
endTick =
xTaskGetTickCount();
diffTick =
endTick - startTick;
ESP_LOGI(pcTaskGetTaskName(0), "elapsed time[ms]:%d
counter:%d",diffTick*portTICK_RATE_MS, counter);
while(1) {
vTaskDelay(100);
}
}
void task2(void *pvParameter)
{
ESP_LOGI(pcTaskGetTaskName(0), "Start");
TickType_t
startTick = 0;
TickType_t
endTick = 0;
TickType_t
diffTick = 0;
uint32_t
counter = 0;
startTick =
xTaskGetTickCount();
for(uint32_t
i=0;i<100000;i++) {
counter++;
EventBits_t bits = xEventGroupGetBits(xEvent);
}
endTick =
xTaskGetTickCount();
diffTick =
endTick - startTick;
ESP_LOGI(pcTaskGetTaskName(0), "elapsed time[ms]:%d
counter:%d",diffTick*portTICK_RATE_MS, counter);
while(1) {
vTaskDelay(100);
}
}
void task11(void *pvParameter)
{
ESP_LOGI(pcTaskGetTaskName(0), "Start");
TickType_t
startTick = 0;
TickType_t
endTick = 0;
TickType_t
diffTick = 0;
uint32_t
counter = 0;
startTick =
xTaskGetTickCount();
char
rx_item[DATA_SIZE];
while (1) {
//Receive an item from no-split ring buffer
BaseType_t res = xQueueReceive(xQueue, rx_item, 0);
counter++;
if (counter == 100000) {
endTick = xTaskGetTickCount();
diffTick = endTick - startTick;
ESP_LOGI(pcTaskGetTaskName(0), "elapsed time[ms]:%d
counter:%d",diffTick*portTICK_RATE_MS, counter);
}
}
}
void app_main()
{
#ifdef EVENTWAIT
/* Create
EventGroup */
ESP_LOGI(TAG,
"xEventGroupCreate");
xEvent =
xEventGroupCreate();
configASSERT(
xEvent );
/* Create task
*/
xTaskCreate(task1, "EventWait", 4096, NULL, 1,
&xTask1);
#endif
#ifdef EVENTGET
/* Create
EventGroup */
ESP_LOGI(TAG,
"xEventGroupCreate");
xEvent =
xEventGroupCreate();
configASSERT(
xEvent );
/* Create task
*/
xTaskCreate(task2, "EventGet", 4096, NULL, 1,
&xTask1);
#endif
#ifdef QUEUE
/* Create Queue
*/
ESP_LOGI(TAG,
"xQueueCreate");
xQueue =
xQueueCreate( QUEUE_LENGTH, QUEUE_SIZE );
configASSERT(
xQueue );
/* Create task
*/
xTaskCreate(task11, "QueueReceive", 4096, NULL, 1,
&xTask1);
#endif
} |