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 STM32移植笔记
- FreeRTOS STM32移植笔记
- IAR(EWARM)下移植FreeRTOS到STM32F10x笔记
- FreeRTOS STM32移植笔记
- FreeRTOS STM32移植笔记
- FreeRTOS移植笔记(一)创建工程模板
- FreeRTOS STM32移植笔记
- FreeRTOS STM32移植笔记
- FreeRTOS STM32移植笔记
- ESP8266_RTOS_SDK学习笔记之 FreeRTOS移植浅析
- FreeRTOS学习及移植笔记之一:开始FreeRTOS之旅
- FreeRTOS学习及移植笔记之二:在IAR和STM32F103VET上移植FreeRTOS
- FreeRTOS学习笔记一:移植FreeRTOS与使用规范
- 关于uc/os-II在C51上移植的笔记
- 将Access数据库移植到Oracle笔记
- 将Access数据库移植到Oracle笔记
- UC/OS-II的详细移植笔记 两种处理器的移植比较(S1C33209和S3C44B0X)
- [原创]Linux 2.6.27 for ARM9/S3C2410 内核移植笔记
- Linux2.6内核移植笔记(一)