我是RTOS的新手,在freeRTOS中学习一些演示代码时,我发现了xtaskcreate函数。我知道,当一个函数被调用时,它的函数体应该在代码中的某个位置。当我引用task.c文件时,没有找到任何xtaskcreate函数体。有人能解释一下xtaskcreate函数体在哪里吗?如果没有,那么它是如何执行的。
它在文件Source/tasks.c
第595行附近定义(FreeRTOS v9.0.0rc2)。
但如果不定义SUPPORT_DYNAMIC_ALLOCACTION
,就不会定义xTaskCreate
。
这取决于您使用的FreeRTOS版本。
最新的V9.0.0rc2将xTaskCreate()和xTaskCreateStatic()作为tasks.c中的独立函数。有些版本将这两个调用都定义为宏,每个宏都调用xTaskGenericCreate(),并为所需行为设置适当的参数(向最终用户隐藏复杂性)。
在这两种情况下都很容易发现。函数名称前面的"Task"告诉原型在tasks.h中,所以只需在该文件中搜索xTaskCreate(),看看它是直接函数调用还是调用另一个函数的宏,然后可以在tasks.c.