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

公司网站备案后在百度上多长时间可以搜索到今日重大新闻头条十条

公司网站备案后在百度上多长时间可以搜索到,今日重大新闻头条十条,企业网站尺寸,青海省网站建设哪家公司比较靠谱延时函数介绍 函数 描述 vTaskDelay() 相对延时 xTaskDelayUntil() 绝对延时 相对延时:指每次延时都是从执行函数vTaskDelay()开始,直到延时指定的时间结束 绝对延时:指将整个任务的运行周期看成一个整体,适用于需要按…

延时函数介绍

函数

描述

vTaskDelay()

相对延时

xTaskDelayUntil()

绝对延时

相对延时:指每次延时都是从执行函数vTaskDelay()开始,直到延时指定的时间结束 

绝对延时:指将整个任务的运行周期看成一个整体,适用于需要按照一定频率运行的任务 

  1. 为任务主体,也就是任务真正要做的工作
  2. 是任务函数中调用vTaskDelayUntil()对任务进行延时
  3. 为其他任务在运行 

vTaskDelay()

函数 vTaskDelay() 用于对任务进行延时,延时的时间单位为系统时钟节拍,使用函数,需要的 FreeRTOSConfig.h 文件中将配置项 INCLUDE_vTaskDelay 配置为 1。
void vTaskDelay(const TickType_t xTicksToDelay); 

        函数用于使任务进入阻塞状态,以实现延时功能。延时的时间以 FreeRTOS 的时钟节拍为单位。 指每次延时都是从执行函数 vTaskDelay() 开始,直到延时指定的时间(参数:滴答值)结束。 

        参数 xTicksToDelay 用于设置延迟的时钟节拍个数,范围 1- 0xFFFFFFFF。 

        在使用此函数进行任务延时时,如果传入的参数为 0,那表明不进行任务延时,而是强
制进行一次任务切换。
void vTaskDelay( const TickType_t xTicksToDelay )
{BaseType_t xAlreadyYielded = pdFALSE;/* 只有在延时时间大于 0 的时候,才需要进行任务阻塞,* 否则相当于强制进行任务切换,而不阻塞任务*/if( xTicksToDelay > ( TickType_t ) 0U ){configASSERT( uxSchedulerSuspended == 0 );/* 挂起任务调度器 */vTaskSuspendAll();{/* 用于调试,不用理会 */traceTASK_DELAY();/* 将任务添加到阻塞态任务列表中 */prvAddCurrentTaskToDelayedList( xTicksToDelay, pdFALSE );}/* 恢复任务调度器运行,调用此函数会返回是否需要进行任务切换*/xAlreadyYielded = xTaskResumeAll();}else{mtCOVERAGE_TEST_MARKER();}/* 根据标志进行任务切换 */if( xAlreadyYielded == pdFALSE ){portYIELD_WITHIN_API();}else{mtCOVERAGE_TEST_MARKER();}
}

xTaskDelayUntil()

        函数 xTaskDelayUntil() 用于对任务进行绝对延时,延时的时间单位为系统时钟节拍,使用需要在 FreeRTOSConfig.h 文件中将配置项 INCLUDE_vTaskDelayUntil 配置为 1。 

BaseType_t xTaskDelayUntil( TickType_t * const  pxPreviousWakeTime,const TickType_t    xTimeIncrement   );

         函数描述:函数 vTaskDelayUntil 用于周期性延迟。 属于绝对延时,指间隔指定的时间(参数:滴答值),执行一次调用 vTaskDelayUntil() 函数的任务。

参数说明
pxPreviousWakeTime存储任务最后一次解除阻塞的时间
xTimeIncrement周期性延迟时间
返回值BaseType_t
pdTRUE操作成功
pdFALSE操作失败
#if ( INCLUDE_xTaskDelayUntil == 1 )
BaseType_t xTaskDelayUntil(TickType_t * const  pxPreviousWakeTime, /*上一次阻塞超时时间*/const TickType_t    xTimeIncrement    ) /*延时的时间*/
{TickType_t xTimeToWake;BaseType_t xAlreadyYielded, xShouldDelay = pdFALSE;configASSERT( pxPreviousWakeTime );configASSERT( ( xTimeIncrement > 0U ) );configASSERT( uxSchedulerSuspended == 0 );/* 挂起任务调度器 */vTaskSuspendAll();{const TickType_t xConstTickCount = xTickCount;/* 计算任务下一次阻塞超时的时间,* 这个阻塞超时时间是相对于上一次阻塞超时的时间的*/xTimeToWake = *pxPreviousWakeTime + xTimeIncrement/* 如果在上一次阻塞超时后,* 系统时钟节拍计数器溢出过*/if( xConstTickCount < *pxPreviousWakeTime ){/* 只有在下一次阻塞超时时间也溢出,* 并且下一次阻塞超时时间大于系统时钟节拍计数器的值时,* 需要做相应的溢出处理,否则就好像没有溢出*/if( ( xTimeToWake < *pxPreviousWakeTime ) &&( xTimeToWake > xConstTickCount ) ){xShouldDelay = pdTRUE;/* 标记因为溢出,需要做相应的处理 */}else{mtCOVERAGE_TEST_MARKER();}}else{/* 系统时钟节拍计数器没有溢出,* 但是下一次阻塞超时时间溢出了,* 并且下一次阻塞超时时间大于系统时钟节拍计数器的值时,* 需要做相应的溢出处理*/if( ( xTimeToWake < *pxPreviousWakeTime ) ||( xTimeToWake > xConstTickCount ) ){             xShouldDelay = pdTRUE; /* 标记因为溢出,需要做相应的溢出处理 */}else{mtCOVERAGE_TEST_MARKER();}}/* 更新上一次阻塞超时时间为下一次阻塞超时时间 */*pxPreviousWakeTime = xTimeToWake;/* 根据标记,做相应的溢出处理 */if( xShouldDelay != pdFALSE ){/* 用于调试,不用理会 */traceTASK_DELAY_UNTIL( xTimeToWake );/* 将任务添加到阻塞态任务列表中 */prvAddCurrentTaskToDelayedList( xTimeToWake - xConstTickCount,pdFALSE );}else{mtCOVERAGE_TEST_MARKER();}}/* 恢复任务调度器运行,* 调用此函数会返回是否需要进行任务切换*/xAlreadyYielded = xTaskResumeAll();/* 根据标志进行任务切换 */if( xAlreadyYielded == pdFALSE ){portYIELD_WITHIN_API();}else{mtCOVERAGE_TEST_MARKER();} return xShouldDelay;
}
#endif /* INCLUDE_xTaskDelayUntil */

不知道你们有没有想过为什么是 xTaskDelayUntil() 而不是 vTaskDelayUntil(),我在tasks.c文件中找到

延时函数演示实验

学习 FreeRTOS 相对延时和绝对延时API 函数的使用,并了解其区别

实验设计:

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

三个任务的功能如下:

  • start_task:用来创建其他的2个任务
  • task1:用于展示相对延时函数vTaskDelay ( )的使用
  • task2:用于展示绝对延时函数vTaskDelayUntil( )的使用

 其他部分代码如有需要可参考上一篇博文

 FreeRTOS 任务相关API函数

//用于展示相对延时函数vTaskDelay ( )的使用
void task1(void * pvParameters)
{while(1){LED0_TOGGLE();delay_ms(10);vTaskDelay(500);}}//用于展示绝对延时函数vTaskDelayUntil( )的使用
void task2(void * pvParameters)
{TickType_t xLastWakeTime = xTaskGetTickCount();while(1){LED1_TOGGLE();	delay_ms(10);xTaskDelayUntil(&xLastWakeTime,500);}
}

 现象

注意:

可能会出现任务一在延时时,任务2在运行,但是在任务1解除延时时候任务2刚好在死延时,因为优先级原因所以任务1运行不了代表任务1不止延时了510ms。

http://www.hkea.cn/news/975672/

相关文章:

  • 江苏 网站备案百度贴吧官网app下载
  • 网站制作三站湖南网站seo公司
  • 简单做任务赚钱网站企业管理培训课程报名
  • 零点研究咨询集团官方网站建设相似图片在线查找
  • 网站开发需要什么软件关键词app
  • 360全景网站建设做了5天游戏推广被抓了
  • 政府网站建设经验典型材料河源今日头条新闻最新
  • 为什么要进行网站备案佛山市人民政府门户网站
  • 摄影网站开发背景百度app交易平台
  • 吉林网站建设石家庄百度快照优化排名
  • 大学生网站开发总结报告app推广接单发布平台
  • 自己做的网站怎么推广seo顾问培训
  • 怎么做业务网站百度搜索提交入口
  • 网页设计网站图片西安百度推广运营公司
  • 济南网站开发推广网络服务包括
  • 五星级酒店网站建设关键词歌词表达的意思
  • 浙江高端建设网站网站关键词如何优化
  • 2017网站开发工程师五合一网站建设
  • 学编程的孩子有什么好处seo网站诊断文档案例
  • 广州中新知识城开发建设网站无锡百姓网推广
  • 宝鸡做网站费用关键词你们懂的
  • wordpress 仿站 教程百度竞价点击一次多少钱
  • 做h的游戏 迅雷下载网站百度推广管家
  • 营销型网站建设的目的外贸网站平台都有哪些 免费的
  • 广东做网站公司广州从化发布
  • 能发外链的网站国际新闻今天最新消息
  • 做软件的网站关键词优化快速排名
  • 网站建设与管理简介网站链接交易
  • 英文网站建设教程网盘资源搜索神器
  • 做旅游网站的引言最新网络推广平台