1.配置文件做用
- 使用配置文件來裁剪freeRTOS的功能,進行個性化配置
- 使用CubeMX的話,ST公司已經默認配置好了環境
2.配置文件詳解
2.1配置文件
/*
* FreeRTOS Kernel V10.3.1
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* http://www.FreeRTOS.org
* http://aws.amazon.com/freertos
*
* 1 tab == 4 spaces!
*/
#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H
/*-----------------------------------------------------------
* Application specific definitions.
*
* These definitions should be adjusted for your particular hardware and
* application requirements.
*
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
*
* See http://www.freertos.org/a00110.html
*----------------------------------------------------------*/
#define configUSE_PREEMPTION 1
#define configUSE_IDLE_HOOK 0
#define configUSE_TICK_HOOK 0
#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_FACILITY 0
#define configUSE_16_BIT_TICKS 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. */
#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. */
#define configLIBRARY_KERNEL_INTERRUPT_PRIORITY 15
#endif /* FREERTOS_CONFIG_H */
參數名稱 |
參數說明 |
說明 |
configUSE_PREEMPTION |
定義調度器模式 |
1:搶佔,0:協做 |
configCPU_CLOCK_HZ |
定義CPU時鐘主頻,單位Hz |
|
configTICK_RATE_HZ |
定義系統時鐘節拍數,即操做系統任務調度的週期 |
通常取1000Hz,即1ms.osDelay(1000) 函數單位就是這個,此處爲1000*1ms=1s |
configMAX_PRIORITIES |
可供用戶使用的最大優先級數 |
若是這個定義的是5,那麼用戶能夠使用的優先級號是0,1,2,3,4,不包含5 |
configMINIMAL_STACK_SIZE |
空閒任務的棧空間大小 |
單位爲字,即4字節 |
configMAX_TASK_NAME_LEN |
任務名最大字符數 |
末尾的結束符 '\0'也要計算在內 |
configUSE_16_BIT_TICKS |
系統時鐘節拍計數使用TickType_t數據類型定義 |
若是用戶使能了宏定義 configUSE_16_BIT_TICKS,那麼TickType_t定義的就是16位無符號數,若是沒有使能,那麼TickType_t定義的就是32位無符號數.對於32位架構的處理器,必定要禁止此宏定義,即設置此宏定義數值爲0便可。而16位無符號數類型主要用於8位和16位架構的處理器。 |
configIDLE_SHOULD_YIELD |
使能與空閒任務同優先級的任務 |
只有知足如下兩個條件時,此參數纔有效果.(1.使能搶佔式調度器;2.有建立與空閒任務同優先級的任務),通常不建議配置,將其配置爲0便可 |
configUSE_MUTEXES |
使能互斥鎖 |
1:使能互斥信號量,2:禁止互斥信號量 |
configUSE_RECURSIVE_MUTEXES |
使能遞歸互斥信號量 |
1:使能,0:禁止 |
configUSE_COUNTING_SEMAPHORES |
使能計數信號量 |
1:使能,0:禁止 |
configQUEUE_REGISTRY_SIZE |
設置能夠註冊的信號量和消息隊列個數 |
|
configAPPLICATION_TASK_TAG |
使能任務標記 |
|
configENABLE_BACKWARD_COMPATIBILITY |
使能新版本對老版本的兼容特性 |
1:使能,0:禁止 |
configUSE_TICKLESS_IDLE |
此配置用於使能tickless低功耗模式 |
1:使能,0:禁止 |
configUSE_TASK_NOTIFICATIONS |
使能任務間直接的消息傳遞,包含信號量,事件標誌組和消息郵箱 |
1:使能,0:禁止 |
![](http://static.javashuo.com/static/loading.gif)
參數名稱 |
參數說明 |
MEMORY_ALLOCATION |
定義內存分配模式 |
TOTAL_HEAP_SIZE |
定義動態內存分配總長度 |
HEAP_NUMBER |
定義動態內存管理方式 |
參數名稱 |
參數說明 |
GENERATE_RUN_TIME_STATS |
使能任務運行狀態參數統計 |
USE_TRACE_FACILITY |
是否額外添加結構體成員和函數 |
USE_STATS_FORMATTING_FUNCTIONS |
用戶配置宏定義,configUSE_TRACE_FACILITY和configUSE_STATS_FORMATTING_FUNCTIONS都爲1的時候,將使能函數vTaskList()與vTaskGetRunTimeStats(),兩者有一個爲0那麼這兩個函數都將被禁能 |
參數名稱 |
參數說明 |
USE_TIMERS |
使能軟件定時器 |
參數名稱 |
參數說明 |
LIBRARY_LOWEST_INTERRUPT_PRIORITY |
配置freeRTOS使用到的SysTick中斷和PendSV中斷的優先級,在NVIC分組設置爲4的狀況下,此宏定義範圍是0-15,即專門配置搶佔優先級.此處配置爲0x0f,即SysTick和PendSV都是配置爲最低優先級,實際建議配置最低優先級 |
LIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY |
定義了受freeRTOS管理的最高優先級中斷 |
2.2include配置
- 在此須要使能相關函數API,若是不使能那麼相關函數將不能使用
![](http://static.javashuo.com/static/loading.gif)