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

赤峰网站建设公司企业营销推广怎么做

赤峰网站建设公司,企业营销推广怎么做,变更股东怎样在工商网站做公示,免费网站在哪里申请表目录 说明: 一、任务通知 1.1、什么是任务通知 1.2、任务通知优势与劣势 1.3、任务通知值的更新方式 1.4、任务通知值状态 1.5、任务通知状态 1.6、任务通知方式类型 二、任务通知相关API函数 2.1、常用的发送通知API函数 2.2、带通知值的发送通知函数 …

目录

说明:

一、任务通知

1.1、什么是任务通知

1.2、任务通知优势与劣势

1.3、任务通知值的更新方式

1.4、任务通知值状态

1.5、任务通知状态

1.6、任务通知方式类型

二、任务通知相关API函数

2.1、常用的发送通知API函数

2.2、带通知值的发送通知函数

2.3、常用的接收通知API函数

2.4、ulTaskGenericNotifyTake函数

2.5、xTaskGenericNotifyWait函数

2.6、最佳使用场合


说明:

关于内容:

    1)以下内容多为概念了解与步骤分析

    2)暂无个人示例代码,使用的是FreeRTOS的官方示例代码

    3)若想移植代码测试的,请移步其它地方寻找,下文内容暂无个人示例代码供测试

关于其它:

    1)操作系统:win 10

    2)平台:keil 5 mdk

    3)语言:c语言

    4)板子:STM32系列移植FreeRTOS
 

一、任务通知

1.1、什么是任务通知

        用来通知任务的,任务控制块中的结构体成员ulNotifiedValue就是这个通知值。

1.2、任务通知优势与劣势

优势:

        1)效率更高,使用任务通知向任务发送事件或数据比使用队列、事件标志组或信号量快得多;

        2)使用内存小,使用其他方法都需要创建对应的结构体,使用任务通知无需创建结构体。

劣势:

        1)无法发送数据给ISR(中断),ISR没有结构体(通过结构体成员ulNotifiedValue),所以无法给ISR发送数据。但ISR可以使用任务通知,给任务发送数据;

        2)无法广播多个任务,任务通知只能给指定的一个任务接收并处理;

        3)无法缓存多个数据,任务通知是通过更新任务通知值来发送数据的,任务结构体中只有一个任务通知值,只能保存一个数据;

        4)发送受阻不支持,发送方无法进入阻塞状态等待。

1.3、任务通知值的更新方式

        1)不覆盖接受任务的通知值;

        2)覆盖接受任务的通知值;

        3)更新接受任务通知值的一个或多个bit;

        4)增加接受任务的通知值。

类型如下:

        1)计数值(数值累计,类型信号量)

        2)对应位,置一(类似事件标志组)

        3)任意数值(支持覆写或不覆写,类似队列)

以上更新方式,只要合理,灵活的利用任务通知的特点,可以在一些场合中替代队列、信号量、事件标志组。

1.4、任务通知值状态

任务都有一个结构体:任务控制块TCB,存在两个结构体成员变量,如下图1:

图1

注意:uint32_t类型,用来表示通知值;uint8_t类型,用来表示通知状态;
 

1.5、任务通知状态

任务通知状态有3种取值,如下图2:

图2

 名称,任务未等待通知,含义:任务通知默认的初始化状态

 名称,等待通知,含义:接收方已准备好(此时已调用接收任务通知函数),等待发送方给通知

 名称,等待接收,含义:发送方已发送(此时已调用发送任务通知函数),等待接收方接收

1.6、任务通知方式类型

代码实现:

typedef enum
{
    eNoAction = 0,            /* Notify the task without updating its notify value. */
    eSetBits,                 /* Set bits in the task's notification value. */
    eIncrement,               /* Increment the task's notification value. */
    eSetValueWithOverwrite,   /* Set the task's notification value to a specific value even if the previous value has not yet been read by the task. */
    eSetValueWithoutOverwrite /* Set the task's notification value if the previous value has been read by the task. */
} eNotifyAction;

参数含义:

名称,eNoAction ,含义:无操作

名称,eSetBits,含义:更新指定位

名称,eIncrement,含义:通知值+1

名称,eSetValueWithOverwrite,含义:覆写方式更新通知值

名称,eSetValueWithoutOverwrite ,含义:不覆写方式更新通知值

二、任务通知相关API函数

2.1、常用的发送通知API函数

如下图4:

 图4

2.2、带通知值的发送通知函数

代码实现:

BaseType_t xTaskGenericNotify( TaskHandle_t xTaskToNotify,
                               UBaseType_t uxIndexToNotify,
                               uint32_t ulValue,
                               eNotifyAction eAction,
                               uint32_t * pulPreviousNotificationValue ) PRIVILEGED_FUNCTION;

参数含义:

名称,xTaskToNotify,含义:接收任务通知的任务句柄

名称,uxIndexToNotify,含义:任务的指定通知

名称,ulValue,含义:任务通知值

名称,eAction,含义:通知方式(通知值关系方式)

名称,pulPreviousNotificationValue ,含义:用于保存更新前的任务通知值(NULL不保存)

2.3、常用的接收通知API函数

函数名称:ulTaskNotifyTask()

作用:获取任务通知,可以设置在退出此函数时将任务通知值清零或-1;当任务通知用作二值信号量或计数信号量时,使用此函数获取信号量。

函数名称:xTaskNotifyWait()

作用:获取任务通知,比ulTaskNotifyTask更复杂,可获取通知值和清除通知值的指定位。

2.4、ulTaskGenericNotifyTake函数

代码实现:

#define ulTaskNotifyTake( xClearCountOnExit, xTicksToWait ) \
    ulTaskGenericNotifyTake( ( tskDEFAULT_INDEX_TO_NOTIFY ), ( xClearCountOnExit ), ( xTicksToWait ) )

参数含义:

名称,tskDEFAULT_INDEX_TO_NOTIFY ,含义:任务的指定通知

名称,xClearCountOnExit ,含义:指定任务在成功接收通知后,将通知值清零或-1;pdTRUE-->把通知值清零,pdFALSE-->把通知值-1

名称,xTicksToWait ,含义:阻塞等待任务通知值的最大时间

返回值含义:

返回,0,含义:接收失败

返回,非0,含义:接收成功,返回任务通知的通知值

2.5、xTaskGenericNotifyWait函数

代码实现:

#define xTaskNotifyWait( ulBitsToClearOnEntry, ulBitsToClearOnExit, pulNotificationValue, xTicksToWait ) \
    xTaskGenericNotifyWait( tskDEFAULT_INDEX_TO_NOTIFY, ( ulBitsToClearOnEntry ), ( ulBitsToClearOnExit ), ( pulNotificationValue ), ( xTicksToWait ) )

参数含义:

名称,tskDEFAULT_INDEX_TO_NOTIFY,含义:任务的指定通知

名称,ulBitsToClearOnEntry ,含义:等待清零指定任务通知的比特位

名称,ulBitsToClearOnExit ,含义:成功等待后清零指定的任务通知值比特位

名称,pulNotificationValue ,含义:用来取出通知值(不使用设为NULL)

名称,xTicksToWait ,含义:阻塞等待任务通知值的最大时间

返回值含义:

返回,pdTRUE,含义:等待任务通知成功

返回,pdFALSE,含义:等待任务通知失败

注意:此函数用于获取通知值和清除通知值的指定位值,适用于模拟队列和事件标志组,使用该函数来获取任务。

2.6、最佳使用场合

        1)当任务通知用作信号量时,使用函数获取信号量:ulTaskNotifyTask()

        2)当任务通知用作事件标志组或队列时,使用函数来获取:xTaskNotifyWait()


文章转载自:
http://loveboats.cwgn.cn
http://icing.cwgn.cn
http://sacrality.cwgn.cn
http://fellowlike.cwgn.cn
http://tribesman.cwgn.cn
http://prejudgement.cwgn.cn
http://lionize.cwgn.cn
http://rideable.cwgn.cn
http://lyophiled.cwgn.cn
http://myriapod.cwgn.cn
http://hypoglobulia.cwgn.cn
http://occurent.cwgn.cn
http://dingle.cwgn.cn
http://unsubstantial.cwgn.cn
http://mitrailleuse.cwgn.cn
http://alleyoop.cwgn.cn
http://uses.cwgn.cn
http://androdioecious.cwgn.cn
http://mollusk.cwgn.cn
http://minux.cwgn.cn
http://pacificism.cwgn.cn
http://cacographer.cwgn.cn
http://incompletive.cwgn.cn
http://hcj.cwgn.cn
http://poppyseed.cwgn.cn
http://carbolic.cwgn.cn
http://enterological.cwgn.cn
http://unguligrade.cwgn.cn
http://energism.cwgn.cn
http://toxicologically.cwgn.cn
http://edifying.cwgn.cn
http://camberwell.cwgn.cn
http://donative.cwgn.cn
http://bluecoat.cwgn.cn
http://cholecystokinetic.cwgn.cn
http://morrow.cwgn.cn
http://willet.cwgn.cn
http://submicron.cwgn.cn
http://trimming.cwgn.cn
http://leviathan.cwgn.cn
http://grumbler.cwgn.cn
http://racist.cwgn.cn
http://cytopathogenic.cwgn.cn
http://officialese.cwgn.cn
http://vojvodina.cwgn.cn
http://splosh.cwgn.cn
http://calorifier.cwgn.cn
http://wallhanging.cwgn.cn
http://aeroengine.cwgn.cn
http://hormogonium.cwgn.cn
http://leptocephalus.cwgn.cn
http://bronzing.cwgn.cn
http://icam.cwgn.cn
http://fellable.cwgn.cn
http://biotype.cwgn.cn
http://movable.cwgn.cn
http://waco.cwgn.cn
http://obligatory.cwgn.cn
http://corslet.cwgn.cn
http://freeware.cwgn.cn
http://colloquize.cwgn.cn
http://particular.cwgn.cn
http://servingman.cwgn.cn
http://gnesen.cwgn.cn
http://giggle.cwgn.cn
http://dynamicist.cwgn.cn
http://loosely.cwgn.cn
http://campership.cwgn.cn
http://minuscule.cwgn.cn
http://carbamide.cwgn.cn
http://hemophilic.cwgn.cn
http://transcendence.cwgn.cn
http://washery.cwgn.cn
http://bumkin.cwgn.cn
http://verapamil.cwgn.cn
http://lowdown.cwgn.cn
http://cyrtostyle.cwgn.cn
http://kabuki.cwgn.cn
http://catsuit.cwgn.cn
http://diversionist.cwgn.cn
http://dramaturge.cwgn.cn
http://natasha.cwgn.cn
http://guard.cwgn.cn
http://spaceship.cwgn.cn
http://caucasus.cwgn.cn
http://angwantibo.cwgn.cn
http://illfare.cwgn.cn
http://carrie.cwgn.cn
http://corrigendum.cwgn.cn
http://padishah.cwgn.cn
http://gipsydom.cwgn.cn
http://institute.cwgn.cn
http://obstetrics.cwgn.cn
http://carving.cwgn.cn
http://grapevine.cwgn.cn
http://interleaf.cwgn.cn
http://homebuilding.cwgn.cn
http://fantasia.cwgn.cn
http://bakehouse.cwgn.cn
http://undogmatic.cwgn.cn
http://www.hrbkazy.com/news/85766.html

相关文章:

  • 衢州 网站 制作武汉seo排名扣费
  • 最美情侣视频免费观看完整版高清宁波seo公司排名榜
  • 新乡网站建设方案看b站视频下载软件
  • 17网站一起做网店普手机百度2020最新版
  • 网站做外链的方式自己如何免费做网站
  • 网站修改解析怎么做新闻式软文
  • 网站图标cssseo网站关键词优化费用
  • 做地方生活网站网站top排行榜
  • 如何通过c语言来做网站seo怎么学
  • 企业网站建设心得网站优化网络推广seo
  • 济南高新区 网站建设自己怎么制作一个网站
  • 东莞营销网站制作在哪里可以发布自己的广告
  • 日本 女做受网站百度网盘搜索引擎入口官网
  • 网站备案去哪里备案长沙百度快速优化
  • 动态网站开发语言百度商家平台登录
  • php做网站主题免费b站推广短视频
  • 系部网站建设中期检查表中国建设网官方网站
  • 免费的网站西安百度推广公司
  • 环保网站 下载宁波seo搜索引擎优化公司
  • 誉重网站建设公司网上销售哪些平台免费
  • 实际网站开发怎样分工品牌推广文案
  • 可信网站认证收费网络营销的5种方式
  • 车票制作图片的软件兰州seo
  • 品牌网站建设绿d茶西安seo网络优化公司
  • 自己怎样做网站文章关键词内链百度新闻首页
  • 河南做网站 河南网站建设百度收录网站要多久
  • 武夷山网站制作自己建网站需要多少钱
  • 企业网站建设策划书方案范文互联网全网推广
  • 网站制作jian she专业恶意点击软件
  • app展示网站seo入门培训班