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

网站 建设需求嘉兴seo外包

网站 建设需求,嘉兴seo外包,ckeditor wordpress,小型网络架构freertos信号量之二值信号量 简介例程 简介 FreeRTOS的二值信号量(Binary Semaphore)是用于实现进程间同步和临界资源保护的重要工具。以下是一些二值信号量的常用函数及其说明: 1)xSemaphoreCreateBinary() 创建一个二值信号量…

freertos信号量之二值信号量

    • 简介
    • 例程

简介

FreeRTOS的二值信号量(Binary Semaphore)是用于实现进程间同步和临界资源保护的重要工具。以下是一些二值信号量的常用函数及其说明:

1)xSemaphoreCreateBinary()
创建一个二值信号量。该函数接受一个无符号整型参数,用于指定信号量的初始值。如果初始值为0,则表示信号量未被占用;否则,表示信号量已被占用。

2)xSemaphoreTake(SemaphoreHandle_t xSemaphore, portTickType xBlockTime)
获取二值信号量。该函数会尝试获取信号量,如果信号量可用,则获取成功并立即返回;否则,如果信号量不可用,函数会阻塞调用任务,直到信号量可用或超时。xBlockTime参数指定阻塞时间,单位为系统时钟节拍数。

3)xSemaphoreGive(SemaphoreHandle_t xSemaphore)
释放二值信号量。该函数会将信号量的值置为1,表示信号量可用。如果有任务正在等待该信号量,则其中一个任务将被唤醒并继续执行。

4)xSemaphoreGetCount(SemaphoreHandle_t xSemaphore)
获取二值信号量的当前值。该函数返回信号量的当前值,即0或1。

5)xSemaphoreDelete(SemaphoreHandle_t xSemaphore)
删除一个二值信号量。该函数会释放与信号量关联的资源,并使信号量无效。

使用注意点
二值信号量只有两个状态,0和1,因此只能用于简单的同步和资源保护场景。
二值信号量不支持优先级继承,因此不会出现优先级反转的问题。
在释放信号量时,需要注意保证调用xSemaphoreGive()函数的代码能够正确执行,否则可能导致信号量无法释放而引起死锁。

例程

#include <FreeRTOS.h>  
#include <task.h>  // 定义二值信号量的初始状态为0  
static SemaphoreHandle_t binarySemaphore = 0;  void vATask( void * pvParameters )  
{  portTickType xDelay;  for( ;; )  {  // 任务进入临界区,保护临界资源  xSemaphoreTake( binarySemaphore, ( portTickType ) 0 ); // 等待信号量变为1  // 临界区代码,保护临界资源  // ...  // 释放信号量,使信号量状态变为0,允许其他任务或中断服务程序进入临界区  xSemaphoreGive( binarySemaphore );  // 延时一定时间后再次进入临界区  xDelay = pdMS_TO_TICKS( 1000 ); // 延时1秒  portYIELD_WITHIN( xDelay );  }  
}  void vAnInterruptServiceRoutine( void )  
{  
// 中断服务程序中获取二值信号量,保护中断服务程序的代码不被打断  
xSemaphoreTakeFromISR( binarySemaphore, &xHigherPriorityTaskWoken );  
// 中断服务程序代码,保护中断服务程序的代码不被打断  
// ...  
// 中断服务程序释放二值信号量,允许任务进入临界区  
xSemaphoreGiveFromISR( binarySemaphore, &xHigherPriorityTaskWoken );  
}

在上述示例中,任务vATask首先进入临界区并等待二值信号量。当二值信号量的状态为0时,任务会阻塞等待。一旦任务进入临界区,就可以执行保护临界资源的代码。当任务完成临界区代码后,释放二值信号量,使其状态变为0,允许其他任务或中断服务程序进入临界区。

在中断服务程序中,也可以使用二值信号量来保护中断服务程序的代码不被打断。当低优先级的中断发生时,中断服务程序会获取二值信号量并快速处理少部分工作。一旦中断服务程序完成工作,就会释放二值信号量,允许高优先级的中断或任务进入临界区。


文章转载自:

http://lfXDR8kc.dwyyf.cn
http://f2tiBnPz.dwyyf.cn
http://f9eObex1.dwyyf.cn
http://F8HiKdTe.dwyyf.cn
http://7AbwvFKw.dwyyf.cn
http://MIm9lm9w.dwyyf.cn
http://66I6HeKf.dwyyf.cn
http://x7xLHMRF.dwyyf.cn
http://VM400PEm.dwyyf.cn
http://427AbNSt.dwyyf.cn
http://5yi1gfli.dwyyf.cn
http://M9ZZQzvH.dwyyf.cn
http://obxRKTuY.dwyyf.cn
http://EohOaxPG.dwyyf.cn
http://xAlyurl3.dwyyf.cn
http://rEsKwJu0.dwyyf.cn
http://pidCcoXX.dwyyf.cn
http://WHnQGjwn.dwyyf.cn
http://7qLKBCYD.dwyyf.cn
http://TpWNvxVF.dwyyf.cn
http://GKc8MNhU.dwyyf.cn
http://iztxfUDJ.dwyyf.cn
http://a7B82NkG.dwyyf.cn
http://VzJMkGpw.dwyyf.cn
http://jMVenfDV.dwyyf.cn
http://bRzbgywU.dwyyf.cn
http://8cmBOJdz.dwyyf.cn
http://X0pggmfu.dwyyf.cn
http://V4fXP3hS.dwyyf.cn
http://SlLtyvOV.dwyyf.cn
http://www.dtcms.com/wzjs/681379.html

相关文章:

  • 中国风网站建设一个服务器怎么做两个网站
  • 网站模版网设计常用的几个软件
  • 网站图标怎么做可以做策略回测的网站
  • 网站开发技术与应用课程设计会员管理系统设计
  • 网站功能说明怎么做黄页网站系统
  • 家居企业网站建设策划python在线编程工具
  • 电脑上wap网站怎么做外贸网站推广
  • 印尼建设银行网站上海松江网站设计公司
  • 网站建设代码合同做公司网站联系公司
  • 免费制作微网站视频网站建设流程
  • 网站设计 网站建设 手机网站建设手表 网站策划
  • 简答电子商务网站建设流程html代码中标签的书写不区分大小写
  • 上海企业网站建设公seo是什么的简称
  • 检测网站点击量wordpress 图片显示不了
  • 有没有类似一起做网店的网站辽宁建设工程质量监督站网站
  • 做社群的网站有哪些wordpress非插件oss
  • 免费整套ppt模板下载网站山西晋城网站建设
  • 网站建设公司地址自己做的网站如何在百度搜到
  • 临沂网站seo网页设计与网页制作的实验报告
  • 天津建设发展总公司网站本地的上海网站建设公
  • 毕业设计做网站怎么答辩apple 网站模板
  • 网站备案价格响应式网页设计平台
  • 济南网站外包网站开发语言分类
  • 福建省建建设行业信用评分网站营销心得体会感悟300字
  • 凡诺网站下载付费阅读wordpress主题
  • 卫浴网站怎么做网页设计课程心得体会
  • 保靖网站建设天津高端网站
  • 蓝色经典通用网站模板html源码下载蓝色高科技网站模板
  • 六年级上册如何做网站顶尖设计
  • 百度推广一个月多少钱北京云无限优化