freeRTOS 任务挂起和恢复

来源:互联网 发布:社工库软件 编辑:程序博客网 时间:2024/06/04 23:18

原本,看视频教程中,这个章节草草而过的,以为只是调用函数,带入句柄,就oK

实际操作过程中,想当然的以为 定义一个 TaskHandle_t * 类型使用。

结果并没有报错,却不能运行。等转过天才想到这两个定义地方一个是  TaskHandle_t * ,一个是 TaskHandle_t 。

BaseType_t xTaskCreate( TaskFunction_t pxTaskCode,
const char * const pcName,
const uint16_t usStackDepth,
void * const pvParameters,
UBaseType_t uxPriority,
TaskHandle_t * const pxCreatedTask ) PRIVILEGED_FUNCTION;

vid vTaskSuspend( TaskHandle_t xTaskToSuspend );


只是马虎不认真就出现了篓子。


然后 任务可以实现挂起和恢复,但是跟别人的效果不一样。别人的是从挂起位置继续运行,我的也是,但是我的是一下子执行很多次,把没有执行的补回来。

思考下原因。

这个问题出在了 vTaskDelayUntil();上,

目前实验结果看,当 suspend执行后,任务挂起了,但是当resume后挂起的任务会补上挂起过程中没有执行的次数。

当使用 vTaskDelay();后,

实验结果是,恢复后的任务从挂起前开始执行。并不会补回。



原创粉丝点击