FreeRTOS学习笔记(9)---- 事件标志组

事件位
事件位用来表明某个事件是否发生, 事件位通常用作事件标志。

事件组
一个事件组就是一组的事件位, 事件组中的事件位通过位编号来访问。

事件API函数
创建事件标志组:
在这里插入图片描述
设置事件位:
在这里插入图片描述
获取事件标志组:
在这里插入图片描述
等待指定的事件位
在这里插入图片描述
在这里插入图片描述
实验
通过按键设置两个事件位

key = KEY_Scan(0);
	switch(key)
	{
		case KEY1_PRES:
			printf("bit1 set 1\r\n");
			xEventGroupSetBits(EventGroupHandle, EVENTBIT_1);					
			break;
		case KEY2_PRES:
			printf("bit2 set 1\r\n");
			xEventGroupSetBits(EventGroupHandle, EVENTBIT_2);					
			break;
	}

事件位

#define EVENTBIT_0	(1<<0)				//事件位
#define EVENTBIT_1	(1<<1)
#define EVENTBIT_2	(1<<2)
#define EVENTBIT_ALL	(EVENTBIT_1|EVENTBIT_2)

eventgroup_task函数

//eventgroup_task函数 
void eventgroup_task(void *pvParameters)
{
	EventBits_t EventValue;		
    while(1)
    {	
		if(EventGroupHandle != NULL)
		{
			EventValue = xEventGroupWaitBits((EventGroupHandle_t) EventGroupHandle,
											(EventBits_t) EVENTBIT_ALL,
											(BaseType_t )pdTRUE,
											(BaseType_t )pdFALSE,
											(TickType_t )portMAX_DELAY );
			printf("ALL bit set 1 EventValue = %x!\r\n", EventValue);
		}			
    }  		 
}   

当参数xWaitForAllBits设置为时pdTRUE时:
在这里插入图片描述

当参数xWaitForAllBits设置为时pdFALSE时:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值