11.6:完善多任务和消息队列机制。

This commit is contained in:
2025-11-06 16:32:17 +08:00
commit 5f408b4ece
337 changed files with 257102 additions and 0 deletions

View File

@@ -0,0 +1,182 @@
/*
* FreeRTOS V202212.00
* 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
*----------------------------------------------------------*/
#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
/* ϵͳ<CFB5><CDB3><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>1<EFBFBD><31>ʾΪ16λ<36>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD>0<EFBFBD><30>ʾΪ32λ<32>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
#define configUSE_16_BIT_TICKS 0
/* 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CPUʹ<55><CAB9>Ȩ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD> 2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>1 */
#define configIDLE_SHOULD_YIELD 1
/* <20><><EFBFBD>ӵIJ<D3B5><C4B2><EFBFBD> */
/* ʱ<><CAB1>Ƭ<EFBFBD><C6AC><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>ͬʱִ<CAB1><D6B4> */
#define configUSE_TIME_SLICING 1
/* <20><><EFBFBD>С<EFBFBD>Ϊ1<CEAA><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA>ر<EFBFBD> */
#define configUSE_QUEUE_SETS 1
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪ͨ<CDA8><D6AA><EFBFBD>ܣ<EFBFBD>Ĭ<EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD> */
#define configUSE_TASK_NOTIFICATIONS 1
/* <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
#define configUSE_MUTEXES 0
/* ʹ<>õݹ黥<DDB9><E9BBA5><EFBFBD>ź<EFBFBD><C5BA><EFBFBD> */
#define configUSE_RECURSIVE_MUTEXES 0
/* Ϊ1ʱʹ<CAB1>ü<EFBFBD><C3BC><EFBFBD><EFBFBD>ź<EFBFBD><C5BA><EFBFBD> */
#define configUSE_COUNTING_SEMAPHORES 0
/* <20><><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>и<EFBFBD><D0B8><EFBFBD> */
#define configQUEUE_REGISTRY_SIZE 10
#define configUSE_APPLICATION_TASK_TAG 0
/* FreeRTOS<4F><53><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1> */
/* ֧<>ֶ<EFBFBD>̬<EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EBA3A8>ʹ<EFBFBD>ö<EFBFBD><C3B6>С<EFBFBD><D0A1><EFBFBD>ֵ<EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD> */
#define configSUPPORT_DYNAMIC_ALLOCATION 1
/* ֧<>־<EFBFBD>̬<EFBFBD>ڴ<EFBFBD> */
#define configSUPPORT_STATIC_ALLOCATION 0
/*
* <20><><EFBFBD><EFBFBD><30><CAB1><EFBFBD>ö<EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ô˹<C3B4><CBB9><EFBFBD>
* <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<E1B9A9><D2BB>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õĻ<C3B5>
* <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>Ϊ1<CEAA><31><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2B7BD> */
#define configCHECK_FOR_STACK_OVERFLOW 0
/* FreeRTOS<4F><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4>ռ<EFBFBD><D5BC>йص<D0B9><D8B5><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1> */
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ͳ<EFBFBD>ƹ<EFBFBD><C6B9><EFBFBD> */
#define configGENERATE_RUN_TIME_STATS 0
#define configUSE_STATS_FORMATTING_FUNCTIONS 0
#define configRECORD_STACK_HIGH_ADDRESS 0
/* Co-routine definitions. */
/* <20><><EFBFBD><EFBFBD>Э<EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD><EFBFBD>Ժ<EFBFBD><D4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>croutine.c */
#define configUSE_CO_ROUTINES 0
/* Э<>̵<EFBFBD><CCB5><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>Ŀ */
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
/* <20><><EFBFBD>ӵIJ<D3B5><C4B2><EFBFBD> */
/* FreeRTOS<4F><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>йص<D0B9><D8B5><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1> */
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> */
#define configUSE_TIMERS 0
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD> */
#define configTIMER_TASK_PRIORITY (configMAX_PRIORITIES-1)
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD> */
#define configTIMER_QUEUE_LENGTH 10
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB>С */
#define configTIMER_TASK_STACK_DEPTH (configMINIMAL_STACK_SIZE*2)
/*
* ijЩ<C4B3><D0A9><EFBFBD><EFBFBD>FreeRTOs<4F><73>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ҫִ<D2AA>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>:
*
* ͨ<>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><D8B6><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>"<22><><EFBFBD><EFBFBD><E2B7BD>")<29><>
* ͨ<>÷<EFBFBD><C3B7><EFBFBD>:
* 1.configUSE_PORT_OPTIMISED_TASK_SELECTIONΪ<4E><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD>֧<EFBFBD><D6A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2B7BD><EFBFBD><EFBFBD>
* 2.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FreeRTOS֧<53>ֵ<EFBFBD>Ӳ<EFBFBD><D3B2>
* 3.<2E><>ȫ<EFBFBD><C8AB><63><CAB5><><D0A7><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2B7BD><EFBFBD><EFBFBD>
* 4.<2E><>ǿ<EFBFBD><C7BF>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>Ŀ
* <20><><EFBFBD><EFBFBD><E2B7BD>:
* 1.<2E><><EFBFBD>뽫configUSE_PORT_OPTIMISED_TASK_SELECTION<4F><4E><EFBFBD><EFBFBD>Ϊ1<CEAA><31>
* 2.<2E><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><D8B6>ܹ<EFBFBD><DCB9>Ļ<EFBFBD><C4BB><EFBFBD>ָ<EFBFBD>һ<EEA3A8><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>[CLZ]ָ<><EFBFBD><EEA3A9>
* 3.<2E><>ͨ<EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
* 4.һ<><D2BB>ǿ<EFBFBD><C7BF><EFBFBD>޶<EFBFBD><DEB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>ĿΪ32
* һ<><D2BB><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EEA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õģ<C3B5>MCUû<55><C3BB><EFBFBD><EFBFBD>ЩӲ<D0A9><D3B2>ָ<EFBFBD><D6B8><EFBFBD>Ļ<EFBFBD><C4BB>˺<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0 !
*/
#define configUSE_PORT_OPTIMISED_TASK SELECTION 1
/*
* configUSE_TICKLESS_IDLE
* <20><>1:ʹ<>ܵ͹<DCB5><CDB9><EFBFBD>ticklessģʽ;<3B><>0:<3A><><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>(tick<63><6B><EFBFBD>ж<EFBFBD>һֱ<D2BB><D6B1><EFBFBD><EFBFBD>
* <20><><EFBFBD><EFBFBD><E8BFAA><EFBFBD>͹<EFBFBD><CDB9>ĵĻ<C4B5><C4BB><EFBFBD><EFBFBD>ܻᵼ<DCBB><E1B5BC><EFBFBD><EFBFBD><EFBFBD>س<EFBFBD><D8B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A3AC>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˯<EFBFBD><CBAF><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>°취<C2B0><ECB7A8><EFBFBD><EFBFBD>
* <20><><EFBFBD>ط<EFBFBD><D8B7><EFBFBD>:
* 1.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӻ<EFBFBD>
* 2.<2E><>ס<EFBFBD><D7A1>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><CBB2><EFBFBD>ɿ<EFBFBD><C9BF><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
*
* 1.ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD><C3B1>BO0T 0<>Ӹߵ<D3B8>ƽ(3.3v)
* 2.<2E><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>,<2C><><EFBFBD><EFBFBD>
* 1.ʹ<><CAB9>FlyMcu<63><75><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>оƬ,Ȼ<><C8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>STMISP -><3E><><EFBFBD><EFBFBD>оƬ(z)
*
*/
#define configUSE_TICKLESS_IDLE 0
/* ȡ<><C8A1>ԭ<EFBFBD>е<EFBFBD><D0B5>жϺ<D0B6><CFBA><EFBFBD> */
#define xPortPendSVHandler PendSV_Handler
#define vPortSVCHandler SVC_Handler
#define INCLUDE_xTaskGetSchedulerState 1
/* 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
/* <20><><EFBFBD>ӵIJ<D3B5><C4B2><EFBFBD> */
#define INCLUDE_eTaskGetState 1
#define INCLUDE_xTimerPendFunctionCall 0
#define INCLUDE_xTaskGetSchedulerState 1
/* FreeRTOS<4F><53><EFBFBD>ж<EFBFBD><D0B6>йص<D0B9><D8B5><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1> */
#ifdef __NVIC_PRIO_BITS
#define configPRIO_BITS __NVIC_PRIO_BITS
#else
#define configPRIO_BITS 4
#endif
/* <20>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>5-15<31><35>FreeRTOS<4F><53><EFBFBD>Թ<EFBFBD><D4B9><EFBFBD><EFBFBD>ģ<EFBFBD>0-4<><34>FreeRTOS<4F><53><EFBFBD><EFBFBD><EFBFBD>Թ<EFBFBD><D4B9><EFBFBD><EFBFBD>ġ<EFBFBD> */
/* <20>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD> */
#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 15
/* ϵͳ<CFB5>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD> */
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5
/* 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 */