记录关于FreeRTOS系统的移植(基于Stm32) 【二】

  • Post author:
  • Post category:其他



主要记录config.h文件里面的内容


#include开始的宏以及config

在这里插入图片描述

点开FreeRTOS.h 发现它的宏定义都是以config开头

“config” 开始的宏和”include”开始的宏一样,都是用来完成Freertos的配置和裁剪的,如:

configCPU_CLOCK_HZ

表示,配置CPU的频率

使能的意思

在这里插入图片描述

  1. configUSE_PREEMPTION

    调度模式配置

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

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


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

  1. configCPU_CLOCK_HZ

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

    如:STM32F407主频为168M:

    #define configCPU_CLOCK_HZ (168000000)
  2. configTICK_RATE_HZ

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

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

比如:

#define configTICK_RAYE_HZ (1000)

则:

vTaskDelay(1000),表示延时1S

  1. configMAX_PRIORITIES

    系统最大优先级值

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

    xTaskCreate(vApp Task1,“Task1”,TASK1_STACK_SIZE,NULL,

    TASK1_PRIORITY

    ,NULL);

提示:

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

b. FreeRTOS中优先级

数值越大



优先级越高

。而UCOS则相反

  1. configMINIMAL_STACK_SIZE

    最小堆栈值

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

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

  2. configTOTAL_HEAP_SIZE

    系统总共堆(栈)大小

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

  3. configMAX_TASK_NAME_LEN

    任务名称最大长度

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

    xTaskCreate(vApp Task1,“

    Task1

    ”,TASK1_STACK_SIZE,NULL,TASK1_PRIORITY,NULL);

  4. configUSE_16_BIT_TICKS

    是否使用16位滴答计数值

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

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

  5. configIDLE_SHOULD_YIELD

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

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

    配置为0:不放弃抢占;

    配置为1:放弃抢占;

  6. configUSE_MUTEXES(*)

    是否使用互斥锁

    配置为0:不使用

    配置为1:使用

    **

    提示

    :**互斥锁也叫互斥信号量,也就是说对资源加锁。它的作用是实现多任务间共享资源的独占式处理。简答来说,就是某个资源在同一时刻只允许一个任务处理。

  7. configUSE_RECURSIVE_MUTEXES 是否使用递归锁

  8. configUSE_COUNTING_SEMAPHORES 是否使用信号量计数功能

  9. configQUEUE_REGISTRY_SIZE (*)可添加队列名的数量

  10. configUSE_QUEUE_SETS(*)

    是否使用消息队列 “SET” 功能

  11. configUSE_TIME_SLICING (*)

    是否使用时间片进行调度

更多见链接 https://blog.csdn.net/ybhuangfugui/article/details/77609473?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163196979016780269830870%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=163196979016780269830870&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2

blog

first_rank_v2~rank_v29-5-77609473.pc_v2_rank_blog_default&utm_term=FreeRTOS_004_FreeRTOSConfig.h%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6&spm=1018.2226.3001.4450

https://blog.csdn.net/ybhuangfugui/article/details/77745156?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163196979016780269830870%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=163196979016780269830870&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2

blog

first_rank_v2~rank_v29-4-77745156.pc_v2_rank_blog_default&utm_term=FreeRTOS_004_FreeRTOSConfig.h%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6&spm=1018.2226.3001.4450



版权声明:本文为m0_52399529原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。