• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

freertos怎么把一个阻塞的任务设置成就绪状态

chenjunt 2020-04-25 浏览量:1563
freertos怎么把一个阻塞的任务设置成就绪状态
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
所有亮答 数量:2
  • 阻塞的任务一般是因为信号量或者锁等导致阻塞的,当它获得信号量或者锁之后就是就绪态了

  • 如果在一个任务运行结束时,所有任务都处于 就绪状态,那只有优先级最高的任务能运行。所以加入阻塞状态。
    voidvTaskDelay( porttickType   xTicksToDelay );
    xTicksToDelay——延迟多少个心跳周期。调用该延迟函数的任务将进入阻塞态,经延迟指定的心跳周期数后,再转移到就绪态。举个例子,当某个任务调用vTaskDelay( 100 )时,心跳计数值为10000,则该任务将保持在阻塞态,直到心跳计数计到10100。常数portTICK_RATE_MS 可以用来将以毫秒为单位的时间值转换为以心跳周期为单位的时间值。
    voidvTaskDelayUntil( portTickType * pxPreviousWakeTime portTickType xTimeIncrement);
    设定周期运行绝对时间,用来让任务周期运行的更精确,比使用 vTaskDelay 延迟精确

相关问题

问题达人换一批

freertos怎么把一个阻塞的任务设置成就绪状态