STM32 freeRTOSConfig.h 注释版

 这个HAL库生成的。

/* USER CODE BEGIN Header */
/*
    FreeRTOS V9.0.0 - Copyright (C) 2016 Real Time Engineers Ltd.
    All rights reserved

    VISIT http://www.FreeRTOS.org 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: http://www.freertos.org/a00114.html

    ***************************************************************************
     *                                                                       *
     *    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:                          *
     *    http://www.FreeRTOS.org/Documentation                              *
     *                                                                       *
    ***************************************************************************

    http://www.FreeRTOS.org/FAQHelp.html - Having a problem?  Start by reading
	the FAQ page "My application does not run, what could be wrong?".  Have you
	defined configASSERT()?

	http://www.FreeRTOS.org/support - In return for receiving this top quality
	embedded software for free we request you assist our global community by
	participating in the support forum.

	http://www.FreeRTOS.org/training - 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.

    http://www.FreeRTOS.org/plus - 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.

    http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate.
    Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS.

    http://www.OpenRTOS.com - 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.

    http://www.SafeRTOS.com - 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!
*/
/* USER CODE END Header */

#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.
 *----------------------------------------------------------*/

/* USER CODE BEGIN Includes */   	      
/* Section where include file can be added */
/* USER CODE END Includes */ 

/* 确保stdint.h头文件只被编译器使用,而不是汇编器。 */  
  
#if defined(__ICCARM__) || defined(__CC_ARM) || defined(__GNUC__)  
    /* 如果是在IAR Embedded Workbench, ARM Compiler, 或者 GNU Compiler for C中编译,则包含stdint.h头文件 */  
    #include <stdint.h>  
  
    /* 声明一个uint32_t类型的外部变量,通常用于表示系统核心时钟频率 */  
    extern uint32_t SystemCoreClock;  
#endif  
  
/* 启用抢占式调度,即任务可以根据优先级抢占CPU */  
#define configUSE_PREEMPTION                     1  
  
/* 不支持静态内存分配,即任务栈和其他资源不在编译时分配 */  
#define configSUPPORT_STATIC_ALLOCATION          0  
  
/* 支持动态内存分配,即从堆中动态分配任务栈和其他资源 */  
#define configSUPPORT_DYNAMIC_ALLOCATION         1  
  
/* 不使用空闲任务钩子,即空闲任务不执行任何用户定义的代码 */  
#define configUSE_IDLE_HOOK                      0  
  
/* 使用定时器钩子,即每个定时器中断都会执行用户定义的代码 */  
#define configUSE_TICK_HOOK                      0  
  
/* 设置CPU时钟频率,使用前面声明的SystemCoreClock变量 */  
#define configCPU_CLOCK_HZ                       ( SystemCoreClock )  
  
/* 设置RTOS的定时器中断频率,这里是1000Hz */  
#define configTICK_RATE_HZ                       ((TickType_t)1000)  
  
/* 设置RTOS支持的最大任务优先级数量,这里是7 */  
#define configMAX_PRIORITIES                     ( 7 )  
  
/* 设置RTOS为每个任务分配的最小栈大小,这里是128字节 */  
#define configMINIMAL_STACK_SIZE                 ((uint16_t)128)  
  
/* 设置RTOS的堆大小,用于动态内存分配,这里是4096字节 */  
#define configTOTAL_HEAP_SIZE                    ((size_t)4096)  
  
/* 设置RTOS支持的最大任务名称长度,这里是16个字符 */  
#define configMAX_TASK_NAME_LEN                  ( 16 )  
  
/* 不使用16位定时器,使用32位定时器(取决于TickType_t的定义) */  
#define configUSE_16_BIT_TICKS                   0  
  
/* 启用互斥量(mutex)功能,用于同步和互斥访问共享资源 */  
#define configUSE_MUTEXES                        1  
  
/* 设置队列注册表的大小,用于跟踪和调试队列 */  
#define configQUEUE_REGISTRY_SIZE                8  
  
/* 启用针对任务选择的端口优化,这可以提高任务切换的速度 */  
#define configUSE_PORT_OPTIMISED_TASK_SELECTION  1



/* 协程定义。 */  
  
#define configUSE_CO_ROUTINES                    0  
  
/* 设置RTOS是否使用协程功能。0表示不使用,1表示使用。 */  
  
#define configMAX_CO_ROUTINE_PRIORITIES          ( 2 )  
  
/* 设置协程支持的最大优先级数量。 */  
  
  
  
/* 将以下定义设置为1以包含API函数,或设置为0以排除API函数。 */  
  
#define INCLUDE_vTaskPrioritySet            1  
  
/* 包含设置任务优先级的API函数。 */  
  
#define INCLUDE_uxTaskPriorityGet           1  
  
/* 包含获取任务优先级的API函数。 */  
  
#define INCLUDE_vTaskDelete                 1  
  
/* 包含删除任务的API函数。 */  
  
#define INCLUDE_vTaskCleanUpResources       0  
  
/* 不包含清理任务资源的API函数。 */  
  
#define INCLUDE_vTaskSuspend                1  
  
/* 包含挂起任务的API函数。 */  
  
#define INCLUDE_vTaskDelayUntil             0  
  
/* 不包含根据绝对时间延迟任务的API函数。 */  
  
#define INCLUDE_vTaskDelay                  1  
  
/* 包含根据相对时间延迟任务的API函数。 */  
  
#define INCLUDE_xTaskGetSchedulerState      1  
  
/* 包含获取调度器状态的API函数。 */



/* Cortex-M特定的定义。 */  
  
#ifdef __NVIC_PRIO_BITS  
  
 /* 当使用CMSIS时,会指定__NVIC_PRIO_BITS。 */  
  
 #define configPRIO_BITS         __NVIC_PRIO_BITS  
  
/* 定义优先级位数,这取决于CMSIS(Cortex Microcontroller Software Interface Standard)中的设置。 */  
  
#else  
  
 #define configPRIO_BITS         4  
  
/* 如果未定义__NVIC_PRIO_BITS,则默认设置优先级位数为4。 */  
  
#endif  
  
  
  
/* 可以在“设置优先级”函数调用中使用的最低中断优先级。 */  
  
#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY   15  
  
/* 定义FreeRTOS库能使用的最低中断优先级。这里设置为15,数值越大优先级越低。 */  
  
  
  
/* 任何中断服务例程可以使用的最高中断优先级,这些中断服务例程会调用FreeRTOS的安全中断API函数。  
  
切勿从优先级高于此值的中断中调用FreeRTOS的安全中断API函数!(优先级越高,数值越低。) */  
  
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5  
  
/* 定义FreeRTOS库能接受的最高中断优先级,用于安全的中断服务调用。这里设置为5,表示只有优先级为5或更低的中断可以安全地调用FreeRTOS的API函数。 */



/* 内核端口层本身使用的中断优先级。这些优先级是通用的,适用于所有Cortex-M端口,  
  
并不依赖于任何特定的库函数。 */  
  
#define configKERNEL_INTERRUPT_PRIORITY 		( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )  
  
/* 内核中断优先级定义,基于库能使用的最低中断优先级,并根据优先级位数进行调整。 */  
  
/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY 绝对不能设置为零 !!!!  
  
请参见 http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html。 */  
  
#define configMAX_SYSCALL_INTERRUPT_PRIORITY 	( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )  
  
/* 定义了可以从中断服务例程中安全调用FreeRTOS API函数的最高中断优先级,  
  
并基于库能接受的最高中断优先级进行调整。 */  
  
  
  
/* 正常的assert()语义,不依赖于assert.h头文件的提供。 */  
  
/* USER CODE BEGIN 1 */  
  
#define configASSERT( x ) if ((x) == 0) {taskDISABLE_INTERRUPTS(); for( ;; );}   
  
/* 当断言失败时,禁止中断并进入无限循环。这可以作为一个错误处理机制,  
  
用于开发阶段的调试。 */  
  
/* USER CODE END 1 */  
  
  
  
/* 定义,将FreeRTOS端口中断处理程序映射到它们的CMSIS标准名称。 */  
  
#define vPortSVCHandler    SVC_Handler  
  
/* SVC(Supervisor Call)异常处理程序的映射。 */  
  
#define xPortPendSVHandler PendSV_Handler  
  
/* PendSV(Pending SVC)异常处理程序的映射。 */  
  
  
  
/* 重要提示:当与STM32Cube固件一起使用时,如果时间基准是systick,  
  
此定义将被注释掉,以防止覆盖STM32Cube HAL中定义的SysTick_Handler */  
  
#define xPortSysTickHandler SysTick_Handler  
  
/* SysTick(系统滴答定时器)中断处理程序的映射。在STM32Cube固件中,  
  
SysTick_Handler通常已经被定义,因此这里可能需要取消注释以避免重复定义。 */



/* USER CODE BEGIN Defines */   	      
/* Section where parameter definitions can be added (for instance, to override default ones in FreeRTOS.h) */
/* USER CODE END Defines */ 

#endif /* FREERTOS_CONFIG_H */

这个是手动移植版的

/*
 * FreeRTOS V202212.01
 * 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.
 *
 * https://www.FreeRTOS.org
 * https://github.com/FreeRTOS
 *
 */


#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
 *----------------------------------------------------------*/

/* Ensure stdint is only used by the compiler, and not the assembler. */

//#ifdef __ICCARM__
//	#include <stdint.h>
//	extern uint32_t SystemCoreClock;
//#endif
#include <stdint.h>
extern uint32_t SystemCoreClock;

// 启用抢占式调度,值为1表示启用,抢占式调度意味着高优先级的任务可以中断正在运行的低优先级任务。  
#define configUSE_PREEMPTION			1  
  
// 禁用空闲钩子函数,值为0表示禁用。空闲钩子函数在RTOS的空闲任务中调用,用于执行一些周期性任务或系统维护操作。  
#define configUSE_IDLE_HOOK				0  
  
// 禁用时钟钩子函数,值为0表示禁用。时钟钩子函数在每个时钟节拍中断时调用,可以用于实现定时任务或性能统计。  
#define configUSE_TICK_HOOK				0  
  
// 设置CPU时钟频率,这里使用SystemCoreClock宏的值,它通常在系统初始化时设置。  
#define configCPU_CLOCK_HZ				( SystemCoreClock )  
  
// 设置RTOS时钟节拍频率,这里设置为1000Hz,意味着每秒有1000个时钟节拍中断。  
#define configTICK_RATE_HZ				( ( TickType_t ) 1000 )  
  
// 设置任务优先级数量,这里设置为32,表示可以定义32个不同优先级的任务。  
#define configMAX_PRIORITIES			( 32 )  
  
// 设置任务堆栈的最小大小,这里为100字节。每个任务在创建时都需要分配一定的堆栈空间。  
#define configMINIMAL_STACK_SIZE		( ( unsigned short ) 100 )  
  
// 设置系统堆内存的总大小,这里为75KB。堆内存用于动态内存分配,如任务创建、队列和信号量分配等。  
#define configTOTAL_HEAP_SIZE			( ( size_t ) ( 75 * 1024 ) )  
  
// 设置任务名称的最大长度,这里为10个字符。  
#define configMAX_TASK_NAME_LEN			( 10 )  
  
// 启用跟踪功能,值为1表示启用。这有助于调试和性能分析。  
#define configUSE_TRACE_FACILITY		1  
  
// 禁用16位节拍计数器,值为0表示使用更大的计数器,通常为32位。  
#define configUSE_16_BIT_TICKS			0  
  
// 允许空闲任务释放CPU使用权,值为1表示允许。这样,在空闲时其他任务(如中断服务程序)可以运行。  
#define configIDLE_SHOULD_YIELD			1  
  
// 启用互斥量(mutex)功能,用于保护共享资源。  
#define configUSE_MUTEXES				1  
  
// 设置队列注册表的大小,这里为8。队列注册表用于跟踪系统中创建的队列。  
#define configQUEUE_REGISTRY_SIZE		8  
  
// 禁用堆栈溢出检查,值为0表示不检查。堆栈溢出是危险的,但检查会增加开销。  
#define configCHECK_FOR_STACK_OVERFLOW	0  
  
// 启用递归互斥量功能,递归互斥量允许同一个任务多次获取同一互斥量。  
#define configUSE_RECURSIVE_MUTEXES		1  
  
// 禁用内存分配失败钩子函数,值为0表示禁用。这个钩子函数在内存分配失败时被调用。  
#define configUSE_MALLOC_FAILED_HOOK	0  
  
// 禁用应用程序任务标签功能,值为0表示禁用。  
#define configUSE_APPLICATION_TASK_TAG	0  
  
// 启用计数信号量功能,用于同步和通信。  
#define configUSE_COUNTING_SEMAPHORES	1  
  
// 禁用运行时统计功能,值为0表示不收集统计信息。  
#define configGENERATE_RUN_TIME_STATS	0


/* Software timer definitions. */  
  
// 启用软件定时器功能  
#define configUSE_TIMERS				1  
  
// 设置软件定时器任务的优先级  
#define configTIMER_TASK_PRIORITY		( 2 )  
  
// 设置软件定时器队列的长度  
#define configTIMER_QUEUE_LENGTH		10  
  
// 设置软件定时器任务的堆栈深度  
// 这里使用了之前定义的configMINIMAL_STACK_SIZE宏,并将其乘以2,  
// 意味着软件定时器任务的堆栈深度是基本堆栈大小的两倍。  
#define configTIMER_TASK_STACK_DEPTH	( configMINIMAL_STACK_SIZE * 2 )  




  
  
/* 设置以下宏为1以包含相应的API函数,或设置为0以排除它们。 */  
  
// 包含vTaskPrioritySet函数,该函数用于设置任务的优先级  
#define INCLUDE_vTaskPrioritySet		1  
  
// 包含uxTaskPriorityGet函数,该函数用于获取任务的优先级  
#define INCLUDE_uxTaskPriorityGet		1  
  
// 包含vTaskDelete函数,该函数用于删除一个任务  
#define INCLUDE_vTaskDelete				1  
  
// 包含vTaskCleanUpResources函数,该函数用于清理FreeRTOS的资源  
#define INCLUDE_vTaskCleanUpResources	1  
  
// 包含vTaskSuspend函数,该函数用于挂起一个任务  
#define INCLUDE_vTaskSuspend			1  
  
// 包含vTaskDelayUntil函数,该函数用于使任务延迟到某个特定的时间点  
#define INCLUDE_vTaskDelayUntil			1  
  
// 包含vTaskDelay函数,该函数用于使任务延迟一定的时间  
#define INCLUDE_vTaskDelay				1




/* Cortex-M specific definitions. */  
  
/* 如果定义了__NVIC_PRIO_BITS,则使用它作为优先级位数。这通常在CMSIS(Cortex Microcontroller Software Interface Standard)库被使用时被指定。 */  
#ifdef __NVIC_PRIO_BITS  
	#define configPRIO_BITS		__NVIC_PRIO_BITS  
#else  
	/* 如果没有定义__NVIC_PRIO_BITS,则默认使用4位优先级,这意味着有15个不同的优先级级别(0-14)。 */  
	#define configPRIO_BITS		4  
#endif  
  
/* 库中可用的最低中断优先级。这通常用于在调用“设置优先级”函数时确定可用的最低优先级。 */  
#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY		0xf  
  
/* 任何中断服务例程可以使用的最高中断优先级,前提是这些中断服务例程调用FreeRTOS的安全中断API函数。  
  
请注意,较高的优先级对应较低的数值。不要从比这个优先级更高的中断中调用FreeRTOS的安全中断API函数! */  
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY	5  
  
/* 内核端口层自身使用的中断优先级。这些优先级对所有Cortex-M端口都是通用的,并且不依赖于任何特定的库函数。 */  
#define configKERNEL_INTERRUPT_PRIORITY	( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )  
  
/* configMAX_SYSCALL_INTERRUPT_PRIORITY不能被设置为0。  
  
请参阅http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html了解更多信息。 */  
#define configMAX_SYSCALL_INTERRUPT_PRIORITY	( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )


/* 如果 x 为假(0),则禁用中断并进入无限循环。这是用于检测错误条件的断言机制,  
   而不需要依赖 assert.h 头文件提供的标准 assert 函数。 */  
#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); }  
  
/* 以下定义将 FreeRTOS 的端口中断处理函数映射到它们的 CMSIS 标准名称。  
   这确保了当发生中断时,FreeRTOS 的中断处理函数能够被正确调用。 */  
  
/* 将 FreeRTOS 的 SVC 异常处理函数映射到 CMSIS 标准的 SVC_Handler。 */  
#define vPortSVCHandler SVC_Handler  
  
/* 将 FreeRTOS 的 PendSV 异常处理函数映射到 CMSIS 标准的 PendSV_Handler。 */  
#define xPortPendSVHandler PendSV_Handler  
  
/* 将 FreeRTOS 的 SysTick 中断处理函数映射到 CMSIS 标准的 SysTick_Handler。 */  
#define xPortSysTickHandler SysTick_Handler


#endif /* FREERTOS_CONFIG_H */

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值