/********************FreeROTS event test********************/
EventGroupHandle_t xCreatedEventGroup;
TaskHandle_t LED_EventTaskHandle, KEY_EventTaskHandle;
void LED_EventTask(void * param)
{
EventBits_t eventbits;
while (1)
{
eventbits = xEventGroupWaitBits(xCreatedEventGroup, KEY0EVNETBIT | KEY1EVNETBIT, pdTRUE, pdTRUE, portMAX_DELAY);
if ((eventbits & (KEY0EVNETBIT | KEY1EVNETBIT)) == (KEY0EVNETBIT | KEY1EVNETBIT))
{
LED0_Toggle();
LED1_Toggle();
}
}
}
void KEY_EventTask(void * param)
{
while (1)
{
if (GetKeyState(KEY0_PORT, KEY0_PIN) == KEY_DOWM)
{
printf("按键0被按下\r\n");
xEventGroupSetBits(xCreatedEventGroup, KEY0EVNETBIT);
}
if (GetKeyState(KEY1_PORT, KEY1_PIN) == KEY_DOWM)
{
printf("按键1被按下\r\n");
xEventGroupSetBits(xCreatedEventGroup, KEY1EVNETBIT);
}
vTaskDelay(100);
}
}
void FreeRTOS_EventTest(void)
{
BaseType_t tcreateret;
xCreatedEventGroup = xEventGroupCreate();
taskENTER_CRITICAL();
tcreateret =xTaskCreate(LED_EventTask,
(const char *)"LED_EventTask",
128,
NULL,
2,
&LED_EventTaskHandle);
if (tcreateret == pdTRUE)
{
printf("LED_EventTask 创建成功!\r\n");
}
tcreateret =xTaskCreate(KEY_EventTask,
(const char *)"KEY_EventTask",
128,
NULL,
2,
&KEY_EventTaskHandle);
if (tcreateret == pdTRUE)
{
printf("KEY_EventTask 创建成功!\r\n");
}
taskENTER_CRITICAL();
}