You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

124 lines
11 KiB

3 years ago
  1. #ifndef FREERTOS_CONFIG_H
  2. #define FREERTOS_CONFIG_H
  3. /* 头文件 */
  4. #include "./SYSTEM/sys/sys.h"
  5. #include "./SYSTEM/usart/usart.h"
  6. #include <stdint.h>
  7. extern uint32_t SystemCoreClock;
  8. /* 基础配置选项 */
  9. #define configUSE_PREEMPTION 1 /* 1: 抢占式调度器, 0: 合作式调度器, 无默认需定义 */
  10. #define configUSE_PORT_OPTIMISED_TASK_SELECTION 1 /* 1: 使用硬件计算下一个要运行的任务, 0: 使用软件算法计算下一个要运行的任务, 默认: 0 */
  11. #define configUSE_TICKLESS_IDLE 0 /* 1: 使能tickless低功耗模式, 默认: 0 */
  12. #define configCPU_CLOCK_HZ SystemCoreClock /* 定义CPU主频, 单位: Hz, 无默认需定义 */
  13. // #define configSYSTICK_CLOCK_HZ (configCPU_CLOCK_HZ / 8)/* 定义SysTick时钟频率,当SysTick时钟频率与内核时钟频率不同时才可以定义, 单位: Hz, 默认: 不定义 */
  14. #define configTICK_RATE_HZ 1000 /* 定义系统时钟节拍频率, 单位: Hz, 无默认需定义 */
  15. #define configMAX_PRIORITIES 32 /* 定义最大优先级数, 最大优先级=configMAX_PRIORITIES-1, 无默认需定义 */
  16. #define configMINIMAL_STACK_SIZE 128 /* 定义空闲任务的栈空间大小, 单位: Byte, 无默认需定义 */
  17. #define configMAX_TASK_NAME_LEN 16 /* 定义任务名最大字符数, 默认: 16 */
  18. #define configUSE_16_BIT_TICKS 0 /* 1: 定义系统时钟节拍计数器的数据类型为16位无符号数, 无默认需定义 */
  19. #define configIDLE_SHOULD_YIELD 1 /* 1: 使能在抢占式调度下,同优先级的任务能抢占空闲任务, 默认: 1 */
  20. #define configUSE_TASK_NOTIFICATIONS 1 /* 1: 使能任务间直接的消息传递,包括信号量、事件标志组和消息邮箱, 默认: 1 */
  21. #define configTASK_NOTIFICATION_ARRAY_ENTRIES 1 /* 定义任务通知数组的大小, 默认: 1 */
  22. #define configUSE_MUTEXES 1 /* 1: 使能互斥信号量, 默认: 0 */
  23. #define configUSE_RECURSIVE_MUTEXES 1 /* 1: 使能递归互斥信号量, 默认: 0 LWIP*/
  24. #define configUSE_COUNTING_SEMAPHORES 1 /* 1: 使能计数信号量, 默认: 0 */
  25. #define configUSE_ALTERNATIVE_API 0 /* 已弃用!!! */
  26. #define configQUEUE_REGISTRY_SIZE 8 /* 定义可以注册的信号量和消息队列的个数, 默认: 0 */
  27. #define configUSE_QUEUE_SETS 1 /* 1: 使能消息队列, 默认: 0 */
  28. #define configUSE_TIME_SLICING 1 /* 1: 使能时间片调度, 默认: 1 */
  29. #define configUSE_NEWLIB_REENTRANT 0 /* 1: 任务创建时分配Newlib的重入结构体, 默认: 0 */
  30. #define configENABLE_BACKWARD_COMPATIBILITY 1 /* 1: 使能兼容老版本, 默认: 1 LWIP*/
  31. #define configNUM_THREAD_LOCAL_STORAGE_POINTERS 0 /* 定义线程局部指针变量的个数, 默认: 0 */
  32. #define configSTACK_DEPTH_TYPE uint16_t /* 定义任务堆栈深度的数据类型, 默认: uint16_t */
  33. #define configMESSAGE_BUFFER_LENGTH_TYPE size_t /* 定义消息缓冲区中每条消息的长度, 默认: size_t */
  34. /* 内存分配相关定义 */
  35. #define configSUPPORT_STATIC_ALLOCATION 0 /* 1: 支持静态申请内存, 默认: 0 */
  36. #define configSUPPORT_DYNAMIC_ALLOCATION 1 /* 1: 支持动态申请内存, 默认: 1 */
  37. #define configTOTAL_HEAP_SIZE ((size_t)(35 * 1024)) /* FreeRTOS堆中可用的RAM总量, 单位: Byte, 无默认需定义 */
  38. #define configAPPLICATION_ALLOCATED_HEAP 0 /* 1: 用户手动分配FreeRTOS内存堆(ucHeap), 默认: 0 */
  39. #define configSTACK_ALLOCATION_FROM_SEPARATE_HEAP 0 /* 1: 用户自行实现任务创建时使用的内存申请与释放函数, 默认: 0 */
  40. /* 钩子函数相关定义 */
  41. #define configUSE_IDLE_HOOK 0 /* 1: 使能空闲任务钩子函数, 无默认需定义 */
  42. #define configUSE_TICK_HOOK 0 /* 1: 使能SysTick中断钩子函数, 无默认需定义 */
  43. #define configCHECK_FOR_STACK_OVERFLOW 0 /* 1: 使能栈溢出检测方法1, 2: 使能栈溢出检测方法2, 默认: 0 */
  44. #define configUSE_MALLOC_FAILED_HOOK 0 /* 1: 使能动态内存申请失败钩子函数, 默认: 0 */
  45. #define configUSE_DAEMON_TASK_STARTUP_HOOK 0 /* 1: 使能定时器服务任务首次执行前的钩子函数, 默认: 0 */
  46. /* 运行时间和任务状态统计相关定义 */
  47. #define configGENERATE_RUN_TIME_STATS 0 /* 1: 使能任务运行状态参数统计, 默认: 0 */
  48. #if configGENERATE_RUN_TIME_STATS
  49. #include "./BSP/TIMER/btim.h"
  50. #define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() ConfigureTimeForRunTimeStats()
  51. extern uint32_t FreeRTOSRunTimeTicks;
  52. #define portGET_RUN_TIME_COUNTER_VALUE() FreeRTOSRunTimeTicks
  53. #endif
  54. #define configUSE_TRACE_FACILITY 1 /* 1: 使能可视化跟踪调试, 默认: 0 */
  55. #define configUSE_STATS_FORMATTING_FUNCTIONS 1 /* 1: configUSE_TRACE_FACILITY为1时,会编译vTaskList()和vTaskGetRunTimeStats()函数, 默认: 0 */
  56. /* 协程相关定义 */
  57. #define configUSE_CO_ROUTINES 0 /* 1: 使能合作式调度相关函数, 默认: 0 */
  58. #define configMAX_CO_ROUTINE_PRIORITIES 2 /* 定义用户可使用的最大合作式任务优先级, 最大优先级=configMAX_CO_ROUTINE_PRIORITIES-1, 无默认configUSE_CO_ROUTINES为1时需定义 */
  59. /* 软件定时器相关定义 */
  60. #define configUSE_TIMERS 1 /* 1: 使能软件定时器, 默认: 0 */
  61. #define configTIMER_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) /* 定义软件定时器任务的优先级, 无默认configUSE_TIMERS为1时需定义 */
  62. #define configTIMER_QUEUE_LENGTH 5 /* 定义软件定时器命令队列的长度, 无默认configUSE_TIMERS为1时需定义 */
  63. #define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE * 2) /* 定义软件定时器任务的栈空间大小, 无默认configUSE_TIMERS为1时需定义 */
  64. /* 可选函数, 1: 使能 */
  65. #define INCLUDE_vTaskPrioritySet 1 /* 设置任务优先级 */
  66. #define INCLUDE_uxTaskPriorityGet 1 /* 获取任务优先级 */
  67. #define INCLUDE_vTaskDelete 1 /* 删除任务 */
  68. #define INCLUDE_vTaskSuspend 1 /* 挂起任务 */
  69. #define INCLUDE_xResumeFromISR 1 /* 恢复在中断中挂起的任务 */
  70. #define INCLUDE_vTaskDelayUntil 1 /* 任务绝对延时 */
  71. #define INCLUDE_vTaskDelay 1 /* 任务延时 */
  72. #define INCLUDE_xTaskGetSchedulerState 1 /* 获取任务调度器状态 */
  73. #define INCLUDE_xTaskGetCurrentTaskHandle 1 /* 获取当前任务的任务句柄 */
  74. #define INCLUDE_uxTaskGetStackHighWaterMark 1 /* 获取任务堆栈历史剩余最小值 */
  75. #define INCLUDE_xTaskGetIdleTaskHandle 1 /* 获取空闲任务的任务句柄 */
  76. #define INCLUDE_eTaskGetState 1 /* 获取任务状态 */
  77. #define INCLUDE_xEventGroupSetBitFromISR 1 /* 在中断中设置事件标志位 */
  78. #define INCLUDE_xTimerPendFunctionCall 1 /* 将函数的执行挂到定时器服务任务 */
  79. #define INCLUDE_xTaskAbortDelay 1 /* 中断任务延时 */
  80. #define INCLUDE_xTaskGetHandle 1 /* 通过任务名获取任务句柄 */
  81. #define INCLUDE_xTaskResumeFromISR 1 /* 恢复在中断中挂起的任务 */
  82. /* 中断嵌套行为配置 */
  83. #ifdef __NVIC_PRIO_BITS
  84. #define configPRIO_BITS __NVIC_PRIO_BITS
  85. #else
  86. #define configPRIO_BITS 4
  87. #endif
  88. #define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 15 /* 中断最低优先级 */
  89. #define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5 /* FreeRTOS可管理的最高中断优先级 */
  90. #define configKERNEL_INTERRUPT_PRIORITY ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
  91. #define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
  92. #define configMAX_API_CALL_INTERRUPT_PRIORITY configMAX_SYSCALL_INTERRUPT_PRIORITY
  93. /* FreeRTOS中断服务函数相关定义 */
  94. #define xPortPendSVHandler PendSV_Handler
  95. #define vPortSVCHandler SVC_Handler
  96. /* 断言 */
  97. #define vAssertCalled(char, int) printf("Error: %s, %d\r\n", char, int)
  98. #define configASSERT( x ) if( ( x ) == 0 ) vAssertCalled( __FILE__, __LINE__ )
  99. /* FreeRTOS MPU 特殊定义 */
  100. //#define configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS 0
  101. //#define configTOTAL_MPU_REGIONS 8
  102. //#define configTEX_S_C_B_FLASH 0x07UL
  103. //#define configTEX_S_C_B_SRAM 0x07UL
  104. //#define configENFORCE_SYSTEM_CALLS_FROM_KERNEL_ONLY 1
  105. //#define configALLOW_UNPRIVILEGED_CRITICAL_SECTIONS 1
  106. /* ARMv8-M 安全侧端口相关定义。 */
  107. //#define secureconfigMAX_SECURE_CONTEXTS 5
  108. #endif /* FREERTOS_CONFIG_H */