資料介紹
/*
FreeRTOS V9.0.0 - Copyright (C) 2016 Real Time Engineers Ltd.
All rights reserved
VISIT [url]http://www.FreeRTOS.org[/url] TO ENSURE YOU ARE USING THE LATEST VERSION.
This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation 》》》》 AND MODIFIED BY 《《《《 the FreeRTOS exception.
***************************************************************************
》》! NOTE: The modification to the GPL is included to allow you to !《《
》》! distribute a combined work that includes FreeRTOS without being !《《
》》! obliged to provide the source code for proprietary components !《《
》》! outside of the FreeRTOS kernel. !《《
***************************************************************************
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. Full license text is available on the following
link: [url]http://www.freertos.org/a00114.html[/url]
***************************************************************************
* *
* FreeRTOS provides completely free yet professionally developed, *
* robust, strictly quality controlled, supported, and cross *
* platform software that is more than just the market leader, it *
* is the industry‘s de facto standard. *
* *
* Help yourself get started quickly while simultaneously helping *
* to support the FreeRTOS project by purchasing a FreeRTOS *
* tutorial book, reference manual, or both: *
* [url]http://www.FreeRTOS.org/Documentation[/url] *
* *
***************************************************************************
[url]http://www.FreeRTOS.org/FAQHelp.html[/url] - Having a problem? Start by reading
the FAQ page “My application does not run, what could be wrong?”。 Have you
defined configASSERT()?
[url]http://www.FreeRTOS.org/support[/url] - In return for receiving this top quality
embedded software for free we request you assist our global community by
participating in the support forum.
?。踰rl]http://www.FreeRTOS.org/training[/url] - Investing in training allows your team to
be as productive as possible as early as possible. Now you can receive
FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers
Ltd, and the world’s leading authority on the world‘s leading RTOS.
[url]http://www.FreeRTOS.org/plus[/url] - A selection of FreeRTOS ecosystem products,
including FreeRTOS+Trace - an indispensable productivity tool, a DOS
compatible FAT file system, and our tiny thread aware UDP/IP stack.
?。踰rl]http://www.FreeRTOS.org/labs[/url] - Where new FreeRTOS products go to incubate.
Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS.
?。踰rl]http://www.OpenRTOS.com[/url] - Real Time Engineers ltd. license FreeRTOS to High
Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS
licenses offer ticketed support, indemnification and commercial middleware.
?。踰rl]http://www.SafeRTOS.com[/url] - High Integrity Systems also provide a safety
engineered and independently SIL3 certified version for use in safety and
mission critical applications that require provable dependability.
1 tab == 4 spaces!
*/
/*
*=================================== 中文注解 =======================================
*
* 作者:野火 Fire
* 論壇:[url]www.firebbs.cn[/url]
* 淘寶:[url]www.fire-stm32.taobao.com[/url]
*
* FreeRTOSConfig.h這個(gè)頭文件用來配置FreeRTOS的功能,但是并不全面,剩下的其他功能可以
* 在FreeRTOS.h這個(gè)頭文件配置,比如使能互斥信號(hào)量,使能遞歸信號(hào)量,使能事件標(biāo)志組這些
* 內(nèi)核對(duì)象的功能時(shí),是在FreeRTOS.h這個(gè)頭文件里面配置的。即要想完全使用FreeRTOS的功能
* 需要這兩個(gè)頭文件一起聯(lián)合使用。
*====================================================================================
*/
#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 [url]http://www.freertos.org/a00110.html.[/url]
*----------------------------------------------------------*/
#define configUSE_PREEMPTION 1 /* 使能搶占式調(diào)度,否則用合作式調(diào)度,默認(rèn)我們都是用搶占式 */
#define configUSE_IDLE_HOOK 0 /* 空閑任務(wù)鉤子函數(shù) */
#define configUSE_TICK_HOOK 0 /* 時(shí)基任務(wù)鉤子函數(shù) */
#define configCPU_CLOCK_HZ ( ( unsigned long ) 72000000 ) /* 系統(tǒng)時(shí)鐘,單位為HZ */
#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) /* SysTick中斷周期,單位為HZ,1000HZ即1ms中斷一次 */
#define configMAX_PRIORITIES ( 5 ) /* 任務(wù)能使用最大優(yōu)先級(jí)個(gè)數(shù),數(shù)字越大優(yōu)先級(jí)越高,范圍為:0~configMAX_PRIORITIES-1
最低的0由系統(tǒng)分配給空閑任務(wù),每個(gè)任務(wù)的優(yōu)先級(jí)可以相同 */
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 128 )
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 17 * 1024 ) ) /* 堆空間大小,內(nèi)核在創(chuàng)建各種對(duì)象時(shí)需要用到,單位為字,即4個(gè)字節(jié) */
#define configMAX_TASK_NAME_LEN ( 16 ) /* 任務(wù)名稱的長度,即字符串的長度 */
#define configUSE_TRACE_FACILITY 0
#define configUSE_16_BIT_TICKS 0 /* SysTick Counter的寬度,0表示32bit,1表示16bit,STM32用的是32bit */
#define configIDLE_SHOULD_YIELD 1 /* 上下文切換強(qiáng)制使能,即當(dāng)前任務(wù)執(zhí)行完畢之后還有剩余的時(shí)間片,可以強(qiáng)制自己放棄
剩余的時(shí)間片,然后執(zhí)行上下文切換去執(zhí)行其他的任務(wù)*/
/* Co-routine definitions. */
#define configUSE_CO_ROUTINES 0 /* 合作式調(diào)度配置 */
#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
/*=========================================== SysTick 和 PendSV 的中斷優(yōu)先級(jí)配置 ======================================*/
/* This is the raw value as per the Cortex-M3 NVIC. Values can be 255
?。╨owest) to 0 (1?) (highest)。 */
/*
* 當(dāng)把配置好的優(yōu)先級(jí)寫到寄存器的時(shí)候是按照這個(gè)公式來寫的:((priority 《《 (8 - __NVIC_PRIO_BITS)) & 0xff) = 255 =》 priority = 15
* 因?yàn)樵贑ortex-M 系列中是用8位來表示優(yōu)先級(jí),操作的時(shí)候以8bit來寫的,但是ST的處理器只用了其中的高四位,即__NVIC_PRIO_BITS=4。
*
* configKERNEL_INTERRUPT_PRIORITY 宏用來配置 SysTick 和 PendSV 的中斷優(yōu)先級(jí),這里配置為 15,即無論中斷優(yōu)先級(jí)如何分鐘,都是最低。
*
* 當(dāng) SysTick 和 PendSV 的中斷優(yōu)先級(jí) 配置為最低的時(shí)候,可以提供系統(tǒng)的實(shí)時(shí)性,即外部中斷可以隨時(shí)響應(yīng)。
*/
#define configKERNEL_INTERRUPT_PRIORITY 255
/* ?。。?! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !?。。?/p>
See [url]http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html.[/url] */
/*===========================================可屏蔽的中斷優(yōu)先級(jí)配置====================================================*/
/*
* 用于配置STM32的特殊寄存器basepri寄存器的值,用于屏蔽中斷,當(dāng)大于basepri值的
* 優(yōu)先級(jí)的中斷將被全部屏蔽。basepri只有4bit有效,默認(rèn)只為0,即全部中斷都沒有被屏蔽。
* 這里191對(duì)應(yīng)的二進(jìn)制為(1011 1111)b只有高四位有效,即(1011)b=11,意思就是中斷優(yōu)先級(jí)大于11的中斷都被屏蔽
*
* 在FreeRTOS中,關(guān)中斷是通過配置basepri寄存器來實(shí)現(xiàn)的,關(guān)掉的中斷由配置的basepri的值決定,小于basepri值的
* 中斷FreeRTOS是關(guān)不掉的,這樣做的好處是可以系統(tǒng)設(shè)計(jì)者可以人為的控制哪些非常重要的中斷不能被關(guān)閉,在緊要的關(guān)頭必須被響應(yīng)。
* 而在UCOS中,關(guān)中斷是通過控制PRIMASK來實(shí)現(xiàn)的,PRIMASK是一個(gè)單1的二進(jìn)制位,寫1則除能除了NMI和硬 fault的所有中斷。當(dāng)os關(guān)閉
* 中斷之后,即使是你在系統(tǒng)中設(shè)計(jì)的非常緊急的中斷來了都不能馬上響應(yīng),這加大了中斷延遲的時(shí)間,如果是性命攸關(guān)的場合,那后果估計(jì)挺嚴(yán)重。
*
* 當(dāng)把配置好的優(yōu)先級(jí)寫到寄存器的時(shí)候是按照這個(gè)公式來寫的:((priority 《《 (8 - __NVIC_PRIO_BITS)) & 0xff) = 191 =》 priority = 11
*/
#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. */
/*
* configLIBRARY_KERNEL_INTERRUPT_PRIORITY 宏就是 這個(gè)公式:((priority 《《 (8 - __NVIC_PRIO_BITS)) & 0xff)里面的priority
* 即實(shí)際用來配置STM32的中斷優(yōu)先級(jí),但是要寫到8位的中斷優(yōu)先級(jí)的寄存器里面,還是需要用上面的公式先轉(zhuǎn)化下。通過計(jì)算之后就
* 是上面configKERNEL_INTERRUPT_PRIORITY這個(gè)宏的值,用于配置SysTick和PendSV 的中斷優(yōu)先級(jí)。
*/
#define configLIBRARY_KERNEL_INTERRUPT_PRIORITY 15 // 0x0f
/*=================================== SVC,PendSV 和 SysTick 中斷服務(wù)函數(shù)的配置 ========================================*/
/*
* 在移植FreeRTOS的時(shí)候,需要用到STM32的三個(gè)中斷,分別是SVC,PendSV和SysTick,這三個(gè)中斷在向量表
* 里面的名字分別是:SVC_Handler,PendSV_Handler和SysTick_Handler(在啟動(dòng)文件:startup_stm32f10x_hd.s中)
*
* 而在port.c里面寫的這三個(gè)中斷的服務(wù)函數(shù)的名稱跟向量表里面的名稱不一樣,為了中斷響應(yīng)之后能正確的執(zhí)行port.c
* 里面寫好的中斷服務(wù)函數(shù),我們需要統(tǒng)一向量表和中斷服務(wù)函數(shù)的名字。
*
* 為了實(shí)現(xiàn)這個(gè)目的,可以有兩種方法:
* 1:把啟動(dòng)文件里面的向量表里面的名字改成跟port.c里面的中斷服務(wù)函數(shù)名一樣。
* 2:把port.c里面的中斷服務(wù)函數(shù)名改成跟啟動(dòng)文件里面的中斷向量表里面的名字一樣。
*
* 這里為了保持啟動(dòng)文件的完整性,我們統(tǒng)一修改port.c里面的中斷函數(shù)名,即添加下面三個(gè)宏定義即可。
* 如果你在stm32f10x_it.c這里面實(shí)現(xiàn)了這三個(gè)中斷服務(wù)函數(shù)的定義的話,那么為了避免跟port.c里面的重復(fù)定義,應(yīng)該
* 把stm32f10x_it.c里面的注釋掉。
*/
#define xPortPendSVHandler PendSV_Handler
#define xPortSysTickHandler SysTick_Handler
#define vPortSVCHandler SVC_Handler
#endif /* FREERTOS_CONFIG_H */
- FreeRTOS系列第6篇---FreeRTOS內(nèi)核配置說明
- FreeRTOS高級(jí)篇10---系統(tǒng)節(jié)拍時(shí)鐘分析
- MCU_頭文件編寫
- Freertos 的移植中 “FreeRTOSConfig.h“ 的配置
- FreeRTOS-stm32f407移植
- 單片機(jī)-頭文件
- 51單片機(jī)的頭文件有哪些代碼詳細(xì)說明
- 51單片機(jī)編程的頭文件reg51.h詳解
- 單片機(jī)C語言編程的頭文件reg51.h和reg52.h的詳細(xì)資料解析
- 51單片機(jī)程序的頭文件reg51.h詳解
- 51單片機(jī)的頭文件reg51h詳細(xì)資料講解
- 單片機(jī)的C51頭文件到底是什么意思
- STM32F1單片機(jī)的IO位帶操作頭文件免費(fèi)下載 19次下載
- 如何在C++代碼中使用C頭文件 3次下載
- AVR_Mega128液晶電路的頭文件代碼 8次下載
- 可重復(fù)頭文件的固定結(jié)構(gòu) 385次閱讀
- 請(qǐng)問頭文件能不能定義變量呢? 1218次閱讀
- C語言必備知識(shí)頭文件包含 2034次閱讀
- 如何通過注解來優(yōu)化我們的Java代碼 665次閱讀
- C 語言的頭文件路徑位置問題 6352次閱讀
- 模版定義一定要寫在頭文件中嗎? 1477次閱讀
- C語言頭文件路徑的剖析 1923次閱讀
- uthash簡介及使用說明 2107次閱讀
- 配置文件和例程文件的使用 2199次閱讀
- C語言的頭文件組織與包含原則 3542次閱讀
- 如何在STM32單片機(jī)上移植FreeRTOS 5404次閱讀
- C語言中程序員編寫的頭文件和編譯器自帶的頭文件 7864次閱讀
- C語言中提供了許多內(nèi)置的輸入輸出函數(shù) 4363次閱讀
- 使用VS Code調(diào)試 RT-Thread qemu-vexpress-a9 BSP工程 6921次閱讀
- ICD配置文件的詳細(xì)介紹和配置內(nèi)容的詳細(xì)概述 1.7w次閱讀
下載排行
本周
- 1TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 2開關(guān)電源基礎(chǔ)知識(shí)
- 5.73 MB | 6次下載 | 免費(fèi)
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計(jì)
- 0.60 MB | 3次下載 | 免費(fèi)
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 0.61 MB | 2次下載 | 免費(fèi)
- 6基于FPGA的C8051F單片機(jī)開發(fā)板設(shè)計(jì)
- 0.70 MB | 2次下載 | 免費(fèi)
- 751單片機(jī)窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費(fèi)
- 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21548次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6653次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191185次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183278次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論