FreeRTOSConfig.h部分参数详解
#define configKERNEL_INTERRUPT_PRIORITY 255 //PendSV和SysTick优先级受这个值控制
/* !!!! 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(0x0b=11,只有高4位用来做中断优先级设置位,具体看“http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html”). */
#define configLIBRARY_KERNEL_INTERRUPT_PRIORITY 15
(前提:STM32中断优先级设置位都设置为抢占优先级,没有响应优先级)上述三个值,FreeRTOS API只能在优先级为191~255(如果只有高4位是中断优先级设置位,优先级为11~15)的中断服务函数调用,不能在优先级为0~190(如果只有高4位是中断优先级设置位,优先级为0~10)的中断服务函数调用,因为FreeRTOS只能屏蔽优先级为191~255的中断服务函数。
configUSE_TIME_SLICING
默认情况下(宏configUSE_TIME_SLICING未定义或者宏configUSE_TIME_SLICING设置为1),FreeRTOS使用基于时间片的优先级抢占式调度器。这意味着RTOS调度器总是运行处于最高优先级的就绪任务,在每个RTOS 系统节拍中断时在相同优先级的多个任务间进行任务切换。如果宏configUSE_TIME_SLICING设置为0,RTOS调度器仍然总是运行处于最高优先级的就绪任务,但是当RTOS 系统节拍中断发生时,相同优先级的多个任务之间不再进行任务切换。
configTICK_RATE_HZ
1、毫秒级延时pdMS_TO_TICKS() 可以对tick周期计数从而实现延时具体时间,如果configTICK_RATE_HZ大于1000,pdMS_TO_TICKS()就不能使用
2、时间片的频率就是configTICK_RATE_HZ
3、configTICK_RATE_HZ建议设置为100
4、FreeRTOS自带的定时器的计数频率也是基于configTICK_RATE_HZ,这个频率越高则定时的精度越高,但是由此带来的开销也越大。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)