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

电子科技东莞网站建设互联网行业最有前景的十大职业

电子科技东莞网站建设,互联网行业最有前景的十大职业,国外人像摄影网站,如何利用微信进行企业网站推广两个Delay函数有两个延时函数vTaskDelay#xff1a;至少等待指定个数的Tick Interrupt才能变为就绪态xTaskDelayUtil#xff1a;等待到指定的绝对时刻#xff0c;才能变为就绪态个人感觉这两个延时函数就是#xff0c;比如一个我等3个小时#xff0c;一个是我等到下午3点的…两个Delay函数有两个延时函数vTaskDelay至少等待指定个数的Tick Interrupt才能变为就绪态xTaskDelayUtil等待到指定的绝对时刻才能变为就绪态个人感觉这两个延时函数就是比如一个我等3个小时一个是我等到下午3点的区别。两个函数的原型如下vTaskDelay:void vTaskDelay( const TickType_t xTicksToDelay ){BaseType_t xAlreadyYielded pdFALSE;/* A delay time of zero just forces a reschedule. */if( xTicksToDelay ( TickType_t ) 0U ){configASSERT( uxSchedulerSuspended 0 );vTaskSuspendAll();{traceTASK_DELAY();/* A task that is removed from the event list while the* scheduler is suspended will not get placed in the ready* list or removed from the blocked list until the scheduler* is resumed.** This task cannot be in an event list as it is the currently* executing task. */prvAddCurrentTaskToDelayedList( xTicksToDelay, pdFALSE );}xAlreadyYielded xTaskResumeAll();}else{mtCOVERAGE_TEST_MARKER();}/* Force a reschedule if xTaskResumeAll has not already done so, we may* have put ourselves to sleep. */if( xAlreadyYielded pdFALSE ){portYIELD_WITHIN_API();}else{mtCOVERAGE_TEST_MARKER();}} xTaskDelayUtil 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();{/* Minor optimisation. The tick count cannot change in this* block. */const TickType_t xConstTickCount xTickCount;/* Generate the tick time at which the task wants to wake. */xTimeToWake *pxPreviousWakeTime xTimeIncrement;if( xConstTickCount *pxPreviousWakeTime ){/* The tick count has overflowed since this function was* lasted called. In this case the only time we should ever* actually delay is if the wake time has also overflowed,* and the wake time is greater than the tick time. When this* is the case it is as if neither time had overflowed. */if( ( xTimeToWake *pxPreviousWakeTime ) ( xTimeToWake xConstTickCount ) ){xShouldDelay pdTRUE;}else{mtCOVERAGE_TEST_MARKER();}}else{/* The tick time has not overflowed. In this case we will* delay if either the wake time has overflowed, and/or the* tick time is less than the wake time. */if( ( xTimeToWake *pxPreviousWakeTime ) || ( xTimeToWake xConstTickCount ) ){xShouldDelay pdTRUE;}else{mtCOVERAGE_TEST_MARKER();}}/* Update the wake time ready for the next call. */*pxPreviousWakeTime xTimeToWake;if( xShouldDelay ! pdFALSE ){traceTASK_DELAY_UNTIL( xTimeToWake );/* prvAddCurrentTaskToDelayedList() needs the block time, not* the time to wake, so subtract the current tick count. */prvAddCurrentTaskToDelayedList( xTimeToWake - xConstTickCount, pdFALSE );}else{mtCOVERAGE_TEST_MARKER();}}xAlreadyYielded xTaskResumeAll();/* Force a reschedule if xTaskResumeAll has not already done so, we may* have put ourselves to sleep. */if( xAlreadyYielded pdFALSE ){portYIELD_WITHIN_API();}else{mtCOVERAGE_TEST_MARKER();}return xShouldDelay;} 下面是图示使用vTaskDelay(n)时进入退出vTaskDelay的时间间隔至少是n个Tick中断使用xTaskDelayUtil(Pre,n)时前后两次退出xTaskDelayUntil的时间至少是n个Tick中断退出xTaskDelayUntil时任务就进入就绪态一般都能得到执行机会所以可以使用xTaskDelayUntil来让任务周期性的运行实验证明程序创建2个任务Task1高优先级设置变量flag为1然后调用vTaskDelay(xDelay50ms)或vTaskDelayUntil(xLastWakeTime,xDelay50ms)Task2:低优先级设置变量flag0main函数代码如下int main(void) {prvSetupHardware();/*Task1的优先级更高Task1先执行*/xTaskCreate(vTask1,Task1,1000,NULL,2,NULL);xTaskCreate(vTask2,Task2,1000,NULL,1,NULL);/*启动调度器*/vTaskStartScheduler();/*如果程序运行到这里就表示出错了一般是内存不足*/return 0;}Task1的代码中使用条件开关来选择Delay函数把#if 1 改为 #if 0 就可以使用vTaskDelayUntil代码如下void vTask1(void *pvParameters) {const TickType_t xDelay50ms pdMS_TO_TICKS(50UL);TickType_t xLastWakeTime;int i;/*获得当前的Tick Count*/xLastWakeTime xTaskGetTickCount();for(;;){flag 1;/*故意加入多个循环让程序运行时间长一点*/for(i0;i5;i)printf(Task1 is running\r\n); #if 1vTaskDelay(xDelay50ms); #else vTaskDelayUntil(PreWakeTime,xDelay50ms);} }使用MDK的逻辑分析仪可以观察flag变量的bit波形如下flag为1时表示Task1正在运行flag为0时表示Task2正在运行也就是Task1处于阻塞状态vTaskDelay指定的是阻塞时间vTaskDelayUntil指定的是任务执行的间隔周期
http://www.hkea.cn/news/14326612/

相关文章:

  • 空港经济区内的建设工程网站西安建站套餐
  • 南宁重大项目签约厦门关键词优化seo
  • 网站建设 提成浠水做网站的
  • 婚庆网站开发的意义网站空间后台登录
  • 深圳单位网站建设服务公司网站和平台是一个意思吗
  • 建设 静态网站企业形象网站模板
  • 简单的seo网站优化排名wordpress整合vip解析
  • 长沙手机app网站开发wordpress页面构建
  • 西安定制网站网站建设尺寸像素是多少钱
  • 东莞原创设计院官网公司关键词seo
  • 做计划网站最好看的2018中文在线观看
  • 网站制作软件下载asp网站开发软件
  • 网站开发公司广告文案wordpress 显示空白
  • 天津做个网站需要多少钱怎么样才能找到网站后台网址
  • 用vs2013做网站昆明优化公司
  • 广州手机网站设计优秀企业网站制作
  • 优秀自适应网站建设哪家好网站使用帮助内容
  • 阿里云网站建设 部署与发布答案网页框架与布局
  • 中国八大设计院排名seort什么意思
  • 精品课程网站怎么做王占山战斗英雄
  • 关于加强内网网站建设的通知不会编程怎样建设网站
  • 公司网站兰州建设需要多少钱公司招聘网站有哪些
  • 软件工程是干什么的百度推广优化排名
  • 怎么给企业制作网站专题类响应式网站建设
  • 建设银行互联网网站wordpress ddos攻击
  • 南京企业网站设计制作网站怎么做seo、
  • 无锡富通电力建设有限公司网站全国知名vi设计公司
  • 哈尔滨做网站价格百度seo2022
  • 建设中网站首页长沙软件开发
  • 平顶山建设网站宁海做网站