FreeRTOS之FreeRTOSConfig.h文件解析

背景:

FreeRTOSConfig.h文件是FreeRTOS的关键配置文件,需要搞懂里面参数的设置,下面分析各参数的含义。

内容:

宏定义命名的前面小写config表明该定义是在config文件,名字后面部分均大写,表明宏定义的含义。
#define configUSE_PREEMPTION                     1 //1是使用抢占式内核,0是使用协程式内核
#define configUSE_TIME_SLICING1 //1是使能时间片调度,默认使能
#define configSUPPORT_STATIC_ALLOCATION          0 //静态内存分配申请,0是不支持
#define configSUPPORT_DYNAMIC_ALLOCATION         1//动态内存分配申请,1是支持
#define configUSE_IDLE_HOOK                      0//空闲钩子,0是不使用
#define configUSE_TICK_HOOK                      0//时间钩子,0是不使用
#define configCPU_CLOCK_HZ                       ( SystemCoreClock )//CPU时钟频率
#define configTICK_RATE_HZ                       ((TickType_t)1000)//时钟节拍频率,设置1000,周期就是1ms,更高的Tick Rate 会导致任务的时间片“time slice”变短
#define configMAX_PRIORITIES                     ( 7 )//最大优先级,用多少设置为多少,FreeRTOS 会为每个优先级建立一个链表,因此每多一个优先级都会增加些RAM 的开销。
#define configMINIMAL_STACK_SIZE                 ((uint16_t)128)//空闲任务的堆栈大小
#define configTOTAL_HEAP_SIZE                    ((size_t)30720)//总的堆栈大小30k
#define configMAX_TASK_NAME_LEN                  ( 16 )//任务名字的最大长度
#define configUSE_16_BIT_TICKS                   0
// 将 configUSE_16_BIT_TICKS设为 1后portTickType将被定义为无符号的16位整形类型,
configUSE_16_BIT_TICKS 设为0 后portTickType则被定义为无符号的32位整型。

#define configUSE_MUTEXES                        1//使用互斥量代码
#define configQUEUE_REGISTRY_SIZE                8//不为0表示启用列队记录,不用设为0,节省RAM空间
#define configUSE_PORT_OPTIMISED_TASK_SELECTION  1//1是启用特殊方法来选择下一个要运行的任务
/* Co-routine definitions. */
#define configUSE_CO_ROUTINES                    0 // 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. */
//可选函数配置,用设为1,不用设为0
#define INCLUDE_vTaskPrioritySet            1
#define INCLUDE_uxTaskPriorityGet           1
#define INCLUDE_vTaskDelete                 1
#define INCLUDE_vTaskCleanUpResources       1
#define INCLUDE_vTaskSuspend                1
#define INCLUDE_vTaskDelayUntil             1
#define INCLUDE_vTaskDelay                  1
#define INCLUDE_xTaskGetSchedulerState      1
#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY   15 //中断的最低优先级
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5//系统可管理的中断最高优先级
另外,补充下portmacro.h文件中的一些宏定义;
/* Type definitions. */
#define portCHAR char
#define portFLOAT float
#define portDOUBLE double
#define portLONG long
#define portSHORT short
#define portSTACK_TYPE uint32_t
#define portBASE_TYPE long
typedef portSTACK_TYPE StackType_t;//uint32_t
typedef long BaseType_t;
typedef unsigned long UBaseType_t;
#if( configUSE_16_BIT_TICKS == 1 )
typedef uint16_t TickType_t;
#define portMAX_DELAY ( TickType_t ) 0xffff //16位最大延迟数
#else
typedef uint32_t TickType_t;
#define portMAX_DELAY ( TickType_t ) 0xffffffffUL //32 位最大延迟数
/* 32-bit tick type on a 32-bit architecture, so reads of the tick count do
not need to be guarded with a critical section. */
#define portTICK_TYPE_IS_ATOMIC 1
#endif
/*-----------------------------------------------------------*/
/* Architecture specifics. */
#define portSTACK_GROWTH ( -1 ) // 堆栈生长方向,-1为向下生长
#define portTICK_PERIOD_MS ( ( TickType_t ) 1000 / configTICK_RATE_HZ )
//

portTICK_RATE_MS表示的是Tick 间间隔多少ms,只在应用代码中可能会用到。如使用vTaskDelay延时函数可实现任务定时间间隔地执行,调用方法如下:要延时250,调用  vTaskDelay( 250 /portTICK_RATE_MS );

#define portBYTE_ALIGNMENT 8//这个常量指示字节对齐数,其默认值为8,即默认以8个字节进行内存对齐



  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FreeRTOSConfig.h文件FreeRTOS的配置文件,用于配置FreeRTOS操作系统的功能和行为。用户可以根据自己的需求,在该文件中使用宏定义来定义所需的功能和配置选项。这些宏值几乎全部来自于FreeRTOS.h系统级头文件,用户可以根据需要在FreeRTOS.h中查找对应的宏值,并在FreeRTOSConfig.h中进行定义。FreeRTOS.h会检查特定功能的宏值是否在FreeRTOSConfig.h中定义,如果用户定义了指定的宏值,FreeRTOS将根据用户的定义来实现相应的功能。通过这种方式,用户可以根据自己的需求来配置FreeRTOS,而无需直接修改内核头文件FreeRTOS.h,实现了灵活的配置。 #### 引用[.reference_title] - *1* *3* [FreeRTOS 之三 全配置项(FreeRTOSConfig.h)详解、裁剪、使用示例](https://blog.csdn.net/ZCShouCSDN/article/details/54694511)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [FreeRTOS学习(二)FreeRTOSConfig.h配置文件](https://blog.csdn.net/qq_45231117/article/details/129364795)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值