FreeRTOS
1.在freertos的任务中使用HAL_Delay()函数,不会使任务进入阻塞状态,而是任务一直在运行,这会导致CPU负荷的增加,降低任务调度的及时性。
所以,在实际应用的具体实现方案两种:
第一种:
1 | void AppTask_LED1(void *argument) |
使用vTaskDelay()函数来实现延时的功能,它可以让任务进入阻塞状态,让出CPU的使用权。
缺点:时间存在微小误差

第二种:
执行时通过vTaskDelayUntil()函数获取滴答信号的当前计数值,作为previousWakeTime的初值
1 | void AppTask_LED1(void *argument) |
vTaskDelayUntil(&previousWakeTime, ticks1);表示从previousWakeTime值开始延时ticks1个节拍,函数内会自动更新previousWakeTime的值,也会自动处理滴答信号计数值溢出的情况。

All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
