通过官方示例工程创建
在官网下载的FreeRTOS文件中,每个FreeRTOS端口都至少有一个预配置的演示应用程序,该工程的构建应该没有错误或警告(但版本肯能会旧一些)。建议通过调整这些现有工程中的一个来创建新的工程。这将保证工程包含正确的文件,有正确的中断处理程序,以及设置了正确的编译器选项。
要从现有示例工程中构建新的工程:
- 在对应的开发环境下打开所提供的示例工程,并编译一次确保它在当前环境下按照预期进行构建和执行。
- 删除用来演示任务的源文件。任何位于 Demo/Common 中的文件都可以从工程中删除。
- 删除main()中的所有函数调用,除了prvSetupHardware() 和 vTaskStartScheduler()。
-
检查工程是否还能正常编译。
按照这些步骤将创建一个包含正确的FreeRTOS源文件的工程,但不定义任何功能。
int main( void )
{
/* 执行任何必要的硬件设置。 */
prvSetupHardware();
/* --- 可以在这里创建应用程序任务 --- */
/* 启动创建的任务。 */
vTaskStartScheduler();
/* 只有在没有足够的堆空间来启动调度程序时,才会执行下面的代码。 */
for( ;; );
return 0;
}
从头开始创建一个新的FreeRTOS工程
如前所述,建议从现有的示例工程中创建新的工程。如果不需要这样做,则可以使用以下过程创建一个新工程:
- 使用所自己选择的工具链,创建一个尚未包含任何FreeRTOS源文件的新工程。
- 确保可以新项目可以正常编译、下载到目标硬件并执行。
- 只有当我们确定已经有了一个可以正常工作的工程时,才能将下表中详细说明的FreeRTOS源文件添加到该工程中。
- 将为正在使用的端口提供的示例工程所使用的FreeRTOSConfig.h头文件复制到工程目录中。
- 将以下路径添加到工程的搜索路径中,以查找头文件:
FreeRTOS/Source/include FreeRTOS/Source/portable/[compiler]/[architecture] (其中[compiler] 和[architecture]名称对应于我们自己选择的编译器和处理器架构) 包含FreeRTOSConfig.h头文件的路径
- 从相关的示例工程中复制编译器设置。
- 编写或复制任何可能是必要的FreeRTOS中断处理程序。使用描述正在使用的端口的网页,以及为正在使用的端口提供的示例工程作为参考。网页如下:
FreeRTOSv202112.00\FreeRTOS\links_to_doc_pages_for_the_demo_projects
要包含在工程中的FreeRTOS源文件、
文件 | 位置 |
tasks.c
|
FreeRTOS/Source
|
queue.c
|
FreeRTOS/Source
|
list.c
|
FreeRTOS/Source
|
timers.c
| FreeRTOS/Source |
event_groups.c
|
FreeRTOS/Source
|
所有C和汇编程序文件 |
FreeRTOS/Source/portable/[compiler]/[architecture]
|
heap_n.c
|
FreeRTOS/Source/portable/MemMang,n为1~5,这个文件从FreeRTOS V9.0.0开始成为可选的了。
|
使用早于V9.0.0的FreeRTOS版本的项目必须构建一个heap_n.c文件。在FreeRTOS V9.0.0中,只有在FreeRTOSConfig.h中将configSUPPORT_DYNAMIC_ALLOCATION设置为1或configSUPPORT_DYNAMIC_ALLOCATION未定义时才需要一个heap_n.c文件。有关更多信息,请参阅官方参考手册的第2章,堆的内存管理。