FREERTOS 官方配置文件FreeRTOSConfig.h 的宏定义分析

#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H

//配置内核调度方式  1为抢占式  0为合作式(时间片)
#define configUSE_PREEMPTION        1
//配置是否使用IDLE空闲任务钩子函数
#define configUSE_IDLE_HOOK            0
//配置是否使用TICK滴答任务钩子函数
#define configUSE_TICK_HOOK            0
//配置CPU主频(HZ)
#define configCPU_CLOCK_HZ            ( ( unsigned long ) 72000000 )    
//配置系统时钟节拍数(HZ)
#define configTICK_RATE_HZ            ( ( TickType_t ) 1000 )
//配置供用户使用的最大优先级数
#define configMAX_PRIORITIES        ( 5 )
//配置空闲任务的栈大小
#define configMINIMAL_STACK_SIZE    ( ( unsigned short ) 128 )
//配置堆大小   包括用户动态内存申请,任务栈,任务创建,信号量创建,消息队列创建等都需要用这个空间。
#define configTOTAL_HEAP_SIZE        ( ( size_t ) ( 17 * 1024 ) )
//配置任务名最大的字符数
#define configMAX_TASK_NAME_LEN        ( 16 )
//配置是否使用可视化跟踪调试
#define configUSE_TRACE_FACILITY    0
/*  
系统时钟节拍计数使用TickType_t数据类型定义的。
如果用户使能了宏定义 configUSE_16_BIT_TICKS,
那么TickType_t定义的就是16位无符号数,
如果没有使能,那么TickType_t定义的就是32位无符号数。
对于32位架构的处理器,一定要禁止此宏定义,即设置此宏定义数值为0即可。
而16位无符号数类型主要用于8位和16位架构的处理器。
*/
#define configUSE_16_BIT_TICKS        0
/*
此参数用于使能与空闲任务同优先级的任务,只有满足以下两个条件时,此参数才有效果:
1.使能抢占式调度器。
2.有创建与空闲任务同优先级的任务。
配置为1,就可以使能此特性了,实际应用中不建议用户使用此功能,将其配置为0即可。
*/
#define configIDLE_SHOULD_YIELD        1

/* Co-routine definitions. */
//配置是否使能合作式调度相关函数
#define configUSE_CO_ROUTINES         0
//定义可供用户使用的最大的合作式任务优先级数
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )

/* Set the following definitions to 1 to include the API function, or zero
to exclude the API function. */

#define INCLUDE_vTaskPrioritySet        1       //设置任务优先级
#define INCLUDE_uxTaskPriorityGet        1        //获取任务优先级
#define INCLUDE_vTaskDelete                1        //删除任务
#define INCLUDE_vTaskCleanUpResources    0        //清理任务资源
#define INCLUDE_vTaskSuspend            1        //挂起任务
#define INCLUDE_vTaskDelayUntil            1        //延时直至
#define INCLUDE_vTaskDelay                1        //延时

/* This is the raw value as per the Cortex-M3 NVIC.  Values can be 255
(lowest) to 0 (1?) (highest). */
//配置内核中断优先级数
#define configKERNEL_INTERRUPT_PRIORITY         255            

/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!!
See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */
/*
低于此优先级的中断可以安全调用FreeRTOS的API函数,
高于此优先级的中断是FreeRTOS不能禁止的,
中断服务函数也不能调用FreeRTOS的API函数!
如以STM32为例,设置NVIC优先级分组为4,即有16个抢占优先级,0最高,15最低,
设置configMAX_SYSCALL_INTERRUPT_PRIORITY为5,则:
优先级0-4不会被FreeRTOS禁止,中断不可以调用FreeRTOS的API函数。
优先级5-15可以调用以FROM_ISR结尾的API函数,并且它们可以中断嵌套。
*/
#define configMAX_SYSCALL_INTERRUPT_PRIORITY     191 /* equivalent to 0xb0, or priority 11. */


/* This is the value being used as per the ST library which permits 16
priority values, 0 to 15.  This must correspond to the
configKERNEL_INTERRUPT_PRIORITY setting.  Here 15 corresponds to the lowest
NVIC value of 255. */
/*
这个值是将configMAX_SYSCALL_INTERRUPT_PRIORITY与运算,
取出芯片支持的优先级有效位所得到的值。
程序中未使用。只是作为用户定义抢占优先级的参考
*/
#define configLIBRARY_KERNEL_INTERRUPT_PRIORITY    15

#endif /* FREERTOS_CONFIG_H */

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在移植 FreeRTOSSTM32F103C8T6 上时,需要进行 FreeRTOSConfig.h 文件的配置。以下是一些常见的配置选项: 1. 配置时钟频率:根据你的实际情况,设置 configCPU_CLOCK_HZ 宏定义STM32F103C8T6 的时钟频率。 2. 配置优先级:根据你的应用需求,设置 configMAX_PRIORITIES 宏定义为需要支持的最大任务优先级。 3. 配置堆栈大小:根据你的应用需求,设置 configMINIMAL_STACK_SIZE 宏定义为你期望的最小任务堆栈大小。 4. 配置空闲任务堆栈大小:设置 configIDLE_STACK_SIZE 宏定义为空闲任务的堆栈大小。 5. 配置时钟节拍:设置 configTICK_RATE_HZ 宏定义为你希望的 FreeRTOS 时钟节拍频率。 6. 配置内存管理器:根据你的应用需求,选择使用 heap_1.c、heap_2.c、heap_3.c 或 heap_4.c 中的一个作为内存管理器。 7. 配置中断嵌套:如果你的应用需要使用中断嵌套,设置 configKERNEL_INTERRUPT_PRIORITY 宏定义为内核中断优先级的值,同时设置 configMAX_SYSCALL_INTERRUPT_PRIORITY 宏定义为用于系统调用的最高优先级。 8. 配置其他选项:根据你的应用需求,可以配置其他的 FreeRTOS 选项,如任务调度器的算法、任务队列长度等。 以上是一些常见的 FreeRTOSConfig.h 配置选项,你可以根据你的应用需求进行相应的修改和调整。同时,还需要根据你的硬件平台进行其他的移植工作,如配置中断和时钟等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值