0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FreeRTOS_006_FreeRTOSConfig.h配置文件 (三)

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-03-14 11:10 次阅读

写在前面

关于FreeRTOSConfig.h配置文件里面的内容除了“通用配置”之外,其他配置的内容初学者用的相对较少,理解起来也相对难一点。为了让初学者有一个大概的了解,本文依然继续讲述关于FreeRTOSConfig.h配置的内容,后期会结合应用更进一步讲述关于FreeRTOSConfig.h的内容。

TIMERS配置

TIMER即定时器,在RTOS中的TIMER属于软件定时。FreeRTOS的定时器精度不高,会随着定时的增加而改变,特别是TIMER任务优先级较低,高优先级占用资源的情况下。

若要使用高精度的定时,还是最后使用硬件的定时器(现在处理器一般都有多个硬件TIMER)。

1.configUSE_TIMERS

是否使用软件定时器

配置为0:不使用

配置为1:使用

其他许多相关的功能都需要结合该配置才能使用,使用时需要注意是否关联。

2.configTIMER_TASK_PRIORITY

软件定时器任务优先级

软件定时器其实也是需要创建一个任务,创建方式和我们常规的一样,只是它是有系统内核完成,不用我们自己写创建任务代码。

这里的这个优先级就是定时器任务的优先级。

3.configTIMER_QUEUE_LENGTH

软件定时器命令队列长度

关于TIMER的命令队列牵涉的知识相对复杂点,后期进一步讲述,可看下图:

4.configTIMER_TASK_STACK_DEPTH

分配给软件定时器的堆栈空间

CO_ROUTINES配置

CO_ROUTINES这个不好翻译,网上都叫协同程序,或者合作程序,理解为协同一起使用的程序,后期结合应用讲述。

1.configUSE_CO_ROUTINES

是否使用CO_ROUTINES

配置为0:不使用

配置为1:使用

2.configMAX_CO_ROUTINE_PRIORITIES

CO_ROUTINE优先级

MEMORY配置

内存分配相关的配置,这里的配置与heap_x.c有关,后面会再次进行讲述。

1.configSUPPORT_STATIC_ALLOCATION

是否支持静态分配

配置为0:不支持

配置为1:支持

2.configSUPPORT_DYNAMIC_ALLOCATION

是否支持动态分配

配置为0:不支持

配置为1:支持

3.configTOTAL_HEAP_SIZE

分配给系统的堆栈

创建任务,堆栈,静态、动态都分配的内存都来自这里。

4.configAPPLICATION_ALLOCATED_HEAP

APP使用哪里分配的堆

配置为0:使用系统分配的堆

配置为1:使用外部分配的堆

默认使用系统分配的堆,见下面定义:

#if(configAPPLICATION_ALLOCATED_HEAP == 1 )

extern uint8_t ucHeap[configTOTAL_HEAP_SIZE];

#else

static uint8_t ucHeap[configTOTAL_HEAP_SIZE];

#endif

RUN_TIME_STATS配置

运行时信息统计配置

1.configGENERATE_RUN_TIME_STATS

是否生成统计信息

配置为0:否

配置为1:是

2.configUSE_TRACE_FACILITY

是否协助执行可视化和跟踪

配置为0:否

配置为1:是

这里会添加额外的结构体来实现。

3.configUSE_STATS_FORMATTING_FUNCTIONS

是否统计相关的功能

配置为0:否

配置为1:是

设置宏configUSE_TRACE_FACILITY和configUSE_STATS_FORMATTING_FUNCTIONS为1会编译vTaskList()和vTaskGetRunTimeStats()函数。如果将这两个宏任意一个设置为0,上述两个函数不会被编译。

其他配置

这里简单综合讲述一下各项配置

1.configASSERT

断言配置

2.Interrupt相关

configKERNEL_INTERRUPT_PRIORITY:内核中断优先级

configMAX_SYSCALL_INTERRUPT_PRIORITY:系统调用最大的优先级

configMAX_API_CALL_INTERRUPT_PRIORITY:API调用的最大优先级

这一节与(Cortex)内核硬件中断有关。

3.INCLUDE配置

#define INCLUDE_vTaskPrioritySet 1

#define INCLUDE_uxTaskPriorityGet 1

#define INCLUDE_vTaskDelete 1

这里很好理解,是否包含这一些内容,在UCOS中比较常见。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 定时器
    +关注

    关注

    23

    文章

    3146

    浏览量

    112011
  • FreeRTOS
    +关注

    关注

    12

    文章

    473

    浏览量

    61337
  • config
    +关注

    关注

    0

    文章

    15

    浏览量

    4562
收藏 人收藏

    评论

    相关推荐

    labview的opc生成配置文件

    的数据交互和通信。在 LabVIEW 中生成 OPC 配置文件有助于实现与其他设备的数据传输和共享,本文将详细介绍如何生成 OPC 配置文件。 首先,在 LabVIEW 中生成 OPC 配置文件,我们
    的头像 发表于 12-26 17:57 555次阅读

    oracle配置文件类型关联

    Oracle是一种业界领先的关系型数据库管理系统,它在大型企业中被广泛使用。Oracle的配置文件对于数据库的稳定运行和性能优化至关重要。在这篇文章中,我们将详细讨论Oracle的一些重要配置文件
    的头像 发表于 12-06 10:17 218次阅读

    php的配置文件是什么

    PHP的配置文件是一种用于配置PHP解释器的文本文件。它包含了一系列的指令和选项,用于影响PHP的行为和性能。通过修改配置文件,可以改变PHP解释器的默认行为,从而满足不同的需求。 在
    的头像 发表于 12-04 15:55 775次阅读

    zookeeper的核心配置文件是什么

    Zookeeper是一个常用的分布式协调服务,它被广泛应用于大型分布式系统中。Zookeeper的核心配置文件是zoo.cfg,它包含了Zookeeper服务器的各种配置参数,可以通过修改这些参数
    的头像 发表于 12-04 10:33 263次阅读

    springboot的核心配置文件有哪些

    的工作量。 Spring Boot的核心配置文件主要有以下几个: application.properties:Spring Boot应用程序的主要配置文件。它使用Java的键值对格式来定义各种配置属性
    的头像 发表于 12-03 15:30 532次阅读

    springboot的全局配置文件有几种

    Spring Boot是一种快速开发框架,其通过提供配置文件来实现对应用程序的配置。全局配置文件在Spring Boot中起着非常重要的作用,可以用于配置各种不同的属性,包括数据库连接
    的头像 发表于 12-03 15:28 461次阅读

    linux修改网卡ip配置文件

    Linux是一种开源的操作系统,因此,它给用户提供了很高的自由度,可以根据个人需要进行各种定制和配置。其中,修改网络接口配置文件是常见的操作,可以通过修改网卡ip配置文件来设置网络接口的IP地址
    的头像 发表于 11-17 10:51 1207次阅读

    KT142C语音芯片配置文件总是不起作用?配置文件的问题集中归纳

    KT142C语音芯片配置文件总是不起作用?配置文件的问题集中归纳
    的头像 发表于 10-20 15:04 275次阅读
    KT142C语音芯片<b class='flag-5'>配置文件</b>总是不起作用?<b class='flag-5'>配置文件</b>的问题集中归纳

    配置文件选择器的蓝牙秒表

    电子发烧友网站提供《带配置文件选择器的蓝牙秒表.zip》资料免费下载
    发表于 07-13 09:16 0次下载
    带<b class='flag-5'>配置文件</b>选择器的蓝牙秒表

    自定义蓝牙低功耗配置文件

    自定义蓝牙低功耗配置文件
    发表于 07-06 19:24 0次下载
    自定义蓝牙低功耗<b class='flag-5'>配置文件</b>

    教程 3:自定义配置文件 gatt cmd 示例

    教程 3:自定义配置文件 gatt cmd 示例
    发表于 07-06 18:50 0次下载
    教程 3:自定义<b class='flag-5'>配置文件</b> gatt cmd 示例

    教程 2:添加特征-自定义配置文件创建

    教程 2:添加特征 - 自定义配置文件创建
    发表于 07-06 18:50 0次下载
    教程 2:添加特征-自定义<b class='flag-5'>配置文件</b>创建

    教程 3:构建自定义配置文件

    教程 3:构建自定义配置文件
    发表于 07-06 18:49 0次下载
    教程 3:构建自定义<b class='flag-5'>配置文件</b>

    教程 2:自定义配置文件示例

    教程 2:自定义配置文件示例
    发表于 07-04 20:50 0次下载
    教程 2:自定义<b class='flag-5'>配置文件</b>示例

    基于libconfig进行配置文件解析

    本文介绍基于libconfig进行配置文件解析
    的头像 发表于 06-08 10:18 825次阅读
    基于libconfig进行<b class='flag-5'>配置文件</b>解析