您的位置:首页 > 其它

FreeRTOS移植笔记(二)FreeRTOSConfig.h文件详解

2017-01-14 22:02 375 查看

一、FreeRTOSConfig.h介绍

  我们在使用FreeRTOS的时候,需要对其进行一下配置,这样我们才能使用FreeRTOS,而大部分选项都在FreeRTOS.h文件里面默认配置了,我们在使用FreeRTOS开发我们的产品的时候,只需要把用到的配置选项放在FreeRTOSConfig.h文件中配置一下即可。

二、基本配置

  基本配置是FreeRTOS中经常使用的,也就是只要用到FreeRTOS,就需要使用这些配置。下面对这些配置分别进行简单的介绍一下。

  1)一些基本的宏定义

#define configUSE_PREEMPTION1
#define configUSE_IDLE_HOOK0
#define configUSE_TICK_HOOK0
#define configCPU_CLOCK_HZ          ( ( unsigned long ) 72000000 )
#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_FACILITY1
#define configUSE_16_BIT_TICKS0
#define configIDLE_SHOULD_YIELD1

/* Co-routine definitions. */
#define configUSE_CO_ROUTINES0
#define configMAX_CO_ROUTINE_PRIORITIES( 2 )


  这些是FreeRTOS的一些基本定义,下面对这些基本的宏定义做一解释。

#define configUSE_PREEMPTION


  配置为1,使能抢占式调度器。配置为0,使能合作式调度器。

#define configUSE_IDLE_HOOK


  配置为1,使能空闲任务钩子函数。配置为0,禁能空闲任务钩子函数。

#define configUSE_TICK_HOOK


  配置为1,使能滴答定时器中断里面执行的钩子函数。配置为0,禁能滴答定时器中断里面执行的钩子函数。

#define configCPU_CLOCK_HZ          ( ( unsigned long ) 72000000 )


  CPU主频,单位Hz。由于使用的是CM3内核,CPU主频为72M,所以此处设置为72MHz

#define configTICK_RATE_HZ          ( ( TickType_t ) 1000 )


  系统时钟节拍数。单位Hz,一般取1000Hz即可。

  注意:过高的系统时钟节拍将使得FreeRTOS内核运行时占用过多的时间,从而增加系统负荷。

#define configMAX_PRIORITIES


  可供用户使用的最大优先级数。在FreeRTOSConfig.h中默认为5,即用户可以使用的优先级号为0、1、2、3、4。

#define configMINIMAL_STACK_SIZE


  空闲任务的栈空间大小,单位字,即4字节。

#define configTOTAL_HEAP_SIZE


  堆大小,在FreeRTOS中,用户动态内存申请,任务栈,任务创建,信号量创建,消息队列创建等都需要用这个空间。

#define configMAX_TASK_NAME_LEN


  任务名最大的字符数,包括末尾的结束符’\0’。

#define configUSE_TRACE_FACILITY


  配置为0时,禁能此特性。配置为1时,添加额外的结构体成员和函数,以此来协助可视化和跟踪。

  注意:如果我们使用的开发环境为IAR,则要使能该配置,否则无法显示任务栈的使用情况。

#define configUSE_16_BIT_TICKS


  配置为1,TickType_t定义的就是16位无符号数。配置为0,则定义的为32位无符号数。32位的处理器,禁止此特性,即配置为0.

#define configIDLE_SHOULD_YIELD


  此处配置为1,禁能与空闲任务同优先级的任务。

#define configUSE_CO_ROUTINES


  配置为1,使能合作式调度相关函数。配置为0,禁能合作式调度相关函数。

#define configMAX_CO_ROUTINE_PRIORITIES


  可供用户使用的最大的合作式任务优先级数。

  2)API函数include配置

#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


  用户根据需要使能或者禁止在工程中使用相应的函数,配置为1,使能,在工程中可以使用相应的函数。配置为0,禁止,禁止在工程中使用相应的函数。

  3)其他的一些宏定义

#define configKERNEL_INTERRUPT_PRIORITY         255
#define configMAX_SYSCALL_INTERRUPT_PRIORITY    191
#define configLIBRARY_KERNEL_INTERRUPT_PRIORITY 15


三、其他配置

  基本配置也就是我们在打开FreeRTOSConfig.h文件之后默认就有的,而我们在使用FreeRTOS的时候,如果还需要其他的一些配置,只需在FreeRTOSConfig.h文件中增加我们需要的配置即可。如:我们要使用打印任务列表函数vTaskList,这个时候我们打开FreeRTOS的API在线手册,在手册中找到vTaskList会有这么一句。configUSE_TRACE_FACILITY and configUSE_STATS_FORMATTING_FUNCTIONS must both be defined as 1 for this function to be available。也就是说我们要想使用vTaskList函数,就必须要在FreeRTOSConfig.h中定义configUSE_TRACE_FACILITY and和configUSE_STATS_FORMATTING_FUNCTIONS 为1。其他的以此类推,我们在使用API函数的时候,查看在线手册即可知道怎么使用。

4000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  FreeRTOS