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

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

3天内不再提示

FreeRTOS_004_FreeRTOSConfig.h配置文件 (一)

黄工的嵌入式技术圈 来源:网站整理 2020-03-14 11:18 次阅读

写在前面

上一篇我文章提供大家可直接运行的代码,如果测试过的朋友应该知道,想要FreeRTOS运行起来其实很简单,不用修改很多代码和配置信息,就可以将FreeRTOS添加到自己的工程中并成功跑起来。

从本文开始讲述FreeRTOS中的代码,为了照顾大部分朋友,还是以简单,基础为原则。

FreeRTOS中“FreeRTOSConfig.h”配置的内容随着版本(功能)的增加而增加,也就是说随着系统功能的增加,对应需要的配置信息也响应增加了。但是系统为了兼容之前的代码,系统自身做了兼容处理。

比如:configUSE_QUEUE_SETS是属于“FreeRTOSConfig.h”中定义的选项,如果用户没有定义,则在“FreeRTOS.h”中有类似如下定义。

#ifndefconfigUSE_QUEUE_SETS

#defineconfigUSE_QUEUE_SETS0

#endif

开始设计FreeRTOS系统时,工程师们肯定会想到,要尽量减少开发者的开发难度。我们初学移植FreeRTOS时,“FreeRTOSConfig.h”中的大部分配置都选择默认即可。只有后期熟悉了,开发需要使用较多功能的时候,里面各项的配置就必须要熟透。

对英文不反感的朋友建议参考官网的内容,毕竟官网的资料才是最权威的。

官网地址:

http://www.freertos.org/a00110.html

从官网提供的资料,可以看得出“FreeRTOSConfig.h”将配置信息划分为10大类,但是很多配置信息我们都可以选择不用(或者不定义)。

微信公众号中技术文章篇幅不易过长,本文针对初学者,先讲述通用的配置。

通用配置

这一章也叫基本配置,反正就是需要我们定义的一些配置,也是比较重要的配置。

1.configUSE_PREEMPTION

调度模式配置

配置为0:合作式调度,即时间片轮流执行;

配置为1:抢占式调度,即优先级高的任务抢先执行;

由于我们要求实时响应,就配置为1,使用抢占式调度方式。否则就发挥不到实时操作系统的作用。

2.configCPU_CLOCK_HZ

CPU时钟,就是我们常说的主频。注意:单位是Hz。

如:STM32F407主频为168M:

#define configCPU_CLOCK_HZ (168000000)

3.configTICK_RATE_HZ

系统滴答,即系统每秒钟滴答的次数,可以说是系统的心跳,但需要和主频区分开来。系统滴答的值要根据CPU主频来看,一般主频越高,取值相对越大,一般在100至1000之间。

简单举例:系统滴答决定vTaskDelay。

比如:

#define configTICK_RATE_HZ (1000)

则:

vTaskDelay(1000),表示延时1S。

4.configMAX_PRIORITIES

系统最大优先级值

我们创建任务是,配置的优先级值不能超过这个最大值。

xTaskCreate(vAppTask1, "Task1", TASK1_STACK_SIZE, NULL,TASK1_PRIORITY, NULL);

提示:

a.系统优先级和中断优先级原理类似,高优先级的会抢在低优先级的前面,但需要区分系统和中断优先级的应用场景。

b.FreeRTOS中优先级数值越大,优先级越高。而UCOS则相反。

5.configMINIMAL_STACK_SIZE

最小堆栈值

在系统中,一般用于空闲、定时等一些系统任务中,当然,我们有些地方也可以使用这个定义的堆栈值。

注意数值的单位,一般在ARM中为4个字节。

6.configTOTAL_HEAP_SIZE

系统总共堆(栈)大小

我们需要根据需要使用的情况定义这个值。不能定义太小,太小内存容易溢出;也不能定义太大,有些芯片RAM本身就不大(有些就只有几K),如果太大我们就没法定义太多全局变量,或分配其他堆栈空间。

7.configMAX_TASK_NAME_LEN

任务名称最大长度

也就是创建任务定义任务名称的字符串长度

xTaskCreate(vAppTask1, "Task1", TASK1_STACK_SIZE, NULL, TASK1_PRIORITY, NULL);

提示:结束符 '\0'也包含在内。

8.configUSE_16_BIT_TICKS

是否使用16位滴答计数值

配置为0:则使用32位的滴答计数值,一般在32位处理器中都是配置为0;

配置为1:则使用16位的滴答计数值,一般8位或者16位处理器中配置为1。

9.configIDLE_SHOULD_YIELD

是否让空闲任务“放弃”抢占

也就是说在执行与空闲任务相同优先级的任务过程中,空闲任务是否具有抢占的机会。

配置为0:不放弃抢占;

配置为1:放弃抢占;

10.configUSE_MUTEXES

是否使用互斥锁

配置为0:禁能

配置为1:使能

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

    关注

    68

    文章

    10409

    浏览量

    206459
  • FreeRTOS
    +关注

    关注

    12

    文章

    473

    浏览量

    61336
  • config
    +关注

    关注

    0

    文章

    15

    浏览量

    4562
收藏 人收藏

    评论

    相关推荐

    labview的opc生成配置文件

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

    oracle配置文件类型关联

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

    php的配置文件是什么

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

    zookeeper的核心配置文件是什么

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

    springboot的核心配置文件有哪些

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

    springboot的全局配置文件有几种

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

    linux修改网卡ip配置文件

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

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

    KT142C语音芯片配置文件总是不起作用?配置文件的问题集中归纳
    的头像 发表于 10-20 15:04 268次阅读
    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 818次阅读
    基于libconfig进行<b class='flag-5'>配置文件</b>解析