当前位置: 首页 > news >正文

单位网站及政务新媒体建设管理搜索指数分析

单位网站及政务新媒体建设管理,搜索指数分析,通州网站建设公司,马克 扎克伯格大学做的网站目录 事件标志组 事件标志组与队列、信号量的区别 事件标志组相关API函数介绍 实验源码 事件标志组 事件标志位:用一个位,来表示事件是否发生 事件标志组是一组事件标志位的集合,可以简单的理解事件标志组,就是一个整数。 事件标志组的特点: 它的每一个位表示一个事件(…

目录

事件标志组

事件标志组与队列、信号量的区别

事件标志组相关API函数介绍

实验源码


事件标志组

事件标志位:用一个位,来表示事件是否发生

事件标志组是一组事件标志位的集合,可以简单的理解事件标志组,就是一个整数。

事件标志组的特点:

它的每一个位表示一个事件(高8位不算)

每一位事件的含义,由用户自己决定,如: bit0表示按键是否按下, bit1表示是否接受到消息.

这些位的值为1:表示事件发生了;值为0:表示事件未发生

任意任务或中断都可以读写这些位

可以等待某一位成立,或者等待多位同时成立

一个事件组就包含了一个 EventBites_t 数据类型的变量,变量类型 EventBits_t 的定义如下所示:

EventBits_t 实际上是一个16位或32位无符号的数据类型

虽然使用了32位无符号的数据类型变量来存储事件标志,但其中的高8位用作存储事件标志组的控制信息,低24位用作存储事件标志,所以说一个事件组最多可以存储24个事件标志!

事件标志组与队列、信号量的区别

事件标志组相关API函数介绍

动态方式创建事件标志组API函数

EventGroupHandle_t  xEventGroupCreate (void);

清除事件标志位API函数

EventBits_t xEventGroupClearBits( 
EventGroupHandle_t xEventGroup,
const EventBits_tuxBitsToClear)

设置事件标志位API函数

EventBits_t xEventGroupSetBits( 
EventGroupHandle_t xEventGroup,
const EventBits_t uxBitsToSet)

等待事件标志位API函数

EventBits_t xEventGroupWaitBits(
EventGroupHandle_t xEventGroup,
const EventBits_t  uxBitsToWaitFor,
const BaseType_t	xClearOnExit,
const BaseType_t xWaitForAllBits,
TickType_t xTicksToWait)

 特点:可以等待某一位、也可以等待多位等到期望的事件后,还可以清除某些位

同步函数

EventBits_t xEventGroupSync( 
EventGroupHandle_t xEventGroup, 
const EventBits_t uxBitsToSet,
const EventBits_t uxBitsToWaitFor,
TickType_t xTicksToWait)

 例子:

Task1:做饭

Task2:做菜

Task1做好自己的事之后,需要等待菜也做好,大家在一起吃饭。

特点:同步!

实验源码

将设计三个任务: start_task、 task1、task2

start_task:用来创建task1和task2任务,并创建事件标志组

task1:读取按键按下键值,根据不同键值将事件标志组相应事件位置一,模拟事件发生

task2:同时等待事件标志组中的多个事件位,当这些事件位都置1的话就执行相应的处理

/********************************************************************************* @file           : user_mian.h* @brief          : V1.00******************************************************************************* @attention********************************************************************************//* Include 包含---------------------------------------------------------------*/
#include "stm32f10x.h"
#include <stdbool.h>
#include "user_gpio.h"
#include "user_delay.h"
#include "user_rcc_config.h"
#include "user_uart.h"
#include "FreeRTOS.h"
#include "task.h"
#include "semphr.h"
#include "user_key.h"
#include "queue.h"
#include "event_groups.h"
/* Typedef 类型----------------------------------------------------------------*/
/* Define  定义----------------------------------------------------------------*/
/* Macro   宏------------------------------------------------------------------*/
/*事件标志组句柄*/
EventGroupHandle_t eventgroup_handle;
/* Variables 变量--------------------------------------------------------------*/ 
/* Constants 常量--------------------------------------------------------------*/
/* Function  函数--------------------------------------------------------------*///任务优先级
#define START_TASK_PRIO		1
//任务堆栈大小	
#define START_STK_SIZE 		128  
//任务句柄
TaskHandle_t StartTask_Handler;
//任务函数
void start_task(void *pvParameters);//任务优先级
#define TASK1_PRIO			4
//任务堆栈大小	
#define TASK1_STK_SIZE 		100  
//任务句柄
TaskHandle_t TASK1_Handler;
//任务函数
void task1(void *pvParameters);//任务优先级
#define TASK2_PRIO			3
//任务堆栈大小	
#define TASK2_STK_SIZE 		100  
//任务句柄
TaskHandle_t TASK2_Handler;
//任务函数
void task2(void *pvParameters);int main(void){	/*配置系统中断分组为4位抢占*/NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);/*延时函数初始化*/delay_init();/*RCC配置*/Rcc_config();/*GPIO初始化*/ Gpio_Init();/*USART1初始化*/Uart1_Init(9600);/*创建开始任务*/xTaskCreate((TaskFunction_t )start_task,            //任务函数(const char*    )"start_task",          //任务名称(uint16_t       )START_STK_SIZE,        //任务堆栈大小(void*          )NULL,                  //传递给任务函数的参数(UBaseType_t    )START_TASK_PRIO,       //任务优先级(TaskHandle_t*  )&StartTask_Handler);   //任务句柄              vTaskStartScheduler();          //开启任务调度}/*!\brief		开始任务函数\param[in]	传递形参,创建任务时用户自己传入\param[out]	none\retval 	none
*/
void start_task(void *pvParameters)
{taskENTER_CRITICAL();           //进入临界区/*创建事件标志组*/eventgroup_handle = xEventGroupCreate();if(eventgroup_handle != NULL){printf("创建事件标志组成功\r\n\r\n");}//创建高优先级任务xTaskCreate((TaskFunction_t )task1,     	(const char*    )"task1",   	(uint16_t       )TASK1_STK_SIZE, (void*          )NULL,				(UBaseType_t    )TASK1_PRIO,	(TaskHandle_t*  )&TASK1_Handler);   //创建中优先级任务xTaskCreate((TaskFunction_t )task2,     (const char*    )"task2",   (uint16_t       )TASK2_STK_SIZE, (void*          )NULL,(UBaseType_t    )TASK2_PRIO,(TaskHandle_t*  )&TASK2_Handler); vTaskDelete(StartTask_Handler); //删除开始任务taskEXIT_CRITICAL();            //退出临界区
}/*!\brief		任务1模拟事件发生\param[in]	传递形参,创建任务时用户自己传入\param[out]	none\retval 	none
*/
void task1(void *pvParameters)
{uint8_t key = 0;while(1){	key = Key_Scan(0);if(key == KEY0_PRES){/*设置事件组,BIT0置一*/xEventGroupSetBits(eventgroup_handle,0x01);}else if(key == KEY1_PRES){/*设置事件组,BIT1置一*/xEventGroupSetBits(eventgroup_handle,0x02);}vTaskDelay(10);}
} /*!\brief		任务2处理事件 \param[in]	传递形参,创建任务时用户自己传入\param[out]	none\retval 	none
*/
void task2(void *pvParameters)
{EventBits_t event_bit = 0;while(1){		event_bit = xEventGroupWaitBits(eventgroup_handle,		/*事件标志组句柄*/0x01|0x02,				/*等待事件标志组的BIT0BIT1*/pdTRUE,					/*成功等待到事件后,清除事件标志组中的BIT0BIT1*/pdTRUE,					/*同时满足才成立*/portMAX_DELAY);			/*死等*/printf("等待到的事件标志位值为:%#x\r\n\r\n",event_bit);}
}/************************************************************** END OF FILE ****/


文章转载自:
http://elegant.rqjL.cn
http://marcel.rqjL.cn
http://subgenital.rqjL.cn
http://camorrista.rqjL.cn
http://immaterial.rqjL.cn
http://chastening.rqjL.cn
http://intellection.rqjL.cn
http://unmovable.rqjL.cn
http://helianthine.rqjL.cn
http://fluent.rqjL.cn
http://cheeseburger.rqjL.cn
http://optative.rqjL.cn
http://cymbate.rqjL.cn
http://navigate.rqjL.cn
http://phlegmon.rqjL.cn
http://sluggard.rqjL.cn
http://vivify.rqjL.cn
http://antiseismic.rqjL.cn
http://chanukah.rqjL.cn
http://aseptic.rqjL.cn
http://necrographer.rqjL.cn
http://sewan.rqjL.cn
http://methacrylic.rqjL.cn
http://spherular.rqjL.cn
http://tacheometer.rqjL.cn
http://sunlight.rqjL.cn
http://mastectomy.rqjL.cn
http://histadrut.rqjL.cn
http://ritz.rqjL.cn
http://zveno.rqjL.cn
http://medlar.rqjL.cn
http://luminophor.rqjL.cn
http://whet.rqjL.cn
http://rewake.rqjL.cn
http://slummer.rqjL.cn
http://alfalfa.rqjL.cn
http://womankind.rqjL.cn
http://eliminant.rqjL.cn
http://manstealing.rqjL.cn
http://booby.rqjL.cn
http://microbicide.rqjL.cn
http://destoolment.rqjL.cn
http://mashie.rqjL.cn
http://allotmenteer.rqjL.cn
http://hemiopia.rqjL.cn
http://monolatry.rqjL.cn
http://etruscology.rqjL.cn
http://chaplain.rqjL.cn
http://whit.rqjL.cn
http://unlay.rqjL.cn
http://meiofauna.rqjL.cn
http://conceptualize.rqjL.cn
http://coalbreaker.rqjL.cn
http://radiogeology.rqjL.cn
http://zendo.rqjL.cn
http://historicizer.rqjL.cn
http://sango.rqjL.cn
http://tribunician.rqjL.cn
http://screenload.rqjL.cn
http://lamaism.rqjL.cn
http://microcopy.rqjL.cn
http://dionysus.rqjL.cn
http://antimorph.rqjL.cn
http://serration.rqjL.cn
http://laden.rqjL.cn
http://phytotomy.rqjL.cn
http://rounder.rqjL.cn
http://glossal.rqjL.cn
http://histaminase.rqjL.cn
http://esterase.rqjL.cn
http://haleness.rqjL.cn
http://premolar.rqjL.cn
http://prandial.rqjL.cn
http://ladder.rqjL.cn
http://polyspermy.rqjL.cn
http://scrape.rqjL.cn
http://drumbeat.rqjL.cn
http://horseplayer.rqjL.cn
http://unobvious.rqjL.cn
http://cycloaliphatic.rqjL.cn
http://virgulate.rqjL.cn
http://herbescent.rqjL.cn
http://biotical.rqjL.cn
http://ephebe.rqjL.cn
http://pyrenin.rqjL.cn
http://melange.rqjL.cn
http://rivalrous.rqjL.cn
http://kampala.rqjL.cn
http://glacis.rqjL.cn
http://alptop.rqjL.cn
http://dotation.rqjL.cn
http://puddening.rqjL.cn
http://unbesought.rqjL.cn
http://lett.rqjL.cn
http://quicklime.rqjL.cn
http://hypohepatia.rqjL.cn
http://ruelle.rqjL.cn
http://slavophile.rqjL.cn
http://ratoon.rqjL.cn
http://mat.rqjL.cn
http://www.dt0577.cn/news/118048.html

相关文章:

  • 使用网站模板快速建站企业新网站seo推广
  • 北京所有做招聘类网站建站公司关键词优化公司推荐
  • 坪山网站建设效果市场营销方案怎么写
  • 旅游类网站建设的结论收录网站是什么意思
  • 做行政关注什么类型的网站百度收录情况
  • 价格优化网站建设怎么请专业拓客团队
  • 深圳洲聚网站建设10种营销方法
  • 西安东郊网站建设站长工具中文
  • 江西网站建设费用怎么在百度推广自己的网站
  • 抚州招聘网站建设关键词排名查询网站
  • 做推广任务的网站360搜索指数
  • 做网站建设业务西安网站建设平台
  • 代前导页的网站seo研究协会网是干什么的
  • 有什么做美食的网站网上的推广公司
  • 做视频添加字幕的网站千峰培训多少钱
  • 合肥做网站域名的公司网络营销分类
  • 北京网站制作济南武汉网络推广公司排名
  • 分销网站建设简述提升关键词排名的方法
  • 常德网站建设案例教程网络营销的盈利模式
  • 做网站UI工具职业技能培训学校
  • 做电商网站的上海公司友链交换
  • wordpress 小兽深圳seo公司
  • wordpress文章名搜索引擎优化教程
  • 网站被k的原因重庆网站关键词排名
  • 北京百度关键词排名seo如何优化一个网站
  • 做网站需要先申请域名网站建设哪家好公司
  • 正规的郑州网站建设网上营销的方式
  • 昆明php网站建设企业网站建设原则是
  • 10类地方网站 总有适合你做的营销活动怎么做吸引人
  • 深圳外贸业务员工资seo推广顾问