FreeRTOS学习笔记 3 - 配置

FreeRTOS的配置文件是FreeRTOSConfig.h。有些宏定义可以不用定义,FreeRTOS会使用默认值,有些宏定义则必须配置好。

configUSE_PREEMPTION

    设置调度方式。设置1时为抢占式调度,优先级高的任务优先执行;设置0时为合作式调度,通过时间片轮流执行。

configUSE_IDLE_HOOK

设置是否支持空闲钩子函数。设置1时需要实现钩子函数void vApplicationIdleHook( void ),否则会编译错误。

configUSE_TICK_HOOK

设置是否支持时钟滴答钩子函数。设置1时需要实现钩子函数void vApplicationTickHook( void ),否则会编译错误。

configCPU_CLOCK_HZ

CPU主频,单位Hz。

configTICK_RATE_HZ

系统滴答,即系统每秒钟滴答的次数

configMAX_PRIORITIES

    系统最大优先级。FreeRTOS的优先级和RT Thread的优先级相反,数值越高优先级越高。为了保持一致性,在创建任务时将优先级做调整。

#define rtosCreateThread(                               \
    handle,     /*Thread Handle*/                       \
    name,       /*Thread Name*/                         \
    entry,      /*Thread Entry*/                        \
    parameter,  /*Thread Entry Parameter*/              \
    stack,      /*the pointer of stack*/                \
    stackSize,  /*the size of stack*/                   \
    priority,   /*Thread priority*/                     \
    tick        /*The total tick of thread running*/    \
    )                                                   \
    {                                                   \
        xTaskCreate(entry, name, stackSize, parameter,  \
            RTOS_PRIORITY_MAX - (priority) - 1,         \
            &handle);                                   \
    }

configMINIMAL_STACK_SIZE

    系统最小堆栈大小,单位是Word,ARM为4字节。这个配置是用于空闲、定时等一些系统任务。

configTOTAL_HEAP_SIZE

    系统总的堆大小,单位是4字节。

configMAX_TASK_NAME_LEN

    任务名字符串长度,包括结束符。

configUSE_TRACE_FACILITY

    可视化追踪功能,用于调试,比如获取CPU的使用率。

configUSE_16_BIT_TICKS

    设置时钟定时器计数位数,定义configUSE_16_BIT_TICKS为1时,位数为16位,反之为32位。一般情况下,8位或16位MCU设置为1,32位MCU设置为0。

configIDLE_SHOULD_YIELD

    设置空闲任务是否放弃抢占。在执行与空闲任务相同优先级的任务过程中,空闲任务是否具有抢占的机会,设置1时,当其他同优先级任务就绪时,空闲任务让出CPU,设置0时,空闲任务是在时间片到了才让出CPU。

configUSE_MUTEXES

    是否使用互斥锁。

configQUEUE_REGISTRY_SIZE

    定义可以记录的队列和信号量的最大数目,一般用于调试。

configCHECK_FOR_STACK_OVERFLOW

    设置堆栈是否检测溢出,设置为0表示不检查;设置为1,测试方法1,就是不断的检测任务堆栈指针是否指向有效空间,如果指向了无效空间的话就会调用钩子函数。 方法一的优点就是快!但是缺点就是不能检测所有的堆栈溢出;设置为2,测试方法2,在创建任务的时候会向任务堆栈填充一个已知的标记值0xA5,方法二会一直检测堆栈后面的几个 bytes(标记值)是否被改写,如果被改写的话就会调用堆栈溢出钩子函数,方法二比方法一要慢一些,但是对用户而言还是很快的!方法
二能检测到几乎所有的堆栈溢出, 但是也有一些情况检测不到,比如溢出值和标记值相同的时
候。

configUSE_RECURSIVE_MUTEXES

    是否使用递归互斥信号量。

configUSE_MALLOC_FAILED_HOOK

    是否开启动态内存申请失败的钩子函数:void vApplicationMallocFailedHook( void );

configUSE_APPLICATION_TASK_TAG

    是否为任务分配标签值,设置为1则使用vTaskSetApplicationTaskTag函数,分配的标签只对应用程序有用,内核不使用。

configUSE_COUNTING_SEMAPHORES

    是否使用计数器型信号量功能。

configGENERATE_RUN_TIME_STATS

    是否使用运行时间统计功能。

configUSE_TIMERS

    是否使用软件定时器

configTIMER_TASK_PRIORITY

    设置定时器任务优先级

configTIMER_QUEUE_LENGTH

     软件定时器命令队列长度

configTIMER_TASK_STACK_DEPTH

    设置定时器堆栈大小,单位是Word,ARM对应4字节,可以查看StackType_t的大小。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值