1、背景

由于在搞ESP32的WIFI部分时,出现\"wifi: Haven\'t to connect to a suitable AP now\"的异常。分析完WIFI流程后,去除事件组后,正常运行,因此需要分析一下事件组哪里学习不到位。

事件组的存在,影响我想达到的目标。

//	wifiBits = xEventGroupWaitBits(wifi_event_group, ST_ALLBITS,
//			false, false, portMAX_DELAY);
//	if((wifiBits & CONNECTED_BIT)==CONNECTED_BIT)
//	{
//		st = SM_getSongFile(tmp_url);
//	}

1.1 参考资料

2、基础知识

事件标志组——任务间的通信和同步机制之一。

2.1 事件组对比全局变量的优点

事件组对比全局变量,在RTOS内有诸多好处是全局变量所达不到的---这些好处还带我去体验

1、让RTOS内核更有效地管理任务;用全局变量时,任务超时等机制需要自己实现。

2、使用事件标志组,不用担心多任务的访问冲突;用全局变量时,为了访问共享要加锁。

3、事件标志组还可有效解决中断服务程序和任务之间的同步问题。

可以看出,事件标志组相当于RTOS给出的全局标志,特别好用的样子

2.2 事件标志组的实现

接下去就要将任务间或任务和中断服务程序间的同步或通信问题。

这就存在一个任务处于阻塞态,等待另一任务或中断服务程序给他需要的事件标志位置1,以使之从阻塞态转为运行态。

2.2.1 事件标志组的定义

 

 

3、灵活运用

收藏 打印