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