创建FreeRTOS工程

通过官方示例工程创建

在官网下载的FreeRTOS文件中,每个FreeRTOS端口都至少有一个预配置的演示应用程序,该工程的构建应该没有错误或警告(但版本肯能会旧一些)。建议通过调整这些现有工程中的一个来创建新的工程。这将保证工程包含正确的文件,有正确的中断处理程序,以及设置了正确的编译器选项。

要从现有示例工程中构建新的工程:

  1. 在对应的开发环境下打开所提供的示例工程,并编译一次确保它在当前环境下按照预期进行构建和执行。
  2. 删除用来演示任务的源文件。任何位于 Demo/Common 中的文件都可以从工程中删除。
  3. 删除main()中的所有函数调用,除了prvSetupHardware() 和 vTaskStartScheduler()。
  4. 检查工程是否还能正常编译。
按照这些步骤将创建一个包含正确的FreeRTOS源文件的工程,但不定义任何功能。
int main( void )
{
 /* 执行任何必要的硬件设置。 */
 prvSetupHardware();
 /* --- 可以在这里创建应用程序任务 --- */
 
 /* 启动创建的任务。 */
 vTaskStartScheduler();
 
 /* 只有在没有足够的堆空间来启动调度程序时,才会执行下面的代码。 */
 for( ;; );
 return 0;
}

从头开始创建一个新的FreeRTOS工程

如前所述,建议从现有的示例工程中创建新的工程。如果不需要这样做,则可以使用以下过程创建一个新工程:

  1. 使用所自己选择的工具链,创建一个尚未包含任何FreeRTOS源文件的新工程。
  2. 确保可以新项目可以正常编译、下载到目标硬件并执行。
  3. 只有当我们确定已经有了一个可以正常工作的工程时,才能将下表中详细说明的FreeRTOS源文件添加到该工程中。
  4. 将为正在使用的端口提供的示例工程所使用的FreeRTOSConfig.h头文件复制到工程目录中。
  5. 将以下路径添加到工程的搜索路径中,以查找头文件:
    FreeRTOS/Source/include
    
    FreeRTOS/Source/portable/[compiler]/[architecture] 
    (其中[compiler] 和[architecture]名称对应于我们自己选择的编译器和处理器架构)
    
    包含FreeRTOSConfig.h头文件的路径
  6. 从相关的示例工程中复制编译器设置。
  7. 编写或复制任何可能是必要的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章,堆的内存管理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值