freertos任务外的学习笔记


2022/6/7

1. 动态分配内存时,TCB、TaskStack这些空间,都由pvPortMalloc分配空间,该函数根据选择的堆策略,分配合适的block,返回这个

block的地址(空指针)。

2. xTaskDelayUntil( TickType_t * const pxPreviousWakeTime,const TickType_t xTimeIncrement )函数,(注意前者参数是指针)

实际调用了:prvAddCurrentTaskToDelayedList( xTimeToWake - xConstTickCount, pdFALSE );

它有很长一段代码是判断滴答计数器和唤醒时间有没有溢出的,余下的代码思路就是,

xTimeIncrement 变量作为该任务的运行周期,但由于其他任务和本体任务的运行要占用时间,

所以仅仅使用delay时,是忽略了任务(自身和其他)执行时间的,当任务执行时间很长时,实际延时就不是传入的参数了;

结论:在任务主体代码多、运行时间长时,想要周期性调度的话,还是用 vTaskDelayUntil

2022/6/8

3. 内存分配:

Tip:其实还是得自己实现一个分配内存的函数,了解使用动态分配的前后,对系统的作用、改变有多大。